PHPでランダム生成した文字列をセッションに格納すると、後にそのセッションから取得する値が変わっています。
###ソースコード
set.php
php
1<?php 2session_start(); 3 4$_SESSION["test"] = rand_str(10); 5echo $_SESSION["test"]; 6 7function rand_str($length) { 8 $str = array_merge(range('a', 'z'), range('0', '9'), range('A', 'Z')); 9 $r_str = ""; 10 for ($i = 0; $i < $length; $i++) { 11 $r_str .= $str[rand(0, count($str) - 1)]; 12 } 13 return $r_str; 14}
get.php
php
1<?php 2session_start(); 3echo $_SESSION["test"];
###詳細
set.phpを実行した後にget.phpを実行すると、set.phpで表示された値とは異なるものが表示されてしまいます。
![
ただ、set.phpを実行して間を開けずにget.phpを実行した時は、同じ値が表示されました。
また、rand_str(10) を "abc" や time() に置き換えたときは、問題なく同じ値が表示されました。
解決策はないでしょうか。
よろしくお願いします。
###補足情報
PHP 7.0.25
回答3件
あなたの回答
tips
プレビュー