当我尝试传递href中的值时
$query_string =
'id=' . urlencode($id) .
'&name=' . rawurlencode($name) .
'&dob='. $dob .
'&email='. rawurlencode($email);
print "<a href='update.php?$query_string'>Update Details</a>
<br>Student ID: $id
<br> Student Name: $name
<br> Date Of Birth: $dob
<br> Email ID: $email
<br>";
我可以在地址栏中看到这个url:
localhost/student_portal/update.php?id=abc&name=Giridharan%20Rengarajan&dob=1993-07-22&email=rgiridharan.93%40gmail.com
在update.php中的我正在更新数据库中关于链接中提到的id的值
$sql="UPDATE student_details SET student_name='$name',student_dob='$dob',student_emailid='$email' WHERE student_id='$id'";
echo $sql;
$stmt = mysqli_prepare($con, $sql);
if(mysqli_stmt_execute($stmt)==TRUE){
$_SESSION['updateflag'] = 1;
header("location:index.php");
}
因此,如果我更改链接中的id,则更新另一个用户的详细信息。我想避免这种情况。
答案 0 :(得分:0)
首先检查用户ID是否与该电子邮件相关联。
$db->query("SELECT id FROM student_details WHERE student_id='$id' AND student_emailid='$email'");
if ($db->numRows()) {
// do update here
}
或者,您可以这样做:
SELECT id FROM student_details WHERE student_emailid='$email'
并更新该ID。
最后,使用POST并绑定你的params,正如其他人建议的那样。 (如果您对页面进行F5操作,如果操作是GET,它将再次更新.POST稍微难以篡改,但不应该依赖它作为安全措施。)