新しいセッションIDは、session_start()呼び出しごとにセッションフォルダに作成されますが、次のページにはロードされません。"session_start()"は新しいセッションIDを生成します。
私はそれをチェックするために使用されるコード:
(何コードが存在しないと全く空白が前に存在しない「(のsession_start)」、これは最上部に直接ある)
<?php
session_start();
var_dump($_SESSION);
echo boolStr(is_writable(session_save_path())) . " and ";
echo boolStr(is_readable(session_save_path())) . "<br>";
if (!isset($_SESSION['counter'])){
$_SESSION['counter']=0;
}
echo "Refreshed: ". $_SESSION['counter'] ." times.<br>
$_SESSION['counter']++;
<a href=".$_SERVER['PHP_SELF'].'?'.session_name().'='.session_id().">refresh!</a>";
function boolStr($val)
{
return $val ? 'true' : 'false';
}
?>
カウンタ変数は "$ _SESSION ['counter'] ++;"リフレッシュされたページをロードした後に再び0になり、アドレスバーでセッションIDが変更されます。
出力:
D:\wamp64\www\sessions.php:4:
array (size=0)
empty
true and true
Refreshed 0 times.
refresh
のphp.ini:
session.save_handler = files
session.save_path ="D:/wamp64/tmp"
session.use_strict_mode = 0
session.use_cookies = 1
session.use_only_cookies = 1
session.name = PHPSESSID
session.auto_start = 0
session.cookie_lifetime = 0
session.cookie_path =/
session.cookie_domain =/
session.cookie_httponly = 1
session.cookie_secure = 0
session.serialize_handler = php
session.gc_probability = 1
session.gc_divisor = 1000
session.gc_maxlifetime = 1440
session.referer_check =
session.entropy_length = 32
session.entropy_file = /dev/urandom
session.cache_limiter = nocache
session.cache_expire = 180
session.use_trans_sid = 0
session.hash_function = sha256
session.hash_bits_per_character = 5
セッションは、先月の罰金働いていたが、私は、ブラウザを閉じたときに(私はほとんどないPCやシャットダウンを休止状態) 、問題が現れました。 Firefoxの代わりにChromeで試してみたのと同じ問題があったので、ブラウザとの接続は実際にはわかりません。
session_start()がセッションCookieをロードしようとしたときにどうなるのかを知るにはどうすればよいですか? session_start()の動作を見れば、何が起きているのか分かります。
ありがとうございました。
'error_reporting(E_ALL);を実行しているときに何を返しますか? – Kray
私はそれが間違っていたかどうか分かりませんので、session_start()の下に1回、その上に1回配置し、両方のエラーが発生しませんでした。 – Ibos
echoステートメントの上の$ _SESSION ['counter'] ++を変数に移動してみてください。次に例を示します。$ session_counter = $ _SESSION ['counter'] ++; –