Heim > Artikel > Backend-Entwicklung > php 如何隐藏url地址栏参数
我用PHP做的页面,如果点击某用户查看该用户信息时,在URL栏上出现:http://www.abc.com/index.php?user_id=39,修改数字就可以查看另外的用户。这样太不安全了吧?
用什么方法可以避免此问题,让URL上只出现"http://www.abc.com/"或"http://www.abc.com/index.php"这样的信息?
请教具体做法!
修改数字就可以查看另外的用户。这样太不安全了吧?
这个安全问题不需要隐藏URL参数来解决,用$_SESSION来判断当前用户是否是参数user_id的值,如果是,可以查看,否则不能查看。而且查看别的用户的信息应该是被允许的,你可以在视图里过滤掉一些隐私的信息
可通过 cookie 或 session 传递
可以写一下 详细代码吗,急求 ,谢谢
修改数字就可以查看另外的用户。这样太不安全了吧?
这个安全问题不需要隐藏URL参数来解决,用$_SESSION来判断当前用户是否是参数user_id的值,如果是,可以查看,否则不能查看。而且查看别的用户的信息应该是被允许的,你可以在视图里过滤掉一些隐私的信息
这是权限控制问题
比如 http://my.csdn.net/xuzuning 和 http://my.csdn.net/ 呈现出来的就不一样
最简单的就是用session进行比对
至于代码 自己写 有bug或者不能跑再问
//首先,你得在用户登录后把uid存到session里,比如在login.php中$_SESSION['uid'] = XXX //XXX为用户登录时给他的sessionID(和user表的uid值相同)//比如在userinfo.php中if($_SESSION['uid'] == intval($_GET['user_id'])){ //显示当前登录用户信息}else{ //可以显示别的用户的信息(用$_SESSION['uid']查询user表的uid,并根据需要展示信息) //也可以直接给出error信息,告诉他不能查看该用户的信息}
//首先,你得在用户登录后把uid存到session里,比如在login.php中$_SESSION['uid'] = XXX //XXX为用户登录时给他的sessionID(和user表的uid值相同)//比如在userinfo.php中if($_SESSION['uid'] == intval($_GET['user_id'])){ //显示当前登录用户信息}else{ //可以显示别的用户的信息(用$_SESSION['uid']查询user表的uid,并根据需要展示信息) //也可以直接给出error信息,告诉他不能查看该用户的信息}
$_SESSION['uid'] = XXX放在php脚本里,在该脚本中:在完成了登录信息检查之后,设置$_SESSION['uid'] =XXX,该XXX应该是根据用户登录的表单字段从user表取出的uid。
if($_SESSION['uid'] == intval($_GET['user_id']))应该放在登陆后做判断的 php脚本里,如果GET传来的user_id和$_SESSION['uid']一致,则从用户信息表取出用户信息赋值给$userinfo,再引入html页面,在html页面里嵌入php代码,比如用户名:
如果传来的参数和$_SESSION['uid']不相同,则表示要查看的用户信息不是当前登录的用户,这时,如果你想显示出该用户的信息,仍然是从根据GET的user_id从用户信息表查信息,你可以选择性地展示一些用户信息,不展示一些隐私的信息;如果你不想显示当前登录用户之外的其他用户的信息,直接header(location:XXXXX);跳转到错误页面,提示不能查看他的信息