2012-02-23 55 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注入攻擊! ''從圖像中刪除WHERE'id' = $ delete「'其中'$ delete = $ _POST ['toDelete']'。 – 2012-02-23 22:03:03

+0

如果它出現在保護區域,如管理小組,我應該擔心嗎?解決方案是通過在單獨的頁面上寫入一個函數並在此處調用它?或跳轉到另一個處理刪除然後返回的頁面? – Jeremythuff 2012-02-23 22:39:42

+0

即使這樣,你應該擔心,因爲那麼你唯一的保護就是頁面沒有鏈接到任何地方。人們不知道頁面存在的事實並不意味着他們不會找到它;這是通過默默無聞的安全。解決方案是在查詢中正確地轉義參數(或使用準備好的語句);如果你不知道這意味着什麼,那麼你可能需要閱讀更多關於SQL的內容(例如,參見http://www.unixwiz.net/techtips/sql-injection.html) – 2012-02-23 23:08:08

回答

0

你有你的gal檢查內部toDelete檢查,所以你需要有$_POST['gal']$_POST['toDelete']正在發送。我沒有在你的第二個窗體中看到gal,所以只需加上<input type="hidden" name="gal" value="{$_POST['gal']}" />

+0

working,thanks :) – Jeremythuff 2012-02-24 04:56:23

+0

如果這回答了您的問題,請將其標記爲已接受 - 這樣人們一眼就會知道您的問題已得到解決。 – 2012-02-24 06:32:49

相關問題