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>"; 

アドレスバーに次のような 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 を変更すると、別のユーザーの詳細が更新されます。これは避けたい。

4

1 に答える 1

0

最初に、ユーザー ID がその E メールに関連付けられているかどうかを確認してください。

$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 に答える