$ _get无效

时间:2013-06-08 13:19:23

标签: php

我创建了更新代码,用于使用id更新表格中的密码。这是我使用$_GET获取ID的网址,但它不起作用。

http://www.example.com/en/resetPaSS.php?id=1&token=779d2aa48de104db46d66e29de576aac

代码:

if(isset($_POST['sub']))
{
$pass_hash = PassHash::hash($_POST['pass']);

$sql = "UPDATE user SET password='$pass_hash' WHERE id='$_GET[id]'";
$resu = mysqli_query($link,$sql);
//echo $sql;
if(!$resu)
    {
     $error="Unable to change Password. Try Again!";
    }
    else
    {
     echo"changed";
    }
}

我也是echo $sql,它显示UPDATE user SET password='$2a$10$bed9ad8e6cb910e0f1f12uXJldZLQ79f5HVrIiIAIZeZ9088Rre9.' WHERE id=''

还尝试了$_REQUEST,但仍无效。

修改 我正在使用此URL重置密码以发送给使用创建的用户 http://www.example.com/en/resetPaSS.php?id=$id&token=$token

3 个答案:

答案 0 :(得分:2)

试试这个:

 $sql = "UPDATE user SET password='$pass_hash' WHERE id='" . mysqli_real_escape_string($_GET['id']) . "'";

答案 1 :(得分:1)

如果您使用表单,则该ID不在操作网址中。您还可以使用隐藏的输入字段

发布ID

您必须使用预准备语句来阻止sql注入:

$sql = "UPDATE user SET password='?' WHERE id=?";
$stmt = $link->prepare($sql);

/* bind parameters */
$stmt->bind_param("si", $pass_hash, $_GET['id']);

/* execute query */
$stmt->execute();

修改 点击链接,您将转到表单所在的页面。您必须通过执行以下步骤编辑表单或操作URL的ID以使脚本正常工作

制作一个名为id的变量:

$id = isset($_GET['id']) ? $_GET['id'] : $_POST['id'];

还在表单中添加隐藏字段:

<input type="hidden" name="id" value="<?php echo $id; ?>">

将查询bind_param更改为:

$stmt->bind_param("si", $pass_hash, $id);

答案 2 :(得分:0)

如果您知道,该ID是数字,请执行以下操作:

$id = intval($_GET['id']);
$sql = "UPDATE user SET password='$pass_hash' WHERE id='$id';";