globallerinin php yardım

5 Cevap php

Ben sadece veri göndermek için kullanılan bir dosya küresel kullanmaya çalışıyorum. Küresel o sayfada kayıtlı varlık değildir. Bunu nasıl sayfa globallerinin erişilebilir alabilirsiniz.

EDIT belki de bu yüzden bana açık o kadar izin çok net değildi. Ben bu dosyaları var

index.php

global $user;
echo $user->uid;

post.php

global $user;
echo $user->uid;

Şimdi index.php jquery aracılığıyla post.php için ilanıyla. Ancak ben post.php dan $ user-> uid yankı zaman yankılanan değildir ama bunu index.php echo zaman bunu gösteriyor. Nasıl post.php o $ user-> uid erişilebilir alabilirsiniz.

5 Cevap

Genel kapsam değişkenleri erişmek için başka bir yolu PHP tarafından tanımlanmış özel $ GLOBALS dizisini kullanmaktır.

php.net, Örnek

<?php
$a = 1;
$b = 2;

function Sum() {
    $GLOBALS['b'] = $GLOBALS['a'] + $GLOBALS['b'];
} 

Sum();
echo $b;
?>

Seni çok globalleri daha oturumları bakarak gerektiğini düşünüyorum. Kullanıcı başka bir sayfaya geçer zaman, tek bir sayfada bir değişken kayıt edilir gibi geliyor ne zaman, değişken kullanılabilir olmasını istiyorsanız.

Oturumlar bunu sağlayacak. Sadece bu kodu kullanabilirsiniz:

<?php
session_start();
$_SESSION['my_var'] = 'foo';

Ve sonraki sayfalarda ...

<?php
session_start();
echo $_SESSION['my_var'];

Hangi çıktısı foo.

http://www.php.net/manual/en/book.session.php

Siz kullanıcı formu gönderdiğinde ve post.php yönlendirmek zaman, içinde değişkenler index.php çoktan gitmiş olduğunu hatırlamak zorunda. PHP infazlar kısa ömürlü Normal masaüstü uygulamaları farklıdır.

Eğer $user nesnesi olarak tekrar edilmelidir almak için index.php ne yaparsanız yapın post.php. Eğer kod çoğaltmak istemiyorsanız, sadece her index.php ve post.php [(6 {kullanarak dosyayı içeren bazı dosyaya koydu init_user.php var ve )]}

Eğer bir işlev içinde küresel bir ihtiyacınız varsa böyle yapın

function phpFoobarFunction(){
  global $my_global;
}

scoping ile ilgili başvuru

superglobals benzeri için $_POST, $_GET (vs ..) de kullanılabilir anywhere.


Güncellenmiş soru gelen, PHP iki farklı çağrısı arasında değişken veremiyoruz. Eğer olurdu:

  • DB (veya kaynak) realoading tarafından $ kullanıcı sınıfını yeniden
  • $ _SESSION nesneyi stok
  • javascript ile kullanıcı nesnesini iletin (ancak kullanıcı düzenleyemezsiniz çünkü bu tehlikeli) ve ajax çağrı params'ı sahiptir ekleyin.

PHP oturumu ile oynamak nasıl hakkında daha fazla başvuru there

Ben mattbasta katılıyorum, globallerinin güvenlik nedenleriyle tarafından devre dışı bırakıldı. Sen yine de kullanabilirsiniz ama doğru yolu oturumu kullanmaktır.

Other thing is, you said: "now from index.php I am posting to post.php through jquery." Are you using some Ajax call? If not I don't understand why use JS to do this... If you are sending the data through Ajax and only want to send this param try this:

<input style="display:none" type="hidden" id="uid" name="uid" value="<?= $user->uid ?>" />

Ve sonra gibi ajax çağrısından idare:

$.ajax({
    type: "POST",
    url: "/post.php",
    data: "uid=" + uid + "&otherVar=" + otherVar, //and so on..
    success: function() {
    	//Here you can notify the user that the script ran successfully 
    	}
});//end of ajax

Bu size yardımcı umuyoruz.