2009-11-03 6 views
0

ID 문제가 있습니까? 아니면 누락 된 것이 있습니까? 내가 코멘트를 삭제하려고 노력 중입니다 ...이 'delete.php'페이지에서 $ prof는 삭제 요청을 보내는 사용자이고, 삭제하려는 페이지에서 $ auth는 보낸 사람입니다. 의견.내 'delete.php를 db에 보내고 죽은 것으로 표시하도록 가져올 수 없습니다.

<?php 
    require_once($_SERVER['DOCUMENT_ROOT'] . '/includes/system/init.php'); 
    enforce_auth(); 

    $prof = new User($_GET['id']); 

    $query = "UPDATE `ProfileComments` SET `status` = 'dead' WHERE `id` = '".$prof->id."' LIMIT 1"; 
    $request = mysql_query($query,$connection); 
?> 

$prof->id 대신 다른 변수를 바꾸어야합니까? 응용 프로그램에서

+0

저는 사용자가 제공하는 모든 변수를 피할 수 있기를 바랍니다. – erenon

+0

무엇을 의미합니까? –

+0

erenon을 (를) 이스케이프 처리합니까? –

답변

6

내가 볼때, 나는 이런 식으로 할 것이 당신이 당신의 데이터베이스 :

를 업데이트하기 위해 ID를 사용하는 새로운 객체를 만들기 위해 과잉 생각 :

$id = $_GET['id']; <br> 
mysql_query("UPDATE ProfileComments SET status = 'dead' WHERE id = '$id' LIMIT 1") or die(mysql_error()); 

그 트릭을 해야하는지보십시오!

+1

도주. 탈출. 탈출. – erenon

+0

미안;) 나는 새로운 stackoverflow에 – bomortensen

+1

새로운 것과 관계가 없다. SQL 주입 공격에 취약한 샘플 코드를 붙여 놓는 것이 내 눈에는 전혀 도움이되지 않습니다. – Franz

2

그냥 유형 :

echo $query = "UPDATE ProfileComments SET status = 'dead' WHERE id = '".$prof->id."' LIMIT 1"; 

문자열로 쿼리를 OUPUT 것입니다. immediatly, 위대한 오류를 볼 수 있다면. 그것을 phpMyAdmin에 붙여 넣으 려하지 마십시오. 이것은 정말 당신이 MySQL을 디버그하는 데 도움이됩니다!

희망이 있습니다.

+0

+1이 간단하고 효과적인 teqnique. 그것이 내가 질의에 매달릴 때마다 내가 사용하는 것이다. –

0

이 경우 데이터를 이스케이프 처리하고 id를 정수로 캐스팅합니다.이 경우이 값을 사용해야합니다.

mysql_query("UPDATE ProfileComments SET status = 'dead' WHERE id = '". mysql_real_escape_string((int)$prof->id) . "' LIMIT 1"); 
관련 문제