Çerez tabanlı oturumları kullanan bir PHP web uygulaması geliştirdim ve üçüncü parti çerezleri devre dışı bırakılmış tarayıcılarda çalışmaz hale gelene kadar iyi çalışıyordum. (çünkü betik başka bir web sitesinde/etki alanında iframe yüklenecek).PHP - session.use_trans_sid kullanırken oturum kimliği değişiyor
Bu yüzden, URL tabanlı oturumlara geçmeye karar verdim (bu, komut dosyasının bir iframe içerdiği için güvenli olacağını varsayıyorum, kullanıcının paylaşacağı veya yer işareti vb. Için görünür bir URL olmayacaktır).
Ancak, bir nedenle, etki alanına dayalı oturumlara geçtiğim için, web uygulamasındaki her sayfa farklı bir oturum kimliği kullanıyor. ilk şey olduğunu
İşte benim kod
...ini_set("session.use_cookies", 0);
ini_set("session.use_only_cookies", 0);
ini_set("session.use_trans_sid", 1);
ini_set("session.cache_limiter", "");
session_start();
echo "<p>Session ID: " . session_id() . "</p>"; // Test output
... (Bildiğim kadarıyla daha önce çıkışı ile) her sayfada çağrılacak.
benim web uygulaması ilk sayfa bir form içerir ve ben gerekli gizli oturum kimliği girişi otomatik olarak PHP tarafından kendisine eklenir görüyoruz:
<input type="hidden" name="PHPSESSID" value="m4jbeec47uplnf95ue2h244a02" />
Fakat sonraki sayfada tarafından bildirilen oturum kimliği (form gönderen bir)
Oturum kimliği geçerli: iiovfkrf3hesj1um5orasv7it6
Ayrıca
, ben https kullanarak ilk sayfayı yüklediğinizde: // ((http: //) yerine, formun gönderilmesi, yeniden yüklenmekte olan aynı sayfaya (yüklenmekte olan bir sonraki sayfadan ziyade) sonuçlanır.
Daha önce de denedim Ne:
ini_set("session.cookie_secure", 0);
ve
ini_set("session.cookie_secure", 1);
ve
ini_set('session.gc_maxlifetime', 30 * 60); // expires in 30 minutes
ve (script sonunda)
session_write_close();
ve phpinfo()
itibaren
ini_set("session.cache_limiter", "");
çıkarma:
session.auto_start Off Off
session.cache_expire 180 180
session.cache_limiter nocache nocache
session.cookie_domain no value no value
session.cookie_httponly Off Off
session.cookie_lifetime 0 0
session.cookie_path//
session.cookie_secure Off Off
session.entropy_file no value no value
session.entropy_length 0 0
session.gc_divisor 1000 1000
session.gc_maxlifetime 1440 1440
session.gc_probability 1 1
session.hash_bits_per_character 5 5
session.hash_function 0 0
session.name PHPSESSID PHPSESSID
session.referer_check no value no value
session.save_handler files files
session.save_path /tmp /tmp
session.serialize_handler php php
session.upload_progress.cleanup On On
session.upload_progress.enabled On On
session.upload_progress.freq 1% 1%
session.upload_progress.min_freq 1 1
session.upload_progress.name PHP_SESSION_UPLOAD_PROGRESS PHP_SESSION_UPLOAD_PROGRESS
session.upload_progress.prefix upload_progress_ upload_progress_
session.use_cookies On On
session.use_only_cookies On On
session.use_strict_mode Off Off
session.use_trans_sid 0 0
bir fikir?
Formu gönderirken 'iiovfkrf3hesj1um5orasv7it6', '? – Kzy
INI dosyasına erişiminiz var mı, yoksa paylaşılan bir bilgisayarda mı (ör. CPanel ortamında)? Ini_set() 'e aynı 4 çağrıyı denedim ve phpinfo()' dan yük değerlerimi yansıttığım (örneğin 'session.use_trans_sid = 1') - * ini_set() * * disable_functions * ile devre dışı bırakılabileceğini merak ediyorum. –
@ ban-jeomühendislik - Üzgünüm durum bana çok açık değil, ama ini kodlarını başlık kısmında yazdığını varsayalım. Bahsettiğiniz iki dosya, ortak üstbilgiyi paylaşıyor olabilir. Böylece, 1. sayfadan 2. sayfaya yönlendirildiğinde, oturum değerini değiştirir. Yanılıyor olabilirim ama bu sorunun üstlenilmesi. –