Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/18: Рейтинг темы: голосов - 18, средняя оценка - 4.83
2 / 2 / 3
Регистрация: 11.09.2011
Сообщений: 537
1

Удаление файлов в определенной папке на сервере

25.12.2013, 21:46. Показов 3484. Ответов 4
Метки нет (Все метки)

Доброго времени суток. Есть вот так код страницы, не пойму как правильно сделать так, что бы около каждого файла была кнопка "Удалить", ну и соответственно можно было бы удалять тот или иной файл
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
<?php
error_reporting(-1);
session_start();
?>
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<script type="text/javascript"
src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.1/j..">
</script>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" >
<meta name="description" content="1-78-5 файлы <?php echo $description ?>" />
<title>Архив</title>
</head>
 
<body>
 
<tr>
<td colspan="3">
<?php include("../../../blocks/header.php")?>
</td>
</tr>
 
<?php
    // Проверяем, пусты ли переменные логина и id пользователя
    if (empty($_SESSION['login']) or empty($_SESSION['id']))
    {
     // Если пусты, то мы не выводим ссылку
     echo "<p align='right'>Вы вошли на сайт, как гость</p>
     <table width='100%' border='1' align='center' cellpadding='0' cellspacing='0' bordercolor='#000000'>
     <tr>
     <td bgcolor='#ffffff'><div align='center' class='style1'><b>1-78-5</b></div></td>
     </tr>
     <tr>
     <td style='padding:10px'> <a href='../../../index.php'>Перейти на главную страницу</a> <!-- точки (../ - файл содерж.в пред. директории, каждая пара точка означает переход на директорию выше) --> ";
    }
    else
    { // Если не пусты, то мы выводим ссылку
    echo "<p align='right'> Вы вошли на сайт, как ".$_SESSION['login']." (".$_SESSION['name']." ".$_SESSION['familiya'].") - ".$_SESSION['type_users']."
    <p align='right'><a href=../../../page.php?id=$_SESSION[id]>Личный кабинет</a></p>
 
    <p align='right'><a href=../../../search.php>Поиск</a></p>
 
    <p align='right'><a href='../../../logout.php'>Выход</a></p>
 
    <table width='100%' border='1' align='center' cellpadding='0' cellspacing='0' bordercolor='#000000'>
    <tr>
    <td bgcolor='#ffffff'><div align='center' class='style1'><b>1-78-5</b></div></td>
    </tr>
 
    <tr>
    <td style='padding:10px'> <a href='../../../index.php'>Перейти на главную страницу</a> <!-- точки (../ - файл содерж.в пред. директории, каждая пара точка означает переход на директорию выше) -->";
    }
?>
 
<br><br>
 
<?php if ((isset($_SESSION['login']) or isset($_SESSION['id'])) && $_SESSION['type_users']=='Преподаватель') echo 'Файлы:<br>' ?>
 
<?php if ((isset($_SESSION['login']) or isset($_SESSION['id'])) && $_SESSION['type_users']=='Преподаватель')
{/**
 * void object2file - функция записи объекта в файл
 *
 * @param mixed value - объект, массив и т.д.
 * @param string filename - имя файла куда будет произведена запись данных
 * @return void
 *
 */
 function object2file($value, $filename)
 {
    $str_value = serialize($value);
    $f = fopen($filename, 'w');
    fwrite($f, $str_value);
    fclose($f);
 }
 
 
 /**
 * mixed object_from_file - функция восстановления данных объекта из файла
 *
 * @param string filename - имя файла откуда будет производиться восстановление данных
 * @return mixed
 *
 */
 function object_from_file($filename)
 {
    $file = file_get_contents($filename);
    $value = @unserialize($file);
    return $value;
 }
 
 
 $filename = 'stats.txt';//файл для хранения
 $array = object_from_file($filename);
 if(isset($_POST['sub']) and isset($_POST['stats']) and !empty($_POST['stats']))
 {
    if($array == false)
    {
        $array=array();
    }
    $array[$_POST['file']]= $_POST['stats'];
    object2file($array,$filename);
 }
 
 $dir = "upload_1-78-5/"; //задаём имя директории
 if(is_dir($dir))
 {
    $files = scandir($dir); //сканируем (получаем массив файлов)
    array_shift($files); // удаляем из массива '.'
    array_shift($files); // удаляем из массива '..'
 
    for($i=0; $i<sizeof($files); $i++)
    {
        if($array !== false)
        {
            $s=(array_key_exists($files[$i],$array)==true)?$array[$files[$i]]:'';
        }
            else
            {
                $s = '';
            }
            echo 'Файл - <a href="'.$dir.$files[$i].'" title="скачать файл"> '.$files[$i].'</a> '.$s.'
            <form method="post" name="">
            Выберите Статус
            <select name="stats">
            <option select></p>
            <option value="Выполнено">Выполнено
            <option value="Не выполнено">Не выполнено
            </select>
            <input type="hidden" name="file" value="'.$files[$i].'">
            <input type="submit" name="sub"> </form> <br>';
    }
} }
?>
 
