PHP Session Değişkenleri Korunan değil

9 Cevap php

Ben olmayan oturum değişkenleri gibi hareket onlar ayarlanır biri IOW başka bir sayfada oturum değişkenleri kullanmak mümkün duyuyorum. Ben yarım düzine diğer benzer forumlarda yayınlanan benzer bir soru bulduk, ancak bu diğer durumlarda cevap her zaman geçerli değildir çıkıyor.

İşte benim dosyalar şunlardır:

sess1.php

<?php
session_start();

session_register("userid");
session_register("textvar");

$_SESSION['userid'] = 10333 ;
$_SESSION['textvar'] = TextVariable ;

echo "<p>User ID is: " . $_SESSION['userid'] . "</p>" ;
echo "<p>Another variable is: " . $_SESSION['textvar'] . "</p>" ;
?>
<p>Go to the <a href="sess2.php">next page</a>.</p>

and, sess2.php

<?php
session_start();

echo "<p>Userid oturum değişken: " . $_SESSION['userid'] . "</p>";
echo "<p>Diğer oturum değişken: " . $_SESSION['newvar']. "</p> ";
?>

Her durumda tarayıcı çıktı:

sess1.php

Kullanıcı kimliği: 10333

Başka bir değişkendir: textVariable

[Sonraki sayfa] gidin.

and, sess2.php

Userid oturum değişken:

Diğer oturum değişken:

[Son sayfa] gidin.

DEĞİLDİR bir kaç şey:

  • Ben her iki dosya üstündeki () session_start var mı.
  • Değişkenler dizin yazılabilir olduğunu ve oturum değişkenleri orada gösteriyor. (: '| I kimliği: 10333; textvar | s: 12: "textVariable";' Ben bu içinde var sess_b62 denilen yüz küçük dosyalar hakkında var.)
  • phpinfo () php.ini dosyası doğru okunan ve tarayıcı kapatılıncaya kadar, ömür boyu varsayılan, 0, yani ayarlanmış olduğunu söylüyor.

Benim zekâ sonunda değilim. Herhangi bir öneriniz?

Çok teşekkürler.

9 Cevap

Oturum ID'si aynı oturum birkaç sayfa üzerinde kullanılabilecek bu sırayla bir şekilde boyunca gerçekleştirilebilir zorundadır. Genel olarak bu bir tanımlama ile yapılır (session.use_cookies bakın ) but it can also be done in the URL or in forms (see session.use_trans_sid ).

Yani ilk PHP doğru oturum ve oturum verilerini yükleyebilirsiniz böylece oturum kimliği iletilir olduğundan emin olmak gerekir.

Ayrıca bakınız Is my understanding of PHP sessions correct?

session_register() gerekli değildir ve burada bir soruna neden olabilir. Varolan değişkenleri kullanarak oturum değişkenleri atamak için tasarlanmıştır - on session_register() dokümanlar okuyun.

ve gelen here:

Peki, session_register () belirli bir global değişken bir oturum değişkeni dikkate alınması gerektiğini PHP söyler. O (oturum verileri ortaya genellikle yazarken olduğu) betiğin yürütme sonunda, küresel değişkenin sonuç değeri cari etkin oturum işleyicileri kullanarak yazılır anlamına gelir.

Ben bu karşılaştığınız sorun olduğunu düşünüyorum. Komut yürütme sonunda oturum değişken yazılı fazla alır.

Gördüğüm Bir hata ilk dosyada size $_SESSION['textvar'] ayarı ve ikinci dosyada aradığınız olmasıdır $_SESSION['newvar'].

Ayrıca, ben çalıştığını biliyorum ve yukarıdaki hata dışında iyi çalıştı bir sunucuda kodunuzu test.

Ben de session_register() kaldırarak denedim ve kod hala mükemmel çalışıyor.

* "Session_register () bir dize holding the name of a variable değişken isimlerini veya diğer dizileri içeren bir dizi olabilir herhangi biri bağımsız değişken bir dizi kabul eder. Her isim için, session_register () genel değişkeni ile kaydeder Geçerli oturumda bu adı. "*

Eğer bu isimleri ile hiçbir değişkenler var çünkü, sonuç önceden kestirilemez olacaktır.

sadece kullanmak $_SESSION[$key] = $value;

Yukarıdaki tüm sorunu çözmezse, ben sadece bariz isteyeceğiz: açılış php etiketinden önce herhangi bir boşluk ya da yeni hat var olmaz mı?

(Ben de raporlama hata düzeyine bağlıdır sanırım rağmen) Ayrıca, sunucu hata günlüğü dosyası mesajlar için kontrol edebilirsiniz, bu sizin değişkenler tanımlanır olmadığını söylemeliyim.

Aracı bir tür kullanın ve çerez gönderildiğinde nasıl görebilirsiniz http başlıklarını kontrol. Belki de web sunucusu miss-yapılandırılmış ve geçersiz farklı bir alana sahip Kurabiyeleri gönderiyor.

Her istek üzerine session_set_cookie_params () yapıyor ve doğru etki alanı, yol, ve bu ayarlanır emin bakmak isteyebilirsiniz.

Kontrol etmek için başka bir şey açık:

Disk alanı dolu olduğundan emin olun; kaydedilmesini oturum verilerini engelleyecektir.

Bu eski bir yazı olduğunu fakat ben () (session_register kullanarak değil) benzer bir sorun vardı biliyorum.

Oturumu nedeniyle (Apache ile 'özel' bir windows server barındırma ortamı ()) kurmak sunucuya, çok sık dışarı zamanlama ve çünkü çerezleri oturumları dönüştürmek zorunda, PHP oturum zaman aşımı değeri değiştirilemez olamazdı.

Sonuç / şimdi uzun ömrü ile Cookies dönüştürdükten sonra, çerez veriler hala (iletimi) kaybolmuş olmasıdır oldu? bazen.

Çok sinir bozucu.

HİÇ belki sormak için soru LAMP sunucusu kullanıyor olsa da olmasa da bir lamba ortamında bu ne vardı değil.

Umarım bu yardımcı olur. Bu bir PHP sorun olduğunu sanmıyorum.

both dosyaları session_register kullanın ve çalışması gerekir.