iT邦幫忙

0

[已解決]PHP 8 $_SESSION值無法帶入下一頁

  • 分享至 

  • xImage

dnf remove php 後重新安裝一次PHP,就可以了,看了一下php.ini設定發現預設值
session.use_cookies = 0
session.use_only_cookies = 0
session.use_trans_sid = 1
成功用try2.php?PHPSESSID=fi6e2hcqre565m658bo3ljjeus網址帶入SID到下一頁方式完成,但如果設定成想用COOKIE還是會失敗無法秀出 $SESSION['test']的值
session.use_cookies = 1
session.use_only_cookies = 1
session.use_trans_sid = 0
Warning: Undefined array key "test" in /var/www/html/try2.php on line 5
最後還發現如果只是重啟HTTPD,php.ini的值不會被套用,要重啟 php-fpm.service 才會被套用,這大概是我之前一直測試php.ini參數都失敗的原因。


各位大大好,最近用ROCKY 9.2 + PHP 8,帶SID與值到下一個頁面,SID會更新,會話不會繼續,導致前個頁面都值不會過來,不知道是哪邊有改動需要設定?網路上查的資料都測試過了,還沒解決,看了連結文章好像也沒解決,程式碼也用下面連結的方式測試,跟連結的結果一樣。
https://ithelp.ithome.com.tw/questions/10207423
TRY.PHP

<?php
	session_start();
	echo session_id()."<BR>";
	//echo session_save_path()."<BR>"

?>

<!doctype html>
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<title>session測試第一頁</title>
</head>

<body>

	<?php
		//echo session_save_path()."<BR>";
		$_SESSION['test']= 'abc123456';
		echo $_SESSION['test']."<BR>";
		//$sessid = session_id();
		//echo var_dump($_SESSION);
		echo '<a href="try2.php">下一個頁面</a><BR>';
		//$url= '<a href="try2.php?sessid=$sessid">下一個頁面</a><BR>';
		//echo $url;
	?>

</body>
</html>

結果
https://ithelp.ithome.com.tw/upload/images/20230919/20002331d6pI3hVWeB.jpg

TRY2.PHP

<?php
	//session_id($_GET['sessid']);
	//echo session_id()."<BR>";
	session_start();
	echo $_SESSION['test'];
	echo session_id();
	//echo var_dump($GLOBALS);
?>

<!doctype html>
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<title>session測試第二頁</title>
</head>
<body>
	<?php
		//echo $_SESSION['test'];
		//echo $test;
	?>
</body>
</html>

結果
https://ithelp.ithome.com.tw/upload/images/20230919/20002331PPVneQGVRc.jpg


試過session.use_cookies = 1 與 session.use_only_cookies = 0 還特別試這網頁的session.use_trans_sid=0與1 與兩種模式傳到下一頁還是不行 https://www.cnblogs.com/liuxiaowei/p/7163556.html

TRY.PHP

<?php
	session_start();
	echo session_id()."<BR>";
	//echo session_save_path()."<BR>"

?>

<!doctype html>
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<title>session測試第一頁</title>
</head>

<body>

	<?php
		//echo session_save_path()."<BR>";
		$_SESSION['test']= 'abc123456';
		echo $_SESSION['test']."<BR>";
		$sessid = session_id();
		//echo var_dump($_SESSION);
		$url= '<a href="try2.php?sessid=$sessid">下一個頁面</a><BR>';
		//$url="<a href='b.php?sessid=$sessid'>下一页</a>";<br>
		echo $url;
	?>

</body>
</html>

結果
https://ithelp.ithome.com.tw/upload/images/20230919/20002331ADIuTpT48N.jpg

TRY2.PHP

<?php
	session_id($_GET['sessid']);
	echo session_id()."<BR>";
	session_start();
	echo $_SESSION['test'];
	echo session_id();
	//echo var_dump($GLOBALS);
?>

<!doctype html>
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<title>session測試第二頁</title>
</head>
<body>
	<?php
		//echo $_SESSION['test'];
		//echo $test;
	?>
</body>
</html>

結果
https://ithelp.ithome.com.tw/upload/images/20230919/20002331HFKRBe4dTJ.jpg

PHP SESSION設定
https://ithelp.ithome.com.tw/upload/images/20230919/20002331qwL4kO9qCG.jpg

pickuse iT邦新手 4 級 ‧ 2023-09-19 01:39:04 檢舉
你不給程式碼是要我們通靈幫你找答案嗎?
fireflybug iT邦研究生 4 級 ‧ 2023-09-19 10:58:26 檢舉
程式碼跟連結一樣
https://ithelp.ithome.com.tw/questions/10207423
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

0

因為沒看到程式碼。只能大膽假設你碰到未取得或是被重置的問題。
文中有發現你說使用了SID傳送。
那就得先了解你如何去使用SID處理才行。

總之,先PO上你的程式碼再說吧。

fireflybug iT邦研究生 4 級 ‧ 2023-09-19 10:59:05 檢舉

程式碼跟連結一樣 用瞭最簡單環境測試
https://ithelp.ithome.com.tw/questions/10207423

首先,先拿掉 TRY2 的

session_id($_GET['sessid']);
	echo session_id()."<BR>";

session_id完全沒必要自已傳送。
拿掉後你再檢查 session_id 是否一樣。

如果你真的要傳送。
那請你檢查一下你拿到的$_GET['sessid']是什麼。
這邊看你的程式碼,我會認為你拿到「$sessid」這個字串。
這導致無法符合現有的session_id而造成重置ID。

fireflybug iT邦研究生 4 級 ‧ 2023-09-19 14:35:04 檢舉

大大很熱心,相關文章都有大大熱心的回文討論,非常感謝,剛剛已經得到一個方式可解決,完整測試已更新原文,COOKIE模式還是無法成功。
session.use_cookies = 0
session.use_only_cookies = 0
session.use_trans_sid = 1
成功用try2.php?PHPSESSID=fi6e2hcqre565m658bo3ljjeus網址帶入SID到下一頁方式完成

0
sky940811
iT邦研究生 5 級 ‧ 2023-09-19 09:08:05

先確認程式的開頭有沒有先執行 session_start()

fireflybug iT邦研究生 4 級 ‧ 2023-09-19 11:02:25 檢舉

程式碼跟連結一樣 舊程式碼<? 有補齊 <?php 都有session_start()
https://ithelp.ithome.com.tw/questions/10207423

我要發表回答

立即登入回答