如何在PHP中进行URL抽象

时间:2013-07-21 12:38:49

标签: php

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

1 个答案:

答案 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稍微难以篡改,但不应该依赖它作为安全措施。)