<?php if ((isset($_SESSION['login']) or isset($_SESSION['id'])) && $_SESSION['type_users']=='Студент') echo 'Файлы:<br>' ?>
 
<?php if ((isset($_SESSION['login']) or isset($_SESSION['id'])) && $_SESSION['type_users']=='Студент')
{/**
 * void object2file - функция записи объекта в файл
 *
 * @param mixed value - объект, массив и т.д.
 * @param string filename - имя файла куда будет произведена запись данных
 * @return void
 *
 */
 function object2file($value, $filename)
 {
    $str_value = serialize($value);
    $f = fopen($filename, 'w');
    fwrite($f, $str_value);
    fclose($f);
 }
 
 
 /**
 * mixed object_from_file - функция восстановления данных объекта из файла
 *
 * @param string filename - имя файла откуда будет производиться восстановление данных
 * @return mixed
 *
 */
 function object_from_file($filename)
 {
    $file = file_get_contents($filename);
    $value = @unserialize($file);
    return $value;
 }
 
 
 $filename = 'stats.txt';//файл для хранения
 $array = object_from_file($filename);
 if(isset($_POST['sub']) and isset($_POST['stats']) and !empty($_POST['stats']))
 {
    if($array == false)
    {
        $array=array();
    }
    $array[$_POST['file']]= $_POST['stats'];
    object2file($array,$filename);
 }
 
 $dir = "upload_1-78-5/"; //задаём имя директории
 if(is_dir($dir))
 {
    $files = scandir($dir); //сканируем (получаем массив файлов)
    array_shift($files); // удаляем из массива '.'
    array_shift($files); // удаляем из массива '..'
 
    for($i=0; $i<sizeof($files); $i++)
    {
        if($array !== false)
        {
            $s=(array_key_exists($files[$i],$array)==true)?$array[$files[$i]]:'';
        }
            else
            {
                $s = '';
            }
            echo 'Файл - <a href="'.$dir.$files[$i].'" title="скачать файл"> '.$files[$i].'</a> '.$s.'<br>';
 
    }
} }
?>
 
<br>
 
<?php
    // Проверяем, пусты ли переменные логина и id пользователя
    if (!empty($_SESSION['login']) or !empty($_SESSION['id']))
    { echo "P.S.: Загружать файлы можно только с расширением '.doc', '.docx', '.pdf'
    <form method='post' action='comment.php' enctype ='multipart/form-data'>
    Файл: <input type='file' name='filename' size='9'/> <br>
    <input type='submit' value='Загрузить на сервер'/>
    </form><br>
 
    <form name='comment' action='comment.php' method='post'>
     <p>
    <!--  <label>Имя:</label> -->
    <!--   <input type='text' name='name' /> -->
    <input type='hidden' name='name' value='$_SESSION[login]' />
     </p>
     <p>
       <label>Оставить комментарий:</label>
       <br />
       <textarea name='text_comment' cols='100' rows='5'></textarea>
     </p>
     <p>
       <input type='hidden' name='page_id' value='150' />
       <input type='submit' value='Отправить' />
     </p>
    </form>";
    }
?>
 
<?php
  $page_id = 150;// Уникальный идентификатор страницы (статьи или поста)
  $name = @$_SESSION['login'];
  $date = date("d.m.Y H:i:s"); // Дата написания
 
  $mysqli = new mysqli("нельзя показывать :)");// Подключается к базе данных
 
  $mysqli->query("SET CHARACTER_SET_client='cp1251'");
  $mysqli->query("SET CHARACTER_SET_results='cp1251'");
  $mysqli->query("SET collation_connection='cp1251_general_ci'");
 
  $result_set = $mysqli->query("SELECT * FROM `comments` WHERE `page_id`='$page_id'"); //Вытаскиваем все комментарии для данной страницы
 
  echo ("<strong><p align=center>Комментарии</p></strong>");  echo("<br>");
 
  while ($row = $result_set->fetch_assoc())
  {
    echo ("Автор:"); echo(" "); print_r($row["name"]); echo (" <br> "); echo (" Дата написания: "); echo (" "); echo (date("d.m.Y H:i:s", $row['date'])); print_r(" <br> ");
    echo ("Комментарий:"); echo (" "); print_r($row["text_comment"]); echo (" <br> "); echo("<hr color='#000000'>"); echo (" <br><br> "); //Вывод комментариев
    ;"<br />";
  }
?>
 
</td>
</tr>
</table>
<!--/Контент сайта --><br>
 
<tr>
<td colspan="3">
<?php include("../../../blocks/footer.php")?>
</td>
</tr>
</body>
</html>
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.12.2013, 21:46
Ответы с готовыми решениями:

Поиск файлов в определенной папке
ребят помогите никак не могу понять почему одна процедура работает, а остальные нет, хотя делал всё...

Количество файлов в определенной папке
Можно средствами C# подсчитать количество файлов в определенной папке?%)

Список файлов в определенной папке
Подскажите пожалуйста!!! Есть скрипт: &lt;?php $sPath = '.'; $dDir = opendir($sPath); ...

Копирование определенной строки из файлов в папке
Добрый день, уважаемые! Подскажите пожалуйста макрос. Есть папка, в которой лежат книги экселя....

