作者ymszk1290 (Apple Lin)
看板PHP
标题[请益]PHP设定session变数时发生的问题
时间Thu Dec 15 20:43:06 2011
我在写新增功能的时候,为了避免重新整理会重复写到资料库的问题,所以在资料写到资
料库的时候会用header()将网页导到另一个网页。
但是我也要让使用者知道,他有没有成功把资料写到资料库,所以必须要有提示讯息。
因为是用header,所以不能用javascript的alert跳出,所以我想到用session。
程式流程大概是这样:
write_data.php:
mysql_query($sqlstr, $link);
$_SESSION['msg'] = "Successful!!";
header("Location: message.php");
message.php:
if(isset($_SESSION['msg']) && !empty($_SESSION['msg'])){
echo $_SESSION['msg'];
$_SESSION['msg'] = "";
}
为了避免$_SESSION['msg']输出错误的讯息,在将讯息输出後就设定为空字串。
可是这时候发生了奇怪的事情,$_SESSION['msg']没有被输出(当然有session_start())。
如果将 $_SESSION['msg'] = ""; 这一行注解,就可以正常显示。
但是就达不到我要将$_SESSION['msg']清空的目的了。
感觉好像在这一行设定为空字串,导致echo了空字串。不过之前已经先执行了echo,应该
不会这样才对。
想请问一下大大,可能是在什麽环节出错了。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.118.155.55
※ 编辑: ymszk1290 来自: 140.118.155.55 (12/15 20:48)
※ 编辑: ymszk1290 来自: 140.118.155.55 (12/15 20:48)
1F:推 kerash:要不要改用 unset 看看 ... ? 12/15 22:18
2F:→ ymszk1290:我一开始就是用unset,不过也是同样的状况 12/15 22:24
3F:推 appleboy46:官网是建议用 unset 去清空变数 12/15 23:02
4F:→ buganini:可否贴更完整的code? 12/15 23:11
5F:推 kerash:你把 session 放在 if 之外做消除处理吧.. 12/16 09:20
6F:→ mervynW:这种 msg 放到 cookie 比较好处理 12/16 10:15
感谢各位大大的建议,改变了方法之後问题顺利解决了
※ 编辑: ymszk1290 来自: 140.118.155.55 (12/16 12:51)