我怀疑如何检查这样的网址:
http://your.url/set_new_password.php?userid=564979&code=54c4a2767c2f485185ab72cdcf03ab59
我需要检查数据库中是否存在userid,以及userid是否与链接中的哈希相关联。
我读过,检查php中的url是不可能的。如果是这样,是否有可能解决这个问题?我需要验证数据库中是否存在链接中存在的哈希和用户ID。
还有其他选择吗?
答案 0 :(得分:2)
答案 1 :(得分:2)
URL中的变量userid
和code
在名为GET的数组中可供PHP使用:
echo $_GET['userid']; // 564979
如果您的URL中有哈希(或片段),则不会返回PHP:
www.mysite.com?val=1#part2
在上文中,PHP可以看到域和val
变量,但不能看到#part2
。使用哈希来显着更改页面的网站(例如GMail)在哈希值发生变化时使用javascript来提取新内容。
确保在使用 之前清理变量,以避免恶意用户入侵您的系统。这是一个很大的主题,但请阅读以下内容:
如果您没有清理,有人可能会更改您的网址,以便将变量设置为:
;DELETE * FROM mytable;
当您在不清理输入的情况下查询数据库时,可能会丢失所有数据。
答案 2 :(得分:0)
在PHP中,$ _GET数组具有url参数。因此,在这种情况下,您可以使用$_GET['userid']
和$_GET['code']
答案 3 :(得分:0)
请参阅服务器包含apache,php,mysql。当您通过浏览器访问此URL时,它首先发送到apache,它将您的请求转发给php。 Php从那里完全控制。客户端浏览器发出的请求包含各种数据,可以分为cookie,header,post,get request等类型。所有这些数据都可以在php $ _GET,$ _POST等各自的suprglobal变量中访问。在您的情况下,您需要访问$ _GET。所以$_GET['userid']
访问用户ID,$_GET['code']
访问代码。最后你会连接MYSQL,并且确实喜欢“从'userid'= $ _GET ['userid']和'code'= $ _GET ['code']”的用户中选择*;