首頁 >後端開發 >php教程 >php 如何隐藏url地址栏参数

php 如何隐藏url地址栏参数

WBOY
WBOY原創
2016-06-23 13:26:304125瀏覽

我用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 是放在那个登陆时的html页面 还是放在 php 页面 ,if($_SESSION['uid'] == intval($_GET['user_id'])){  具体是放在哪儿呢,放在登陆后的html页面上呢,还是放在登陆后做判断的 php页面呢

$_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);跳转到错误页面,提示不能查看他的信息

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn