2012-02-23 2 views
2

사용자가 특정 디렉토리에있는 특정 이미지를 삭제할 수 있습니다. 먼저 디렉토리를 지정한 다음 삭제할 이미지를 지정해야합니다.한 페이지에서 여러 번 제출

내가 선택한 부분에서 갤러리 선택 결과의 드롭 다운에 선택한 갤러리의 이미지 이름 만 채워지는 것이 어려울 것이라고 생각한 것을 성취 할 수있었습니다.

내 문제는 파일을 삭제하고 테이블에서 행을 제거하는 if 문을 트리거하는 두 번째 폼의 제출 단추를 얻지 못하는 것입니다. 난 내 코드를 정독 내가 놓친 거지 무슨 :(

감사 톤을 말해 줄 수있는 누군가가 여기 생각!

<form action ='' name="form1" method='POST' enctype="multipart/form-data"> 
<p>Select Gallery: <select name="gal" style="color:black;"> 
    <option value="" style="color:black;"><?php echo $gal; ?></option> 
    <option value="graphicdesign/logos" style="color:black;">GD logos</option> 
    <option value="graphicdesign/webdesign" style="color:black;">GD website design</option> 
    <option value="graphicdesign/advertisements" style="color:black;">GD Advertisements</option> 
    <option value="fineart/nature" style="color:black;">FA Nature</option> 
    <option value="fineart/people" style="color:black;">FA People</option> 
    <option value="fineart/landscapes" style="color:black;">FA Landscapes</option> 
    <option value="photography/misc" style="color:black;">PG Misc</option> 
    <option value="photography/nature" style="color:black;">PG Nature</option> 
    <option value="photography/people" style="color:black;">PG People</option> 
</select></p> 
<input type="submit" value="Set Galery" style="color:black;"></p> 

  <?php 

$connect = mysql_select_db("cynthie") or die("couln't find db on 2 :("); 
$metaData = mysql_query("SELECT `name`, `path_full`, `path_thumb`, `galId` FROM `images`") or die("couln't find table :("); 
$gal = $_POST['gal']; 

        if (isset($_POST['gal'])) 
        { 

        echo '<form action ="" method="POST" enctype="multipart/form-data"><p>Select Image: <select name="toDelete" style="color:black;"><p><option style="color:black;">select img</option></p>'; 
        while ($displayData = mysql_fetch_assoc($metaData)) 
        { 
         $names = $displayData['name']; 
         $path_full = $displayData['path_full']; 
         $path_thumb = $displayData['path_thumb']; 
         $galDb = $displayData['galId']; 

         if ($galDb != $gal) 
         {} 
         else 
         { 
          echo '<p><option style="color:black;">'.$names.'</option></p>'; 
         } 

        } 

        echo '</select><p><input type="submit" value="Delete" style="color:black;"></p></form>'; 

    $connect = mysql_select_db("cynthie") or die("couln't find db on 4 :("); 
    $delete = mysql_query("SELECT `id` FROM images WHERE name='$toDelete'") or die("couln't find table on line 81 :("); 
    $toDelete = $_POST['toDelete'];  

        if (isset($_POST['toDelete'])) 
         { 
         unlink($path_full); 
         unlink($path_thumb); 
         mysql_query("DELETE FROM images WHERE `id`=$delete"); 
         unset($delete); 
         echo '<p>removed!</p>'; 
         } 
        else 
        {} 

         } 




      ?> 
+0

이것은 SQL 주입 공격에 개방적입니다! ''id' = $ delete ''어디에서'$ delete = $ _POST ['toDelete ']'이미지를 삭제하십시오. 관리 패널과 같은 보호 된 영역에 나타나는 경우 –

+0

과 관련해 걱정해야합니까? 솔루션을 별도의 페이지에 함수를 작성하여 여기에 호출하여 전달할 수 있습니까? 또는 삭제를 처리 한 다음 다른 페이지로 다시 이동 하시겠습니까? – Jeremythuff

+0

그렇다면 걱정할 필요는 없습니다. 그 이유는 페이지가 어디에도 링크되어 있지 않기 때문입니다. 사람들이 페이지가 존재한다는 것을 모르는 것이 그들이 그것을 발견하지 못할 것이라는 것을 의미하지는 않습니다. 그건 무명의 보안입니다. 해결책은 쿼리에서 매개 변수를 올바르게 이스케이프 처리하거나 준비된 문을 사용하는 것입니다. 그게 무슨 뜻인지 모르겠다면, 아마도 SQL에 대해 좀 더 읽을 필요가있을 것입니다. (http://www.unixwiz.net/techtips/sql-injection.html 참고) –

답변

0

을 당신은 gal 체크 안에 당신의 toDelete 수표를 가지고, 따라서 $_POST['gal']$_POST['toDelete']을 보내야합니다. 두 번째 양식에 gal이 표시되지 않으므로 <input type="hidden" name="gal" value="{$_POST['gal']}" />을 추가하십시오.

+0

근무 했으니, 고마워요 :) – Jeremythuff

+0

이 질문에 답변이 있으면 Accepted로 표시하십시오 - 사람들이 한눈에 문제가 해결되었음을 알게 될 것입니다. –

관련 문제