php和mysql web开发原书第4版,有看过的来讨论个问题

书的第23章,最后一个logout.php这个脚本开始部分是这样的<?session_start();$old_user=$_SESSION['valid_user'];... 书的第23章,最后一个logout.php
这个脚本开始部分是这样的
<?
session_start();
$old_user = $_SESSION['valid_user'];
......
?>
如果用户没有登录,那么$_SESSION['valid_user']肯定就是未设置的,脚本会提示错误的
我先原以为这段脚本肯定是在用户已经登录的情况下使用
但是看了后面的代码我发现并不是这样

......
if(!empty($old_user))
{

}
esle
{

}
显然代码是想考虑到没有登录的情况的

但是这样代码肯定是有问题的,就是在最开始的地方会报$_SESSION['valid_user']未设置的错误
还请看的朋友说一说想法
展开
 我来答
851468308qq
2014-10-09 · 超过100用户采纳过TA的回答
知道小有建树答主
回答量:133
采纳率:0%
帮助的人:136万
展开全部
我的想法是:一般的登录退出管理中应该有这种设计,当检测到有用户登录时,其logout即注销的按钮才能使用,如果检测到当前没有用户登录的话,其页面上应该显示的为登录和注册这样的按钮,直到检测到用户登录,其logout按钮 才会显示;
根据上述的逻辑,当使用logout时,其session中的valid_user一定是存在的;这里的代码只是做必要的检测或者示范而已;
追问

我先也是这么认为的,但是如果你有书,你可以看看书中在

if(!empty($old_user))的else部分的注释

注释和代码已经很清楚的表明了脚本本身是有考虑未登陆的情况的

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
我爱上那女孩
2014-10-09 · TA获得超过466个赞
知道小有建树答主
回答量:177
采纳率:0%
帮助的人:132万
展开全部
我看了,确实会有此疑问,但是我对此的理解是,如果用户手动输入URL的方式,访问logout.php也就是所说的“没有登录,但是不知怎地就到了这个页面”的情况,那么最多是给一个警告,Notice而已,下面的代码还是会执行。因此这里有瑕疵,但不是大问题。

补充:session没有声明就使用,只会给警告,我亲测了
追问
恩,是的,看来确实代码是考虑的不够周全把
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友adbe004
2014-10-09 · TA获得超过172个赞
知道小有建树答主
回答量:123
采纳率:71%
帮助的人:79.4万
展开全部
这个退出肯定是登录过后才会有这个按钮,既然登录了肯定记录了session的,一般网站有个权限控制的,在登录后基本每个页面都是要验证session的
追问

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式