PHP菜鸟关于本课程一点点思考心得,大牛轻喷!——关于登录验证时,一些小小的bug。
老师讲的很好,由浅及深,很容易理解。
但是仔细看了代码,发现了一点小小的问题,当然,视频我还没有全部看完,不知道后面的有没有讲解到该问题。如果有讲到,就忽略本帖。
首先我把下载到的源码部署在自己机器上,仔细看了看老师的代码,然后直接在浏览器中输入http://localhost/shopImooc/admin/listAdmin.php,在不登陆的情况之下,会直接出现管理员列表页面。然后点击添加或修改管理员,就会直接进入添加或者修改管理员页面。
在表单中输入相关信息提交之后,会显示请先登陆,并跳转到登陆界面,但是打开数据库后,发现数据库中的数据已经被修改或者添加数据。
再看代码,发现老师的的登陆验证工作大部分都是交给doAdminAction.php中checklogined()方法完成。所以我的做法(可能不正确,但是经过测试没有发现问题。)是将checklogined()方法改为:
if(empty($_SESSION['adminId'])&&empty($_COOKIE['adminId'])){ alertMes("请先登陆","login.php"); exit; }
在没有登陆的情况下,跳回到登陆页面,并终止脚本执行,防止跳转页面之后执行后面的代码,导致数据被篡改。
这样做了之后发现仍然有一些操作,比如listAdmin.php等读操作,是没有经过doAdminAction.php中checklogined()方法的登录验证的。这样,在不登陆的情况下仍然可以查看给页面信息。
所以也想请教一下老师,有没有更好的方法对请求进来的url进行集中过滤或管理?或者有第二期视频的话,在第二期课程中给予讲解。