0

当我尝试在 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>"; 

我可以在地址栏中看到这样的网址:

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,则会更新另一个用户的详细信息。我想避免这种情况。

4

1 回答 1

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 并按照其他人的建议绑定您的参数。(如果您 F5 页面,如果操作是 GET,它将再次更新。POST 稍微难以篡改,但不应将其作为安全措施。)

于 2013-07-21T13:36:29.083 回答