使用主键在URL中加载记录?

时间:2012-01-02 13:54:12

标签: php mysql get

是否可以使用GET或类似的东西将记录加载到表单中?。

例如我有formA,它有一个DB的所有客户端的foreach列表,在每行的末尾我有一个名为'edit'的链接,这个链接转到formB.php并且被列出像这样>>

sitename.com/FormB.php?token=<?php echo $ID ?>

这会为您提供如下所示的网址:

http://www.sitename.com/formB.php?token=25

上面的链接例如将ID为25的记录加载到第二种形式。

我不知道如何处理第二种形式的链接,你能否以第二种形式回复GET ID,还是必须是GET令牌?

2 个答案:

答案 0 :(得分:3)

在PHP中,有预定义的$_GET变量。这基本上是一个包含所有GET参数的数组:

// url = index.php?foo=bar&hello=world

echo $_GET['foo']; // bar
echo $_GET['hello']; // world

所以,考虑一下你的网址和查询:

$query = 'SELECT * FROM `table` WHERE `token`=' . $_GET['token'];

为了避免安全漏洞,我们需要在使用字符串时在用户定义的参数周围使用函数mysql_real_escape_string。使用其他类型(如数字)时,您只需将其解析为数字。

// if token is a number
$query = 'SELECT * FROM `table` WHERE `token`=' . intval($_GET['token']);

// if token is a string
$query = 'SELECT * FROM `table` WHERE `token`=' . mysql_real_escape_string($_GET['token']);

答案 1 :(得分:1)

您可以使用$_GET - 数组访问GET参数。要查看那里的内容,您可以使用: print_r($_GET);

在第二种情况下,您必须使用$_GET['token'],因为参数名为token

注意:如果要将参数传递给SQL查询,请确保它是安全的。在这种情况下使用intval()。 SQL注入很糟糕。