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

Вывод файлов и форма загрузки/удаления файлов работают на одной странице, а на другой в ячейках таблицы нет

29.12.2013, 17:51. Просмотров 1583. Ответов 16
Метки нет (Все метки)

Доброго времени суток. В общем ситуация следующая. В своем профиле пользователь загружает файлы, которые идут в пока в папку upload/ и выводится файлы с ссылкой на скачивание, установление статуса через выпадающий список, и удаление их. На одной странице делается это все нормально. Делаю тоже самое, НО в ячейках таблицы,а ни чего не получается.

index.php
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
<?php
ini_set('display_errors', 1);
  error_reporting(E_ALL);
// вся процедура работает на сессиях. Именно в ней хранятся данные пользователя, пока он находится на сайте. Очень важно запустить их в самом начале странички!!!
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>
<title>Архив ТЗ</title>
</head>
 
<body>
 
<table width="100%" border="0" cellspacing="5" cellpadding="0">
<tr>
<td colspan="3">
<?php include("blocks/header.php")?>
</td>
</tr>
 
<tr>
<td width="20%" valign="top">
<?php include("blocks/left_block.php")?>
</td>
<td valign="top">
 
<!--Контент сайта -->
 
<?php 
include ("bd.php");
$resource= mysql_query('SELECT * FROM `users` WHERE `type_users` = "Студент" ORDER by `group`',$db); ?>
 
<table width="100%" border="1" cellspacing="1">
<caption></caption>
  <tr>
    <td colspan="5" align="center">Главная страница</td>
  </tr>
<tr>
      <td align="center" width="20%" height="25px" bgcolor="">Пользователи</td>
      <td align="center" width="10%" height="25px" bgcolor="">Группа</td>
      <td align="center" width="30%" height="25px" bgcolor="">Файлы</td>
      <td align="center" width="40%" height="25px" bgcolor="">Комментарий</td>
</tr>
    <?php while($array = mysql_fetch_assoc($resource)) : ?>
    <tr>
     <td align="center"><?php echo $array['login']; echo ' '; echo '('; echo $array['name']; echo ' '; echo $array['familiya']; echo ')';  ?></td>
     <td align="center"><?php echo $array['group']; ?></td>
 
     <td align="center"><?php  
       "{/**
         * 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/; //задаём имя директории
      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>
         <form action='delete.php' method='post'><button name='path' value='.$dir.$files[$i].'>Удалить файл</button></form>";
"}}}"
?></td>
 
     <td><?php 
      $page_id = 111;// Уникальный идентификатор страницы (статьи или поста)
      $name = @$_SESSION['login'];
      $poluchatel = $array['id'];// id пользователя, для которого предназначается комментарий
      $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' AND `poluchatel` = " .$array['id']); //Вытаскиваем все комментарии для данной страницы
 
