检查网址 - 哈希+盐

时间:2011-03-21 19:52:38

标签: php

我怀疑如何检查这样的网址:

http://your.url/set_new_password.php?userid=564979&code=54c4a2767c2f485185ab72cdcf03ab59

我需要检查数据库中是否存在userid,以及userid是否与链接中的哈希相关联。

我读过,检查php中的url是不可能的。如果是这样,是否有可能解决这个问题?我需要验证数据库中是否存在链接中存在的哈希和用户ID。

还有其他选择吗?

4 个答案:

答案 0 :(得分:2)

在php中使用$ _GET变量

$_GET['userid']

see tutorial here

答案 1 :(得分:2)

URL中的变量useridcode在名为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']”的用户中选择*;