我创建了更新代码,用于使用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
答案 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';";