if($result_set)
{
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 "
      <form name='comment' action='comment.php' method='post'>
       <p>    <!--  <label>Имя:</label> -->
       <!--   <input type='text' name='name' /> -->
      <input type='hidden' name='name' value='$_SESSION[login]' />
      <input type='hidden' name='id' value='$poluchatel' /></p>
      <p>
       <label>Оставить комментарий:</label>
       <br>
       <textarea name='text_comment' cols='25px' rows='1px'></textarea>
       <input type='hidden' name='page_id' value='111' />
       <input type='submit' value='Отправить' /></p>
      </form>"; ?>
    </td>
    </tr>
 
<?php endwhile; ?>
 
</table>
<!--/Контент сайта -->
 
</td>
<td width="20%" align="center" valign="top">
 
    <?php
    // Проверяем, пусты ли переменные логина и id пользователя
    if (empty($_SESSION['login']) or empty($_SESSION['id']))
    {
    // Если пусты, то мы не выводим ссылку
    echo "Вы вошли на сайт, как гость<br><a href='reg.php'>Зарегистрироваться</a><br>
    <form action='testreg.php' method='post'><p><label>Ваш логин:<br></label>
    <input name='login' type='text' size='15' maxlength='15'></p>
    <!--**** В текстовое поле (name='login' type='text') пользователь вводит свой логин ***** -->
    <p><label>Ваш пароль:<br></label>
    <input name='password' type='password' size='15' maxlength='15'></p>
    <!--**** В поле для паролей (name='password' type='password') пользователь вводит свой пароль ***** -->
    <p><input type='submit' name='submit' value='Войти'>
    <!--**** Кнопочка (type='submit') отправляет данные на страничку testreg.php ***** -->
    </p></form>";
    }
    else
    {
    // Если не пусты, то мы выводим ссылку
    echo "Вы вошли на сайт, как <br>".$_SESSION['login']." (".$_SESSION['name']." ".$_SESSION['familiya'].") - ".$_SESSION['type_users']." <br>
    <a href=page.php?id=$_SESSION[id]>Личный кабинет</a>
 
    <br><br>
 
<a href='search.php'>ПОИСК</a>
 
    <br><br>
 
    <a href='logout.php'>Выход</a>";
 
    }
    ?> 
 
<!-- ?php include("blocks/right_block.php")?> -->
</td>
</tr>
 
<tr>
<td colspan="3">
<?php include("blocks/footer.php")?>
</td>
</tr>
 
</table>
</body>
</html>
page.php
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
<?php
// вся процедура работает на сессиях. Именно в ней хранятся данные пользователя, пока он находится на сайте. Очень важно запустить их в самом начале странички!!!
session_start();
?>
<?php include("blocks/header.php")?>
<?php
include ("bd.php");// файл bd.php должен быть в той же папке, что и все остальные, если это не так, то просто измените путь 
if (isset($_GET['id'])) {$id =$_GET['id']; } //id "хозяина" странички
else
{ exit("Вы зашил на страницу без параметра!");} //если не указали id, то выдаем ошибку
if (!preg_match("|^[\d]+$|", $id)) {
exit("<p>Неверный формат запроса! Проверьте URL</p>");//если id не число, то выдаем ошибку
}
 
if (!empty($_SESSION['login']) and !empty($_SESSION['password']))
{
//если существует логин и пароль в сессиях, то проверяем, действительны ли они
$login = $_SESSION['login'];
$password = $_SESSION['password'];
$result2 = mysql_query("SELECT id, type_users FROM users WHERE login='$login' AND password='$password'",$db); 
$myrow2 = mysql_fetch_array($result2); 
if (empty($myrow2['id']))
   {
   //Если не действительны (может мы удалили этого пользователя из базы за плохое поведение)
    exit("Вход на эту страницу разрешен только зарегистрированным пользователям!");
   }
}
else {
//Проверяем, зарегистрирован ли вошедший
 
// exit("Вход на эту страницу разрешен только зарегистрированным пользователям!");
 }
$result = mysql_query("SELECT * FROM users WHERE id='$id'",$db); 
$myrow = mysql_fetch_array($result);//Извлекаем все данные пользователя с данным id
 
if (empty($myrow['login'])) { exit("Пользователя не существует! Возможно он был удален.");} //если такого не существует
 
?>
<html>
<head>
<title>Личный кабинет</title>
</head>
<body>
<h2>Пользователь "<?php echo $myrow['login']; echo ' - '; echo $myrow['type_users']?>"</h2>
<h2>Меню</h2>
 
<?php
print <<<HERE
<a href='index.php'>Главная страница</a><br>
<a href=page.php?id=$_SESSION[id]>Личный кабинет</a><br>
<a href='all_users.php'>Список пользователей</a><br><br>
<a href='logout.php'>Выход</a><br><br>
HERE;
 
if ($_SESSION['id'] == $id) {
//Если страничка принадлежит вошедшему, то предлагаем изменить данные и выводим личные сообщения
 
print <<<HERE
<h3>Редактировать профиль:</h3>
<form action='update_user.php' method='post'>
Ваш логин <strong>$_SESSION[login]</strong>. Изменить логин:<br>
<input name='login' type='text'>
<input type='submit' name='submit' value='изменить'>
</form>
 
<form action='update_user.php' method='post'>
Изменить пароль:<br>
<input name='password' type='password'>
<input type='submit' name='submit' value='изменить'>
</form>
 
    <form method='post' action='comment.php' enctype ='multipart/form-data'>
    Файл: <input type='file' name='filename' size='9'/> <br>
    <input type='submit' value='Загрузить на сервер'/>
    </form><br>
 
 
<h2>Личные сообщения:</h2>
 
HERE;
 
$tmp = mysql_query("SELECT * FROM messages WHERE poluchatel='$_SESSION[login]' ORDER BY id DESC",$db); 
$messages = mysql_fetch_array($tmp);//извлекаем сообщения пользователя, сортируем по идентификатору в обратном порядке, т.е. самые новые сообщения будут вверху
 
if (isset($messages['id'])) {
do //выводим все сообщения в цикле
  {
$author = $messages['author'];
$result4 = mysql_query("SELECT avatar,id FROM users WHERE login='$author'",$db); //извлекаем аватар автора
$myrow4 = mysql_fetch_array($result4);
 
if (!empty($myrow4['avatar'])) {//если такового нет, то выводим стандартный(может этого пользователя уже давно удалили)
$avatar = $myrow4['avatar'];
}
else {$avatar = "avatars/net-avatara.jpg";}
 
  printf("
  <table>
  <tr>
  <td><a href='page.php?id=%s'><img alt='аватар' src='%s'></a></td>
  
  <td>Автор: <a href='page.php?id=%s'>%s</a><br>
      Дата: %s<br>
     Сообщение: %s<br>
    <a href='drop_post.php?id=%s'>Удалить</a>
  
  </td>  
  </tr>
  </table><br>
  ",$myrow4['id'],$avatar,$myrow4['id'],$author,$messages['date'],$messages['text'],$messages['id']);
  //выводим само сообщение
  }
  while ($messages = mysql_fetch_array($tmp));
 
                    }
               else {
               //если сообщений не найдено
               echo "Сообщений нет";
               }
}
 
else
{
//если страничка чужая, то выводим только некоторые данные и форму для отправки личных сообщений
print <<<HERE
<img alt='аватар' src='$myrow[avatar]'><br>
<form action='post.php' method='post'>
<br>
<h2>Отправить Ваше сообщение этому пользователю:</h2>
<textarea cols='43' rows='4' name='text'></textarea><br>
<input type='hidden' name='poluchatel' value='$myrow[login]'>
<input type='hidden' name='id' value='$myrow[id]'>
<input type='submit' name='submit' value='Отправить'>
</form>
HERE;
}
 
?>
<?php include("blocks/footer.php");?>
</body>
</html>
Добавлено через 41 минуту
И как сделать, что бы в ячейки файлы конкретного пользователя выводились толь те файлы, которые он загрузил?

Добавлено через 36 минут
Забыл же еще добавить
upload.php
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
<?php
session_start();
?>
 
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Результат загрузки файла</title>
</head>
<body>
 
 
<?php include("blocks/header.php"); ?>
 
<?php
if(@copy($_FILES["filename"]["tmp_name"],"upload/".$_FILES["filename"]["name"])) 
echo("Файл успешно загружен <br> <a href='index.php'> Вернуться назад</a>");
else echo("Ошибка загрузки файла <br> <a href='index.php'> Вернуться назад</a>");
?>
 
<?php include("blocks/footer.php"); ?>
 
</body>
</html>
dl_save.php
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
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>
 
<?php
$filename = $_GET['filename'];
 
// нужен для Internet Explorer, иначе Content-Disposition игнорируется
if(ini_get('zlib.output_compression'))
ini_set('zlib.output_compression', 'Off');
 
$file_extension = strtolower(substr(strrchr($filename,"."),1));
 
if( $filename == "" )
{
echo "ОШИБКА: не указано имя файла.";
exit;
} elseif ( ! file_exists( $filename ) ) // проверяем существует ли указанный файл
{
echo "ОШИБКА: данного файла не существует.";
exit;
};
switch( $file_extension )
{
case "pdf": $ctype="application/pdf"; break;
case "exe": $ctype="application/octet-stream"; break;
case "zip": $ctype="application/zip"; break;
case "doc": $ctype="application/msword"; break;
case "xls": $ctype="application/vnd.ms-excel"; break;
case "ppt": $ctype="application/vnd.ms-powerpoint"; break;
case "mp3": $ctype="audio/mp3"; break;
case "gif": $ctype="image/gif"; break;
case "png": $ctype="image/png"; break; 
case "jpeg":
case "jpg": $ctype="image/jpg"; break;
default: $ctype="application/force-download";
}
header("Pragma: public"); 
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false); // нужен для некоторых браузеров
header("Content-Type: $ctype");
header("Content-Disposition: attachment; filename=\"".basename($filename)."\";" );
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($filename)); // необходимо доделать подсчет размера файла по абсолютному пути
readfile("$filename");
exit();
?>
</html>
delete.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
  include("blocks/header.php");
  if (unlink($_POST['path']))
   { echo "Файл удален<br><a href='index.php'>Назад</a>"; }
  else
   { echo "Ошибка при удалении файла<br><a href='index.php'>Назад</a>"; }
  include("blocks/footer.php");
