2016-04-06 36 views
-1

üzerine tarayıcıda kaydedilmediğini belirten Sadece bir kişinin sayfayı erişen ilk kez ortaya görünmektedir garip oturumu sorun varPHP Session ilk erişime

[koduyla GÜNCELLENDİ].

Aşağıdaki sayfaya giderseniz ve Sonraki Adım'ı tıklarsanız, sayfa bulunamadı sayfasında bir sayfaya gönderilebilirsiniz. Daha sonra bağlantıya geri dönüp tekrar İleri Adım'a basarsanız bu sefer çalışır.

https://pulse.gd/Xchbeb

garip şey temizledikten çerezleri ve diğer tüm tarayıcı geçmişini ilgili eğer sorun yeniden ortaya görünmüyor olmasıdır. Farklı bir tarayıcıdan denerseniz, bunu yapmaz.

Chrome'daki Kaynaklar sekmesine bir göz attım ve oturumun başlangıçta kaydedilmediğini ancak ikinci denemede olduğunu görebiliyorum.

Bu, kodun ilgili bölümleridir. çağrıldığını fonksiyonun üstünde ardından

// set the http headers 
header("Content-Type: text/html;charset=utf-8"); 
header("X-XSS-Protection: 1; mode=block"); 
header("Strict-Transport-Security: max-age=31536000; includeSubDomains"); 
header("X-Content-Type-Options: nosniff"); 
header("X-Permitted-Cross-Domain-Policies: master-only"); 

session_set_cookie_params ($lifetime = 0, $path = "/", $domain= "pulse.gd", $secure = TRUE, $httponly = true); 

// set-up the session handler 
session_set_save_handler("sess_open", "sess_close", "sess_read", "sess_write", "sess_destroy", "sess_gc"); 
register_shutdown_function("sess_shutdown"); 

: programın başında Yani dizi inşa etti olduğunda sonra

session_start(); 

sonraki adıma

geçirilecek
// store the step array in the session object 
$_SESSION['stepArray'] = serialize($stepArray); 

Bu noktada bir sonraki sayfayı görüntüler. Bu Smarty tarafından ele alınmıştır.

Herhangi bir öneriniz var mı?

Teşekkür

+0

Google Chrome'un lat yıl benzer bir sorunu biraz zaman vardı, ama düzelttim nasıl hatırlamıyorum, kendi Sesson ayar kodunu gönderebilir Lütfen ve Bir bağlantı yerine sorudaki bağlantıyı bağla, Şerefe. – Martin

+0

Merhaba @Martin Sorunun ilgili olduğunu düşündüğüm kod bitleriyle güncelledim, tüm 5000 satırları göndermek istemedim! Ne olsa "çapa bağlantısı" hakkında ne demek istediğinden emin değildi. – williamsdb

cevap

0

kodunuzun yeniden yazma:

Ben yarım bu başlıklara gerek yok eminim ve bu oturumun ayarlarının çoğu geçersiz sözdizimi vardır.

// set the http headers 
header("Content-Type: text/html;charset=utf-8"); 
//header("X-XSS-Protection: 1; mode=block"); 
//header("Strict-Transport-Security: max-age=31536000; includeSubDomains"); 
header("X-Content-Type-Options: nosniff"); 
//header("X-Permitted-Cross-Domain-Policies: master-only"); 

session_set_cookie_params(0, "/", "pulse.gd", TRUE, true); 

/*** What is the intended purpose of these below functions? **/ 
// I'm pretty sure you don't need to set these. 
// UNLESS they've been set in place by Smarty, in which case leave them. 
// set-up the session handler 
// session_set_save_handler("sess_open", "sess_close", "sess_read", "sess_write", "sess_destroy", "sess_gc"); 
// register_shutdown_function("sess_shutdown"); 

hata iyi gerçekten, cidden senden şüphe ihtiyacınız sess_open fonksiyonu olabilir.

  • Ayrıca, sayfanız 5k kod satırında yanlış yaptığınızı varsayalım.
  • session_start ürününü tarayıcınıza gönderilen sayfanın en üstünde olması gereken bir işlevin üzerine koymayın.
  • Ayrıca araştırma ve uygulama PHP Error Logging.
  • RE: session_set_save_handler plase bu anwser kontrol edin: https://stackoverflow.com/a/13963907/3536236
+0

Bir kaç puan. 5k kod satırının tek bir dosyada olduğunu söylemedim ... PHP hata kaydı yaptım ve bu yardımcı olmadı. İlk önce session_start denir. Yorum yaptığınız satırlar, oturumu sunucuda değil, veritabanında depolamayı uyguladıkları için kesinlikle gereklidir. Veritabanında oluşturulan oturumu görebiliyorum ama muhtemelen en başta belirtmiş olmam gereken yeni bir PHPID oluşuyor gibi görünüyor. Düşünen başlıklara bakacağım, teşekkürler! – williamsdb

İlgili konular