2011-08-31 3 views
0

나는이 항목을 삭제하여 항목 링크를 추가하는 방법에 대해 궁금해하고 있었습니까? 어떤 도움을 주시면 감사하겠습니다.이 코드를 SQL 삭제 함수로 변환하는 방법은 무엇입니까?

if (CAN_EDIT){ 
    echo '<i>'.$announcements[$x]['page_edit']='<a href="index.php?id='.$announcements[$x]['page_id'].'&act=edit">edit entry</a></i><br />'; 
if ($announcements[$x]['page_edit']>0){} 
         } 

나는 내가 그것을 구현하고 그것을 링크하는 방법을 단지 확실하지 않다

mysql_query DELETE FROM (table name) WHERE (item name) 

를 사용하는 방법에 대한 이해합니다.

+1

$ announcements [$ x] [ 'page_id']. 'mysql_query delete from (테이블) WHERE id = $ _GET ['id ']' – JKirchartz

+0

'은 (는) 이 아니어야합니다. $ announcements [$ x] [ 'page_edit'] = ' '$ announcements [$ x] ['page_edit '].' bfavaretto

답변

2

응용 프로그램이 요청을 처리하는 방법은 실제로 다릅니다. 게시 한 수정 링크 코드는 PHP에 두 개의 매개 변수, 즉 idact이 전달되었음을 보여줍니다. 두 링크 모두 링크를 클릭하면 PHP에서 $_GET 내에서 사용할 수 있습니다.

그 결과로 코드가 $_GET['act']을 확인하여 수행 할 작업을 결정했다고 추측 할 수 있습니다. 'edit'과 같으면 DB (레코드의 경우 id$_GET['id']과 같음)에서 일부 데이터를 가져온 다음 편집 양식을 렌더링합니다.

같은 논리를 사용하면 id=N&act=delete (여기에서 N은 실제 ID 임)으로 링크를 만들어야합니다. 그런 다음 PHP에서 $_GET['act']의 값이 'delete'인지 확인한 다음 SQL 쿼리를 실행하여 전달 된 ID가있는 행을 삭제합니다.

또한 SQL 인젝션에 대해 약간의 연구를해야합니다. 쿼리에 직접 $_GET 또는 $_POST 값을 사용해서는 안되기 때문에 앱이 주입에 취약해질 수 있습니다. PHP 매뉴얼에서 mysql_real_escape_string 함수를 살펴보십시오.

+2

이 대답에서 마지막 단락의 중요성을 과소 평가하지 마십시오. 특히 공개적으로 읽을 수있는'$ _GET' 매개 변수로 작업 할 때! 이를 염두에두고 JKirchartz의 질문에 대한 의견을 읽고 즉시 잊어 버리십시오. 조만간 문제가되는 아주 나쁜 충고. 쿼리에서 사용하기 전에 사용자 입력을 항상 정리하십시오. –

+0

+1 @Remco. 이 솔루션은 ID "DROP ALL TABLES"를 실행할 때까지 훌륭하게 작동합니다. 문제가 발생한 시점입니다. – PaulStock

+0

항목을 삭제할 수있는 권한을 가진 사람은 소수에 불과합니다. 그리고 그들이 시스템에 로그인하지 않으면 그들은 그것을 할 수 없을 것입니다. – Nicole

관련 문제