?>
 
<html>
<head>
<title>Удаление</title>
</head>
</html>
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.12.2013, 17:51
Ответы с готовыми решениями:

Форма загрузки файлов - не работает
Здравствуйте, уважаемые программисты. Помогите, пожалуйста, поправить код...

Форма загрузки файлов-изображений на сервер
Скорее всего тут не один пхп. Но вообще не сильно силен - пытаюсь на примерах с...

Форма загрузки нескольких файлов на сервер
Всем добрый день. Есть форма загрузки файла на сервер. Сама форма: ...

ajax + php форма загрузки файлов
Приветствую всех! Есть такая задача сделать форму для отправки статьи на сайт...

Как оставить пользователя на главной странице после загрузки файлов?
После загрузки файла, открывается новая страница, с сообщением об успешной...

16
ilikesmile
75 / 75 / 17
Регистрация: 29.11.2013
Сообщений: 262
29.12.2013, 18:06 2
Выкидывать километры кода не имеет смысла, далеко не все вникать будут.
Цитата Сообщение от TheRealKos Посмотреть сообщение
На одной странице делается это все нормально. Делаю тоже самое, НО в ячейках таблицы,а ни чего не получается.
Лучше детальней опишите проблему, т.к. что такое "все нормально" и "ни чего не получается" не совсем понятно.
0
TheRealKos
2 / 2 / 3
Регистрация: 11.09.2011
Сообщений: 531
29.12.2013, 18:24  [ТС] 3
Цитата Сообщение от ilikesmile Посмотреть сообщение
Лучше детальней опишите проблему, т.к. что такое "все нормально" и "ни чего не получается" не совсем понятно.
1. В index.php есть кусок кода, который выводит список загруженных в папке upload/ файлов, их можно скачать, удалить, а так же выставить статус (выполнено/не выполнено, который вместе с названием файла записывается в файл stats.txt и выводится рядом с файлом на странице). На другой странице данный код работает как полагается. В index.php же он все эти действия "засунуты" в ячейку таблицы и файлы не получается ни скачать, ни как следствие выставить статус, ну и ни удалить
Вывод файлов и форма загрузки/удаления файлов работают на одной странице, а на другой в ячейках таблицы нет

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
{/**
 * 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>
            Загрузил - 
            <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>
            <form action="delete.php" method="post"><button name="path" value="'.$dir.$files[$i].'">Удалить файл</button></form><br>';
    }
} }
2. Нужно, чтобы в ячейке файлы конкретного пользователя, отображались те файлы, которые он загрузил
0
ilikesmile
75 / 75 / 17
Регистрация: 29.11.2013
Сообщений: 262
29.12.2013, 18:44 4
Цитата Сообщение от TheRealKos Посмотреть сообщение
На другой странице данный код работает как полагается. В index.php же он все эти действия "засунуты" в ячейку таблицы и файлы не получается ни скачать, ни как следствие выставить статус, ну и ни удалить
В скрипте используются относительные пути, если скрипты выполняются из разных директорий это может стать причиной ошибок. Попробуйте провести проверку значений массива и других переменных. Это можно сделать с помощью var_dump($var).
Цитата Сообщение от TheRealKos Посмотреть сообщение
2. Нужно, чтобы в ячейке файлы конкретного пользователя, отображались те файлы, которые он загрузил
Нужно сделать проверку проверку пользователя (по уникальному идентификатору) и либо выбирать только нужные, либо удалить лишнюю информацию.
0
TheRealKos
2 / 2 / 3
Регистрация: 11.09.2011
Сообщений: 531
29.12.2013, 21:02  [ТС] 5
Цитата Сообщение от ilikesmile Посмотреть сообщение
В скрипте используются относительные пути, если скрипты выполняются из разных директорий это может стать причиной ошибок
Они все в одной директории находятся

Цитата Сообщение от ilikesmile Посмотреть сообщение
Нужно сделать проверку проверку пользователя (по уникальному идентификатору) и либо выбирать только нужные, либо удалить лишнюю информацию
А как это поможет с выводом списка файлов? Ведь по файлам не понятно кто их загрузил.

Добавлено через 54 минуты
Плиз, помогите, последнее что осталось сделать

Добавлено через 1 час 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
/**
 * 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/".$array["group"]."/"; //задаём имя директории
 print_r($dir);
 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>
            <form action="delete.php" method="post"><button name="path" value="'.$dir.$files[$i].'">Удалить файл</button></form><br>';
    }
 }
print_r($dir) выдает путь upload//, видимо из-за того, что в переменной array уже не хранится массив значений из таблицы users

Добавлено через 14 минут
Заменил array на array2 у запроса из таблицы, соответственно сделал $dir = "upload/".$array["group"]."/";. print_r($dir) выводит полный путь, уже хорошо, но только у одного пользователя, у следующего идет ошибка "Fatal error: Cannot redeclare object2file() (previously declared in /ftp_aerium-01/arhivtz/arhivtz.gixx.ru/index.php:65) in /ftp_aerium-01/arhivtz/arhivtz.gixx.ru/index.php on line 65"
0
ilikesmile
75 / 75 / 17
Регистрация: 29.11.2013
Сообщений: 262
29.12.2013, 21:41 6
Цитата Сообщение от TheRealKos Посмотреть сообщение
А как это поможет с выводом списка файлов? Ведь по файлам не понятно кто их загрузил.
Такие моменты нужно продумывать на этапе проектирования, а не реализации. Если у вас есть файл со списком загрузки, то добавьте в него идентификаторы пользователей.
Цитата Сообщение от TheRealKos Посмотреть сообщение
но только у одного пользователя, у следующего идет ошибка "Fatal error: Cannot redeclare object2file() (previously declared in /ftp_aerium-01/arhivtz/arhivtz.gixx.ru/index.php:65) in /ftp_aerium-01/arhivtz/arhivtz.gixx.ru/index.php on line 65"
Повторное объявление функции. Старайтесь вторично не подгружать скрипты, в которых есть объявлений функций или классов или используйте include_once.
0
TheRealKos
2 / 2 / 3
Регистрация: 11.09.2011
Сообщений: 531
29.12.2013, 22:02  [ТС] 7
Цитата Сообщение от ilikesmile Посмотреть сообщение
Такие моменты нужно продумывать на этапе проектирования, а не реализации. Если у вас есть файл со списком загрузки, то добавьте в него идентификаторы пользователей.
Не могу не много понять как сделать это, подтупливаю
Цитата Сообщение от ilikesmile Посмотреть сообщение
Повторное объявление функции. Старайтесь вторично не подгружать скрипты, в которых есть объявлений функций или классов или используйте include_once.
Тоже подтупливаю...
Последнее что осталось сделать. А сделать нужно до завтра...
0
ilikesmile
75 / 75 / 17
Регистрация: 29.11.2013
Сообщений: 262
29.12.2013, 22:14 8
Цитата Сообщение от TheRealKos Посмотреть сообщение
Не могу не много понять как сделать это, подтупливаю
На скрине есть имена пользователей, значит они где-то прописаны, а раз так, сделайте проверку на имя пользователя.
Цитата Сообщение от TheRealKos Посмотреть сообщение
Тоже подтупливаю...
Вы либо 2 раза прописали function object2file, либо 2 "заинклудили" скрипт, где прописана функция.
Цитата Сообщение от TheRealKos Посмотреть сообщение
Последнее что осталось сделать. А сделать нужно до завтра...
Курсовая значит... советую найти кофе.
0
TheRealKos
2 / 2 / 3
Регистрация: 11.09.2011
Сообщений: 531
29.12.2013, 22:29  [ТС] 9
Цитата Сообщение от ilikesmile Посмотреть сообщение
Вы либо 2 раза прописали function object2file, либо 2 "заинклудили" скрипт, где прописана функция.
Точно не 2 раза прописал(смотрел ctrl+f, ну и сам еще посмотрел), да и вроде 2 раза не "заинклудил" скрипт
Цитата Сообщение от ilikesmile Посмотреть сообщение
На скрине есть имена пользователей, значит они где-то прописаны, а раз так, сделайте проверку на имя пользователя.
В stats.txt записывается имя файла и его статус, вот к ним бы еще добавить логин пользователя, только не понимаю как нужно(не ну то что $_SESSION['login'] это да, только вот как правильно, да и каком месте...)

Добавлено через 9 минут
Цитата Сообщение от ilikesmile Посмотреть сообщение
Курсовая значит... советую найти кофе.
Изначально все было сделано через страницы, в последний момент преподу не понравилось, и сказал нужно сделать таблицу. Вот с таблицы то гемор и пошел...
0
ilikesmile
75 / 75 / 17
Регистрация: 29.11.2013
Сообщений: 262
29.12.2013, 22:36 10
Цитата Сообщение от TheRealKos Посмотреть сообщение
да и вроде 2 раза не "заинклудил" скрипт
Цитата Сообщение от TheRealKos Посмотреть сообщение
previously declared in /ftp_aerium-01/arhivtz/arhivtz.gixx.ru/index.php:65) in /ftp_aerium-01/arhivtz/arhivtz.gixx.ru/index.php on line 65"
Ошибка говорит, об обратном. Либо в синтаксисе ошибка, либо где-то index.php вызывает index.php.
Цитата Сообщение от TheRealKos Посмотреть сообщение
В stats.txt записывается имя файла и его статус, вот к ним бы еще добавить логин пользователя, только не понимаю как нужно(не ну то что $_SESSION['login'] это да, только вот как правильно, да и каком месте...)
При загрузке файла в stats.txt прописывается $_SESSION['login']. При выборке информации из файла проверяйте соответствие логина с $_SESSION['login'].

Добавлено через 2 минуты
Цитата Сообщение от TheRealKos Посмотреть сообщение
Изначально все было сделано через страницы, в последний момент преподу не понравилось, и сказал нужно сделать таблицу. Вот с таблицы то гемор и пошел...
Запишите где-нибудь после сдачи зачетов почитать про MVC и про использование баз данных. Тогда никакой препод страшен не будет.
0
TheRealKos
2 / 2 / 3
Регистрация: 11.09.2011
Сообщений: 531
29.12.2013, 22:41  [ТС] 11
Цитата Сообщение от ilikesmile Посмотреть сообщение
Ошибка говорит, об обратном. Либо в синтаксисе ошибка, либо где-то index.php вызывает index.php.
Скорей всего в синтаксисе
Цитата Сообщение от ilikesmile Посмотреть сообщение
При загрузке файла в stats.txt прописывается $_SESSION['login']. При выборке информации из файла проверяйте соответствие логина с $_SESSION['login'].
Не понимаю где именно указать, чтобы в stats.txt записался $_SESSION['login']. То что сверяться нужно, это понимаю. НО сначала бы записать его туда...
Цитата Сообщение от ilikesmile Посмотреть сообщение
Запишите где-нибудь после сдачи зачетов почитать про MVC и про использование баз данных. Тогда никакой препод страшен не будет.
Сделать бы до завтра это все, и сдать..Обязательно прочитаю
0
ilikesmile
75 / 75 / 17
Регистрация: 29.11.2013
Сообщений: 262
29.12.2013, 22:52 12
Цитата Сообщение от TheRealKos Посмотреть сообщение
Не понимаю где именно указать, чтобы в stats.txt записался $_SESSION['login']. То что сверяться нужно, это понимаю. НО сначала бы записать его туда...
PHP
1
2
3
4
5
6
7
8
9
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);
}
Как я понимаю, здесь данные из POST записываются в файл stats.txt. Это крайне не правильно, но можете засунуть логин в <form> страницы, которая отправляет этот запрос.
0
TheRealKos
2 / 2 / 3
Регистрация: 11.09.2011
Сообщений: 531
29.12.2013, 23:03  [ТС] 13
Цитата Сообщение от ilikesmile Посмотреть сообщение
можете засунуть логин в <form> страницы, которая отправляет этот запрос.
Вот здесь добавил чтобы "сессионый" логин записывался
PHP
1
2
3
<input type="hidden" name="file" value="'.$files[$i].'">
<input type="submit" name="sub"> 
<input type="hidden" name="$_SESSION[login]"></form>
А вот тут добавил and isset($_SESSION['login'])
PHP
1
2
3
4
5
6
7
8
9
 if(isset($_POST['sub']) and isset($_POST['stats']) and !empty($_POST['stats']) and isset($_SESSION['login']))
 {
    if($array == false)
    {
        $array=array();
    }
    $array[$_POST['file']]= $_POST['stats'];
    object2file($array,$filename);
 }
Видимо это нерпавильно, т.к. логин в файл не записывается
0
ilikesmile
75 / 75 / 17
Регистрация: 29.11.2013
Сообщений: 262
29.12.2013, 23:15 14
Цитата Сообщение от TheRealKos Посмотреть сообщение
<input type="hidden" name="$_SESSION[login]"></form>
HTML5
1
<input type="hidden" name="login" value="<?php echo $_SESSION[login]?>"></form>
А проверять нужно на выводе, а не на записи. И не isset($_SESSION), а == $_SESSION.
0
TheRealKos
2 / 2 / 3
Регистрация: 11.09.2011
Сообщений: 531
29.12.2013, 23:20  [ТС] 15
Цитата Сообщение от ilikesmile Посмотреть сообщение
<input type="hidden" name="login" value="<?php echo $_SESSION[login]?>"></form>
Это поменял
Цитата Сообщение от ilikesmile Посмотреть сообщение
А проверять нужно на выводе, а не на записи. И не isset($_SESSION), а == $_SESSION.
А на выводе это где именно?
0
ilikesmile
75 / 75 / 17
Регистрация: 29.11.2013
Сообщений: 262
29.12.2013, 23:27 16
Цитата Сообщение от TheRealKos Посмотреть сообщение
А на выводе это где именно?
Вы спрашиваете, где в Вашем проекте вывод информации?
Цитата Сообщение от TheRealKos Посмотреть сообщение
echo "Файл - <a href=.$dir.$files[$i]. title='скачать файл'>.$files[$i].</a> .$s
Подозреваю, что где-то здесь.
0
TheRealKos
2 / 2 / 3
Регистрация: 11.09.2011
Сообщений: 531
30.12.2013, 11:04  [ТС] 17
Цитата Сообщение от ilikesmile Посмотреть сообщение
Вы спрашиваете, где в Вашем проекте вывод информации?
Нет, просто есть функция восстановления из файла информации. А есть просто вывод информации.
Да и получается что сесионный логин заносится тогда, когда выставляется статус файла, а это не правильно же получается.
Да и проблема с ошибкой так и не решилась.

Добавлено через 6 минут
Сесионный логин так и не заносится в файл кстати

Добавлено через 31 минуту
Ну вот это все что осталось сделать, помогите пожалуйста...

Добавлено через 52 минуты
Понял похоже почему выдает ошибку. Запрос идет в цикле, и функция получается вызывается повторно из-за этого. Только вот как это избежать...

Добавлено через 2 часа 42 минуты
Переместил обе функции выше цикла, ошибки нет. Осталась одна проблема: не выводятся файлы.
Вот код:
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
<?php
ini_set('display_errors', 1);
  error_reporting(E_ALL);
// вся процедура работает на сессиях. Именно в ней хранятся данные пользователя, пока он находится на сайте. Очень важно запустить их в самом начале странички!!!
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>
<title>Архив ТЗ</title>
</head>
 
<body>
 
<table width="100%" border="0" cellspacing="5" cellpadding="0">
<tr>
<td colspan="3">
<?php include("blocks/header.php")?>
</td>
</tr>
 
<tr>
<td width="20%" valign="top">
<?php include("blocks/left_block.php")?>
</td>
<td valign="top">
 
<!--Контент сайта -->
 
<?php 
include ("bd.php");
$resource2 = mysql_query('SELECT * FROM `users` WHERE `type_users` = "Студент" ORDER by `group`',$db);
$array3 = mysql_fetch_assoc($resource2);
/**
 * 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;
 }
 
$resource= mysql_query('SELECT * FROM `users` WHERE `type_users` = "Студент" ORDER by `group`',$db); ?>
 
<table width="100%" border="1" cellspacing="1">
<caption></caption>
  <tr>
    <td colspan="4" align="center">Главная страница<br></td>
  </tr>
<tr>
      <td align="center" width="20%" height="25px" bgcolor="">Пользователи</td>
      <td align="center" width="10%" height="25px" bgcolor="">Группа</td>
      <td align="center" width="30%" height="25px" bgcolor="">Файлы</td>
      <td align="center" width="40%" height="25px" bgcolor="">Комментарий</td>
</tr>
    <?php while($array2 = mysql_fetch_assoc($resource)) : ?>
    <tr>
     <td align="center"><?php echo $array2['login']; echo ' '; echo '('; echo $array2['name']; echo ' '; echo $array2['familiya']; echo ')';  ?></td>
     <td align="center"><?php echo $array2['group']; ?></td>
 
     <td align="center"><?php    
 
     $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/".$array2["group"]."/"; //задаём имя директории $poluchatel = $array['id']; print_r($poluchatel); "upload/".$_SESSION["group"]."/".$_FILES["filename"]["name"]))   
   
      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 = '';
         } 
      }
     }
            print_r($array2["group"]);
            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"> 
            <input type="hidden" name="login" value="<?php echo $_SESSION[login]?>"></form>
            <form action="delete.php" method="post"><button name="path" value="'.$dir.$files[$i].'">Удалить файл</button></form><br>';
 
?></td>
 
 
     <td><?php 
      $page_id = 111;// Уникальный идентификатор страницы (статьи или поста)
      $name = @$_SESSION['login'];
      $poluchatel = $array2['id'];// id пользователя, для которого предназначается комментарий
      $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' AND `poluchatel` = " .$array2['id']); //Вытаскиваем все комментарии для данной страницы
 
if($result_set)
{
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 "
      <form name='comment' action='comment.php' method='post'>
       <p>    <!--  <label>Имя:</label> -->
       <!--   <input type='text' name='name' /> -->
      <input type='hidden' name='name' value='$_SESSION[login]' />
      <input type='hidden' name='id' value='$poluchatel' /></p>
      <p>
       <label>Оставить комментарий:</label>
       <br>
       <textarea name='text_comment' cols='25px' rows='1px'></textarea>
       <input type='hidden' name='page_id' value='111' />
       <input type='submit' value='Отправить' /></p>
      </form>"; ?>
    </td>
    </tr>
 
<?php endwhile; ?> 
 
</table>
<!--/Контент сайта -->
 
</td>
<td width="20%" align="center" valign="top">
 
    <?php
    // Проверяем, пусты ли переменные логина и id пользователя
    if (empty($_SESSION['login']) or empty($_SESSION['id']))
    {
    // Если пусты, то мы не выводим ссылку
    echo "Вы вошли на сайт, как гость<br><a href='reg.php'>Зарегистрироваться</a><br>
    <form action='testreg.php' method='post'><p><label>Ваш логин:<br></label>
    <input name='login' type='text' size='15' maxlength='15'></p>
    <!--**** В текстовое поле (name='login' type='text') пользователь вводит свой логин ***** -->
    <p><label>Ваш пароль:<br></label>
    <input name='password' type='password' size='15' maxlength='15'></p>
    <!--**** В поле для паролей (name='password' type='password') пользователь вводит свой пароль ***** -->
    <p><input type='submit' name='submit' value='Войти'>
    <!--**** Кнопочка (type='submit') отправляет данные на страничку testreg.php ***** -->
    </p></form>";
    }
    else
    {
    // Если не пусты, то мы выводим ссылку
    echo "Вы вошли на сайт, как <br>".$_SESSION['login']." (".$_SESSION['name']." ".$_SESSION['familiya'].") - ".$_SESSION['type_users']." <br>
    <a href=page.php?id=$_SESSION[id]>Личный кабинет</a>
 
    <br><br>
 
<a href='search.php'>ПОИСК</a>
 
    <br><br>
 
    <a href='logout.php'>Выход</a>";
 
    }
    ?> 
 
<!-- ?php include("blocks/right_block.php")?> -->
</td>
</tr>
 
<tr>
<td colspan="3">
<?php include("blocks/footer.php")?>
</td>
</tr>
 
</table>
</body>
</html>
Добавлено через 5 часов 23 минуты
Помогите плиз, последний недочет, который осталось исправить

Добавлено через 1 час 58 минут
0
30.12.2013, 11:04
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.12.2013, 11:04

Форма загрузки файлов на сервер. Как получить ссылку
Здравствуйте! Прошу помощи. Очень нужно что бы форма загрузки файлов на сервер...

Форма загрузки файлов с добавление имени в базу данных
Здравствуйте, есть форма и обработчик для загрузки файлов на сервер, подскажите...

Как можно загрузить несколько файлов на одной странице
Как можно загрузить несколько фалов на одной странице, ну к примеру как на...


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

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

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