2015-03-11 2 views
1

У меня есть раскрывающийся список, заполненный файлами, вытащенными из каталога с использованием приведенного ниже PHP, и я пытаюсь выяснить, как я могу удалить их, используя кнопку удаления в форме, когда они выбраны.Ошибка удаления PHP

EDIT Устранена ошибка функции связи.

все еще получаю сообщение об ошибке при попытке удаления: Error.array (1) {[ "Действие"] => строка (6) "Удалить"}

<input type="hidden" name="Action" value="EDIT" /><input type="hidden" name="Selection" id="Selection" value="-1"><div>Below is the list of your saved codes. To edit your codes, select it from the list.</div> 
<select size="1" name="CodeList" id="CodeList"> 
<?php 
    $directory = $directory = 'users/' . $_SESSION['username']; 
    $filesContents = Array(); 
    $files = scandir($directory) ; 

    foreach($files as $file) 
    { 
    if (! is_dir($file)) 
{ 
    $filesContents[$file] = file_get_contents($directory , $file); 
     echo '<option value="'. $file .'">' . $file . '</option>'; 
    } 
    } 
?> 

удалить PHP скрипт.

<?php 
    session_start(); 
    $directory = $directory = $_SERVER['DOCUMENT_ROOT'] . '/users/' .  $_SESSION['username']; 
    $file_to_delete = $_POST['CodeList']; 
    if(is_file($directory .'/'. $file_to_delete) && is_writable($directory .'/'. $file_to_delete)) { 
    if (unlink ($directory.'/'.$file_to_delete)) { 
     echo $file_to_delete . " deleted."; 
    } else { 
    echo "Error."; 
    } 
} 
?> 
<?php var_dump($_POST) ?> 
+0

Обратите внимание, что ваш 'delete.php' может быть использован для удаления любого файла на вашем сервере. Вы должны проверить '$ _POST ['CodeList']'! – georg

+0

JS for @BlackDevil здесь бесполезен ... – giorgio

+0

спасибо georg за то, что поймаю, что посмотрю, как проверить его, прежде чем отправиться жить, пытаясь исправить эту другую ошибку. –

ответ

1

Вы добавили опции, но без опции значение. Переключателе должен выглядеть следующим образом:

<select name="identifier"> 
    <option value="value_1">Option 1</option> 
    <option value="value_2">Option 2</option> 
</select> 

Теперь, если вы выбрали вариант 2, вы должны получить значение_2 в вашем почтовом массиве:

echo $_POST['identifier']; // prints out 'value_2'; 

Ваши варианты выглядят как: <option>Option x</option>, что означает, что вы выберите опцию , но он не имеет значения (нет атрибута value="").

Если вы посмотрите на свою ошибку PHP, я вижу правильное имя каталога, но не добавлено имя файла.

Вы должны также проверить, существует ли файл, чтобы предотвратить «нет такого файла» ошибка:

if(is_file($directory .'/'. $file_to_be_deleted) && is_writable($directory .'/'. $file_to_be_deleted)) { 
    // delete the file 
} 

Да, я использую is_file И тест is_writable, потому что функция is_writable также вернется true если проверенный путь - это каталог.

EDIT

Чтобы присвоить значения, изменять свой цикл Еогеасп следующим образом:

<select size="1" name="CodeList" id="CodeList"> 
    <?php 
    // fetch files etc. 

    foreach($files as $file) { 
     if (! is_dir($file) { 
      echo '<option value="'. $file .'">' . $file . '</option>'; 
     } 
    } 

Ох и кстати: избавиться от get_file_contents() части. Вы ничего не делаете с содержимым файла, не так ли?

+0

Спасибо, Джорджио за вашу помощь. Я обновляю свой файл php, проблема с выпадающим списком не знала, что мне нужно назначать значения. Список заполняется файлами, которые они сохраняют в своем каталоге пользователя (который может быть любой суммой, если я не ограничу его), поэтому я не знаю, как их назначать. –

+0

Спасибо, Джорджио сейчас пытаюсь это сделать, добавив в вашу другую строку в php все исправления, которые просто возвращают ошибку массива, но будут проверять это с добавлением файла. И как только они выбирают файл, он фактически отправляет имя и содержимое файла в форму на странице, почему я использовал get_file_contents() –

+0

ah ok, вы используете содержимое где-то еще в скрипте, я получаю его :) В этом case, игнорировать мой комментарий об этом (хотя я оставлю его там, в случае, если кто-то пытается сделать то же самое и не использует явное содержимое файла) – giorgio

-1

Мы можем использовать Javascript для этого

Remove варианта:

$("#selectBox option[value='option1']").remove(); 

Добавить вариант:

$("#selectBox").append('<option value="option5">option5</option>'); 

Надеется, что это поможет!

+0

Спасибо за помощь! Я не уверен, что правильно написал, я поставил то, что сделал, и результат в моем оригинальном посте. –

+0

Благодарим вас за разъяснение кода, введите его так же, как и у вас в голове и под моей формой, и попытка удалить выбранный файл по-прежнему возвращает ошибку развязки. –

+0

мои извинения за то, что я новичок, я не уверен, что мне нужно изменить эти значения параметров или оставить их как есть. –

Смежные вопросы