Register_globals kapalı olarak ayarlı olup olmadığını nasıl oturumları de kullanır?

5 Cevap php

Because of security reasons, register_globals is set to off. And that sucks, because right now I could really have use of sessions.

Siz nasıl bu "sorun" çözmek mi?

UPDATE

Ben $ _SESSION kullanarak denedi, ama işe yaramıyor. Ben register_globals kapalı olmak ile ilgisi olduğunu sanıyordum yüzden.

Benim başlık dosyasında, ben aşağıdaki kodu var:

session_start();
if (!isset($_SESSION['test'])) {
  $_SESSION['test'] = "Foo bar";

Şimdi, her yerde benim başlık dosyasında, ben çıkış $_SESSION['test'] içeriğini olabilir.

Ama örneğin aynı içerik çıkış yapabiliyor değilim Dosyayı page.php dosyasında.

İşte Wordpress kullanarak bir örnek: example.php

//Include the header file
<?php get_header(); ?>

  Here is some text, and this is my session: <?php echo $_SESSION['test']; ?>

<?php get_footer(); ?>

Bu boş bir Oturumu neden olacaktır.

5 Cevap

Tüm oturum değişkenleri yerine küresel kayıtlı olan $_SESSION dizi . Use $_SESSION['var'] olacaktır $var.

If you are using iframes like in faceook apps, your sessions may not work in IE and safari. To make it workable in both these browsers use the header code below, just above the session_start();

  • header('P3P: CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"'); // Require to maintian session in IE
  • header('P3P:CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"'); // Require to maintain session in safari

Bu yardımcı olacağını umuyoruz.

Oturumları çalışmıyorsa, kontrol etmek için bir kaç şey vardır:

  • Oturumu başladı ediliyor emin olun; Gerekirse session_start() çağırmak - açılabilinir (session.auto_start) PHP.ini bir seçenek var.
  • Çek izinleri - yazılabilir geçerli bir konuma o session.save_path noktaları kontrol edin. Windows altında, varsayılan ayar bu platform için geçersiz bir yoludur.
  • , Işaretçileri için PHP hata günlüğünü denetleyin durumda bir şey yanlış gidiyor.
  • Tarayıcınızı kontrol oturum çerezleri engelleme değildir.

Sen Anılan session.save_path bir göz alabilir oturum dosyaları yaratılıyor olup olmadığını incelemek.

Ben varsayılan dosya tabanlı oturum işleyicisi kullanılmasını kabul ettik. Başka bir şey (ek yapılandırma gerektirecek) kullanıyorsanız, o zaman daha fazla sorun giderme adımları olabilir.

Bakınız, $ _SESSION kullanın http://php.net/manual/en/session.examples.basic.php

Değerlerini depolamak için süper-global $ _SESSION dizisini kullanın. Bu içeriği istekleri arasında saklanır, ve sorunsuz tefrika ve serisi - nesneleri veya dizileri saklamak konusunda endişelenmeyin. Basit bir örnek:

<?php

 if (isset($_SESSION['user'])) {
   // user already logged in
 } else {
   // Create a guest user
   $user = new stdClass();
   $user->name = 'guest';
   $user->id = 0;

   $_SESSION['user'] = $user;
 }

?>