4
15 / 15 / 11
Регистрация: 22.12.2013
Сообщений: 104
26.12.2013, 02:39 2
Строка 201:
PHP
1
echo 'Файл - <a href="'.$dir.$files[$i].'" title="скачать файл"> '.$files[$i].'</a> '.$s.'<br>';
Меняем:
PHP
1
echo 'Файл - <a href="'.$dir.$files[$i].'" title="скачать файл"> '.$files[$i].'</a> '.$s.'<button class="removeFile" data-path="'.$dir.$files[$i].'">Удалить</button><br>';
И далее добавляем js скрипт, который будет отслеживать нажатие на кнопку с классом removeFile и отправлять ajax-запрос на удаление, содержащий путь к файлу (хранящийся в атрибуте data-path нажато кнопки). Либо если не знаете ajax можно сделать форомой (тогда нужно окружить добавленную кнопку тэгами
<form action="ваш скрипт для удаления.php" method="post"></form>:
PHP
1
echo 'Файл - <a href="'.$dir.$files[$i].'" title="скачать файл"> '.$files[$i].'</a> '.$s.'<form action="ваш скрипт для удаления.php" method="post"><button name="path" value="'.$dir.$files[$i].'">Удалить</button></form><br>';
И тогда в файле "ваш скрипт для удаления.php" написать:
PHP
1
2
3
<?php
    unlink($_POST['path']);
    echo 'Файл', $_POST['path'], ' удален';
P.s. приятно видеть прокомментированные в доксигене функции и просто ужасно видеть html код выводимый через echo. Советую погуглить на тему шаблонизаторов (mustache/smarty)
1
2 / 2 / 3
Регистрация: 11.09.2011
Сообщений: 537
26.12.2013, 11:58  [ТС] 3
Цитата Сообщение от fic Посмотреть сообщение
Либо если не знаете ajax можно сделать форомой (тогда нужно окружить добавленную кнопку тэгами
<form action="ваш скрипт для удаления.php" method="post"></form>:
PHP
1
echo 'Файл - <a href="'.$dir.$files[$i].'" title="скачать файл"> '.$files[$i].'</a> '.$s.'<form action="ваш скрипт для удаления.php" method="post"><button name="path" value="'.$dir.$files[$i].'">Удалить</button></form><br>';
Что-то не могу понять как в файлике скрипта для удаления файлов, написать код правильно
0
15 / 15 / 11
Регистрация: 22.12.2013
Сообщений: 104
26.12.2013, 13:11 4
Цитата Сообщение от TheRealKos Посмотреть сообщение
Что-то не могу понять как в файлике скрипта для удаления файлов, написать код правильно
Я же написал вам, в файлике на который ссылается форма напишите:

PHP
1
2
3
<?php
    unlink($_POST['path']);
    echo 'Файл', $_POST['path'], ' удален';
0
2 / 2 / 3
Регистрация: 11.09.2011
Сообщений: 537
27.12.2013, 00:34  [ТС] 5
Цитата Сообщение от fic Посмотреть сообщение
Я же написал вам, в файлике на который ссылается форма напишите:
PHP
1
2
3
<?php
* * unlink($_POST['path']);
* * echo 'Файл', $_POST['path'], ' удален';
Ну кроме этого же явно еще нужно написать что-то, вот что именно и как правильно понять не могу

Добавлено через 4 часа 23 минуты
fic,
Пытаюсь сделать во так(наверняка очень криво и не правильно)
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
   $dir = "upload_1-78-5/"; //задаём имя директории
 if(is_dir($dir))
 {
    $files = scandir($dir); //сканируем (получаем массив файлов)
    array_shift($files); // удаляем из массива '.'
    array_shift($files); // удаляем из массива '..'
 
    for($i=0; $i<sizeof($files); $i++)
    {
        if($array !== false)
        {
            $s=(array_key_exists($files[$i],$array)==true)?$array[$files[$i]]:'';
        }
            else
            {
                $s = '';
            }
                 unlink($_POST['.$dir.$files[$i].'])
                echo 'Файл', $_POST['.$dir.$files[$i].'], ' удален'
;
?>
Добавлено через 5 часов 11 минут
Как же все таки правильно сделать?

Добавлено через 1 час 23 минуты
Если делаю так:
PHP
1
2
3
4
5
6
7
8
<?php
  include("../../../blocks/header.php");
  if (unlink('.$dir.$files[$i].'))
   { echo "Файл удален<br><a href='1-78-5.php'>Назад</a>"; }
  else
   { echo "Ошибка при удалении файла<br><a href='1-78-5.php'>Назад</a>"; }
  include("../../../blocks/footer.php");
?>
ТО пишет, что ошибка при удалении файла(ну оно вроде и понятно, хотя...)

Если же пишу так:
PHP
1
2
3
4
5
6
7
8
<?php
  include("../../../blocks/header.php");
  if (unlink($_POST('.$dir.$files[$i].')))
   { echo "Файл удален<br><a href='1-78-5.php'>Назад</a>"; }
  else
   { echo "Ошибка при удалении файла<br><a href='1-78-5.php'>Назад</a>"; }
  include("../../../blocks/footer.php");
?>
, ТО вообще ничего не пишет , не доходит до удаления...

Добавлено через 13 минут
Мда, оказалось на самом деле нужно было просто написать
PHP
1
2
3
4
<?php
    unlink($_POST['path']);
    echo 'Файл', $_POST['path'], ' удален';
?>
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.12.2013, 00:34

Получение списка файлов в определённой папке
Как получить список всех файлов в определённой папке, включая подпапки, без использования рекурсии....

Поиск имен всех файлов, находящихся в определенной папке
Народ как записать (например в Memo) имена всех файлов, находящихся в определеннои папке??

Как узнать имена и количество файлов в определенной папке
Вопрос в следующем: Есть определенная директория, например c:\my, нужно узнать какие файлы в ней...

Заданные замены символов в именах файлов в определённой папке
Как автоматом заменить пробелы (а заодно и запятые (&quot;,&quot;)) в именах файлов в папке на, скажем,...

Сложить значения определённой строки из всех файлов в папке
Всем привет! В папке лежат текстовые файлы. У каждого из этих файлов надо прочитать шестую строку и...

Удаление первых 6-ти строк во всех текстовых файлах, находящихся в определённой папке
Привет. Пытаюсь создать BAT CMD файл удаляющий первые 6 строк в каждом файле папки. В папке...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.