İki session_starts () PHP uygulaması asmak

5 Cevap php

Bağlam: Ben mod_rewrite (ön sayfa yükleme alt sayfalar) kullanarak uygulamayı yapacağız, ama ön kontrolör sayfasından yükleme session_enabled sayfalarda saplanıp.

Sorun: Sorun session_start () çağrısı twise kullanmak olduğunu, PHP sayfası yanıt vermiyor. Garip olan, session_start fonksiyonu zararsız olduğunu ve farklı sayfalarda denir.

Ben bu örneğe sorunu daralmış ettik:

child.php dosyası:

session_start ();

"Çocuğum sayfa" echo;

>

parent.php dosyası:

session_start ();

$url = "http://localhost/app/child.php?";
//loading and printing child page
echo implode('',file($url. session_name() . "=". session_id()));

>

Sonsuz tarayıcı yükü yapacak parent.php için arayın. En kısa sürede size session_start birini () çağırır Yorumlamak gibi - bu anında yükler.

What is the source of the problem? I badly need session-enabled pages.

PS Ben sayfaları dahil ederek çözüm bulabilirsiniz, ancak URL params güveniyor, ben parametre vekiller çeşit uğruna onları sabitleme önlemek istiyorum.

5 Cevap

Eğer artık oturuma yazmak gerekiyor bir kere session_write_close() aramak gerekir. Hem komut onların bütün süresi boyunca açık oturum gibi Şu anda, sadece bir defada bir çalışan olması mümkün olacak.

the manua l:

Session data is usually stored after your script terminated without the need to call session_write_close(), but as session data is locked to prevent concurrent writes only one script may operate on a session at any time. When using framesets together with sessions you will experience the frames loading one by one due to this locking. You can reduce the time needed to load all the frames by ending the session as soon as all changes to session variables are done.

Çocuğunuz sayfa yüklemeden önce session_write_close() kullanmayı deneyin.

Bir oturumu zaten başlamış ise de kontrol ve sadece yeni bir değilse başlayabilirsiniz:

    if (!isset($_SESSION)) session_start();

Lütfen komut iki session_starts () olması zaten kötü bir şeydir.

Why don't you just start the session on your parent.php file (and not child.php)? Or just child.php and not parent.php

Her şeyi başlatan, diğer tüm sayfalar tarafından dahil bir sayfayı (SQL bağlamak, oturum başlatma, vb) sahip olmak iyi bir fikirdir. Ve sonra tüm diğerleri üzerinde bu sayfayı içermektedir.