|
|
|
| Как можно с помощью <input type = "file">(обзор) отправить файл? напишите пожалуйста код проги... срочно. | |
|
|
|
|
|
|
|
для: АЙКА
(30.03.2006 в 14:48)
| | index.html
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="Submit">
</form>
|
upload.php
<?php
$cat = '/files/'; // каталог для загрузки файлов
$filename = $_FILES['file']['name'];
$filesize = $_FILES['file']['size'];
$filetype = $_FILES['file']['type'];
$temp_filename = $_FILES['file']['tmp_name'];
if (!copy($temp_filename, $cat.$filename))
{
echo 'Не удалось загрузить файл!';
exit;
}
echo 'Загружен файл '.$filename.'<br>';
echo 'Размер: '$filesize.' байт<br>';
echo 'Тип: '.$filetype;
?>
|
| |
|
|
|
|
|
|
|
для: WebTech
(30.03.2006 в 17:10)
| | спасибо.
но почему то он не грузит...файл
хотя директорию я создала там же где хранится этот файл и еще он мне выводит код проги :(
незнаю че блин делать. ну ладно, хоть за это большое спасибо!!! | |
|
|
|
|
|
|
|
для: АЙКА
(31.03.2006 в 11:55)
| | Если у Вас в окне браузера появился код php, значит значит апач этот файл за скрипт не посчитал. У Вас вообще php-скрипты выполняются?
Например такой:
| |
|
|
|
|
|
|
|
для: Trianon
(31.03.2006 в 12:05)
| | да выполняются..... все скрипты
но именно вот этот не идет, что мне делать? | |
|
|
|
|
|
|
|
для: АЙКА
(31.03.2006 в 11:55)
| | Добавьте в начала скрипта конструкцию
<?php
echo "<pre>";
print_r($_FILES);
echo "</pre>";
exit();
?>
|
Что выводится в окно браузера при загрузке? Файл часом не русское имя имеет? | |
|
|
|
|
|
|
|
для: cheops
(31.03.2006 в 12:57)
| | выводит все тоже самое.... (код проги) файл имеет англ. название. | |
|
|
|
|
|
|
|
для: АЙКА
(31.03.2006 в 14:12)
| | Тоже самое - это что? | |
|
|
|
|
|
|
|
для: cheops
(31.03.2006 в 17:39)
| | спасибо! с этим я вроде бы справилась.
теперь мне нужно проверять расширение.... если .rar, .doc, .xls, .jpg загружать, иначе ошибка. | |
|
|
|
|
|
|
|
для: АЙКА
(03.04.2006 в 08:28)
| | $ext=substr($file,strrpos($file,"."));
в $ext будет всё, что после последней точки. То есть, "rar", "doc", и так далее. | |
|
|
|
|
|
|
|
для: Shorr Kan
(03.04.2006 в 09:07)
| | спасибо, а проверку делать: if ($ext != "rar" && $ext != "doc"....)......
echo 'ошибка.....'
эта вещь у меня не работает почему то.....:( | |
|
|
|
|
|
|
|
для: АЙКА
(03.04.2006 в 13:41)
| | Нет, следует проверять так
<?php
if ($ext != ".rar" || $ext != ".doc"....) exit("Ошибка...");
?>
|
а лучше вообще так
<?php
$arr = array(".rar",".doc",...);
if(!in_array($ext,$arr)) exit("Ошибка...");
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(03.04.2006 в 14:29)
| | спасибо. с массивом и правда лучше.
а как сделать чтоб размер файла не приувеличевал нормы? допустим max=5 Mb | |
|
|
|
|
|
|
|
для: АЙКА
(03.04.2006 в 14:59)
| | Надо добавить в форму
<input type="hidden" name="MAX_FILE_SIZE" value="1500000" />
| где 1500000 - предельный размер в байтах.
Файлы длинее двух мегабайт Вы всё равно врядли сможете загрузить, потому что такое ограничение обычно прописано в конфиге PHP. | |
|
|
|
|
|
|
|
для: Trianon
(03.04.2006 в 15:08)
| | спасибо. теперь мне осталось сделать.... если я отправила файл, то тот кому он пришел... мог его скачать. и как сделать так, что к сообщению прикреплен файл.... это надо пометить галочкой. помогите пожалуйста... | |
|
|
|
|
|
|
|
для: АЙКА
(04.04.2006 в 10:26)
| | А каким скриптом Вы его отправляете? | |
|
|
|
|
|
|
|
для: Trianon
(04.04.2006 в 10:44)
| | $cat = 'c:\\www\\files\\'; // Êàòàëîã äëÿ çàãðóçêè ôàéëîâ
$filename = $_FILES['file']['name'];
$filesize = $_FILES['file']['size'];
$filetype = $_FILES['file']['type'];
$temp_filename = $_FILES['file']['tmp_name'];
$ext=substr($filename,strrpos($filename,"."));
$ext=strtolower($ext);
$arr = array(".rar",".doc",".xls",".jpg",".zip",".txt",".swf",".gif",".exe",".mp3");
if(!in_array($ext,$arr)) exit("Ошибка при выборе файла!");
if (!copy($temp_filename, $cat.$filename)) //|| $ext != "rar")
{
echo 'Не удалось загрузить файл!';
exit;
}
echo 'Загружен файл: '.$filename.'<br>';
//echo 'Ðàçìåð: '.$filesize.' áàéò<br>';
//echo 'Òèï: '.$filetype.'<br>';
вот этим | |
|
|
|
|
|
|
|
для: АЙКА
(04.04.2006 в 11:32)
| | Этот скрипт лишь позволяет загрузить файл на сервер, в папку c:\www\files\
При этом ни сам файл, ни какие-либо сообщения никуда и никому с сервера не отправляются. | |
|
|
|
|
|
|
|
для: Trianon
(04.04.2006 в 11:38)
| | <?php
include("config.php");
if(!isset($_SESSION['Logged']))
{
exit('Ñòðàíèöà äîñòóïíà òîëüêî äëÿ çàðåãèñòðèðîâàííûõ ïîëüçîâàòåëåé');
}
$date = GetPostStrValue("date");
$to = GetPostStrValue("to");
$title = GetPostStrValue("title");
$messagez = GetPostStrValue("messagez");
$return = GetPostStrValue("return");
$anonym = GetPostStrValue("anonym");
if ($anonym == "1")
{
$anonym = "1";
}
else
{
$anonym = "0";
}
?><BR><BR>
<?php
//echo "<pre>";
//print_r($_FILES);
//echo "</pre>";
// exit();
$title = preg_replace("/</","<",$title);
$title = preg_replace("/>/",">",$title);
$messagez = preg_replace("/</","<",$messagez);
$messagez = preg_replace("/>/",">",$messagez);
$messagez = preg_replace("/\"/",""",$messagez);
$messagez = preg_replace("/'/",""",$messagez);
$messagez = nl2br($messagez);
$ida= uniqid('message');
$ida2= uniqid('$ida');
$nr= uniqid($ida);
$user = $_SESSION['Logged'];
$novo = "yes";
$messages = "$messagez";
$cat = 'c:\\www\\files\\'; // Êàòàëîã äëÿ çàãðóçêè ôàéëîâ
$filename = $_FILES['file']['name'];
$filesize = $_FILES['file']['size'];
$filetype = $_FILES['file']['type'];
$temp_filename = $_FILES['file']['tmp_name'];
$ext=substr($filename,strrpos($filename,"."));
$ext=strtolower($ext);
$arr = array(".rar",".doc",".xls",".jpg",".zip",".txt",".swf",".gif",".exe",".mp3");
if(!in_array($ext,$arr)) exit("Îøèáêà ïðè âûáîðå ôàéëà!");
if (!copy($temp_filename, $cat.$filename)) //|| $ext != "rar")
{
echo 'Íå óäàëîñü çàãðóçèòü ôàéë!';
exit;
}
echo 'Çàãðóæåí ôàéë: '.$filename.'<br>';
//echo 'Ðàçìåð: '.$filesize.' áàéò<br>';
//echo 'Òèï: '.$filetype.'<br>';
?>
<?php
include("config.php");
//$query = "SELECT * FROM usermessages";
$query = "INSERT INTO usermessages ('nomer', 'to', 'from', 'date', 'title', 'message', 'new', 'anonym', 'attach') VALUES ('$nr', '$to', '$user', '$date', '$title', '$messages', '$novo', '$anonym', '$filename')";
if (!@mysql_query ($query)) {
$Message = "Îøèáêà ââîäà äàííûõ";
}
else {
$Message = "Ñîîáùåíèå óñïåøíî îòïðàâëåíî.";
}
echo $Message;
?>
вот это скрипт отправляет сообщение и загружает файл.... | |
|
|
|
|
|
|
|
для: АЙКА
(04.04.2006 в 10:26)
| | Так ... картина начинает прорисовываться.
А скрипт, который показывает пользователям их обычные сообщения, т.е. сообщения без файлов, такой скрипт у Вас есть?
Только лучше его аттачем прикрепить, а не в текст ответа вставлять, а то php-код у Вас вставляется с сильными искажениями. | |
|
|
|
|
|
|
|
для: Trianon
(04.04.2006 в 12:23)
| | вот этот скрипт показывает что пришло сообщение | |
|
|
|
|
|
|
|
для: АЙКА
(04.04.2006 в 12:34)
| | $attach в последней колонке - это и есть попытка сделать ссылку на прикрепленный файл? Или attach - это что-то не имеющее отношения к загружаемым при отправке файлам? | |
|
|
|
|
|
|
|
для: Trianon
(04.04.2006 в 12:49)
| | да. он и есть "ссылка" на прикрепленный файл. | |
|
|
|
|
|
|
|
для: Trianon
(04.04.2006 в 12:23)
| | этот файл показывает все сообщения, кот есть
<?php
include("config.php");
if(!isset($_SESSION['Logged']))
{
exit('Ñòðàíèöà äîñòóïíà òîëüêî äëÿ çàðåãèñòðèðîâàííûõ ïîëüçîâàòåëåé');
}
?><BR><BR>
<center><a href="<?=$root_path?>/index.php?show=sendmessage"><?php echo $lang['sendmessage'] ?></a> | <a href="<?=$root_path?>/index.php?show=contactbook"><?php echo $lang['contactbook'] ?></a></center>
<img src="img/spacer.gif" width="440" height="1"><BR><BR>
<?php
$query = "SELECT * FROM usermessages where 'to'='".$_SESSION['Logged']."' order by id desc";
$result = mysql_query($query);
echo "<table width=\"100%\" border=\"0\">";
echo "<tr><td><b>".$lang['from']."</b></td><td><b>".$lang['messagedate']."</b></td><td><b>".$lang['messagetitle']."</b>
</td><td><b>".$lang['action']."<b></td><td>file</td></tr>";
while ($rows = mysql_fetch_array($result))
{
if ($rows['attach'] == 0){
$attach = 0;
}
else $attach = 1;
$new = $rows['new'];
$from = $rows['from'];
if ($rows['anonym'] == "0")
{
$query2 = "SELECT FirstName, LastName FROM clients where 'CardID'= '$from'";
$result2 = mysql_query($query2);
while ($rows2 = mysql_fetch_array($result2))
{
$FirstName = $rows2['FirstName'];
$LastName = substr($rows2['LastName'],0,1).".";
}
}
else
{
$FirstName = "";
$LastName = "";
}
if($new=='yes')
{
echo "<tr><td><b>".$FirstName." ".$LastName." <".$rows['from']."></b></td><td><b>".$rows['date']."</b></td><td><b><a href=\"$root_path/index.php?show=viewmessage&id=".$rows['nomer']."\">".$rows['title']."</a></b></td><td><a href=\"$root_path/index.php?show=deletemessage&id=".$rows['nomer']."\">".$lang['deletemessage']."</a></td><td>".$attach."</td></tr>";
}
else
{
echo "<tr><td>".$FirstName." ".$LastName." <".$rows['from']."></td><td>".$rows['date']."</td><td><a href=\"$root_path/index.php?show=viewmessage&id=".$rows['nomer']."\">".$rows['title']."</a></td><td><a href=\"$root_path/index.php?show=deletemessage&id=".$rows['nomer']."\">".$lang['deletemessage']."</a></td><td>".$attach."</td></tr>";
}
}
echo "</table>";
?>
|
| |
|
|
|
|
|
|
|
для: Trianon
(04.04.2006 в 12:23)
| | а этот файл, показывает содержимое сообщения
<?php
include("config.php");
if(!isset($_SESSION['Logged']))
{
exit('Ñòðàíèöà äîñòóïíà òîëüêî äëÿ çàðåãèñòðèðîâàííûõ ïîëüçîâàòåëåé');
}
$id = GetGetStrValue("id");
?><BR><BR>
<img src="img/spacer.gif" width="440" height="1">
<?php
$query = "SELECT * FROM usermessages where 'to'='".$_SESSION['Logged']."' AND 'nomer' = '$id'";
$result = mysql_query($query);
while ($rows = mysql_fetch_array($result))
{
$from = $rows['from'];
if ($rows['anonym'] == "0")
{
$query2 = "SELECT FirstName, LastName FROM clients where 'CardID'= '$from'";
$result2 = mysql_query($query2);
while ($rows2 = mysql_fetch_array($result2))
{
$FirstName = $rows2['FirstName'];
$LastName = substr($rows2['LastName'],0,1).".";
}
}
else
{
$FirstName = "";
$LastName = "";
}
echo $lang['messagetitle']." :
<b>".$rows['title']."</b> <BR> ".$lang['from']." : <b>".$FirstName." ".$LastName." <".$rows['from']."></b> | <a href=\"index.php?show=adduser&user=".$rows['from']."\">".$lang['addincontactbook']."</a> <BR>".$lang['senton']." : ".$rows['date']."
<table border=\"0\">
<tr><td>
<form action=\"$root_path/index.php?show=sendmessage\" method=\"post\">
<input type=\"hidden\" name=\"to\" value=\"".$rows['from']."\">
<input type=\"submit\" name=\"submit\" value=\"".$lang['replymessage']."\">
</form></td><td>
<form action=\"$root_path/index.php?show=deletemessage\" method=\"post\">
<input type=\"hidden\" name=\"id\" value=\"".$rows['nomer']."\">
<input type=\"submit\" value=\"".$lang['deletemessage']."\"></form></td></tr></table>
<BR><BR>".$rows['message']."<BR><BR> ";
}
print "$rows";
$query = mysql_query("select * from usermessages where 'to'='".$_SESSION['Logged']."'");
$row = mysql_fetch_array($query);
mysql_query("update usermessages set 'new'='ne' where 'nomer'='$id'");
?>
|
| |
|
|
|
|
|
|
|
для: АЙКА
(04.04.2006 в 12:47)
| | надо добавить
$attach =$rows['attach'] ;
if($attach != '')
$attach = "Attached <a target=_blank href='/files/$attach' >file</a><br>";
|
перед
echo $lang['messagetitle']."
|
а строку
<BR><BR>".$rows['message']."<BR><BR> ";
|
поменять на
<BR><BR>".$rows['message']."<BR>$attach<BR> ";
|
Но это всё в пользу бедных.
Так как файлы в базе не хранятся, то
Файлы с одинаковыми именами будут перекрывать друг друга и теряться.
Файлы не будут удаляться вместе с письмами и начнут захламлять место на диске.
Наконец, поскольку нормализованные имена файлам не назначаются, то вполне возможны попытки взлома путем игры именами файлов. | |
|
|
|
|
|
|
|
для: Trianon
(04.04.2006 в 13:13)
| | спасибо... а как сделать чтобы этот файл можно было скачать?
напишите пожалуйста скрипт по скачиванию файла... | |
|
|
|
|
|
|
|
для: АЙКА
(05.04.2006 в 09:00)
| | Здрасти. А он что - не скачивается по ссылке? | |
|
|
|
|
|
|
|
для: Trianon
(05.04.2006 в 10:47)
| | привет. нет не скачивается.... он просто просматривается в другом окне браузера.
а нет.... он скачивает тока winrar-ий формат файла. | |
|
|
|
|
|
|
|
для: АЙКА
(05.04.2006 в 10:50)
| | А надо чтобы сохранялся на диске?
И правой кнопкой по ссылке , "сохранить объект как..." недостаточно? | |
|
|
|
|
|
|
|
для: Trianon
(05.04.2006 в 10:56)
| | все я это сделала... спасибо | |
|
|
|
|
|
|
|
для: Trianon
(05.04.2006 в 10:56)
| | еще одна просьба......:) мне надо сделать удаление файла из сервера. я знаю что при помощи функции unlink, но как? помогите...плз | |
|
|
|
|
|
|
|
для: АЙКА
(06.04.2006 в 09:27)
| | В смысле, как? У этой функции нет нескольких вариантов применения. unlink("имя_файла"); | |
|
|
|
|
|
|
|
для: Trianon
(06.04.2006 в 10:13)
| | я имею в виду, надо какое то условие ставить или нет? и перед этой функцией надо соединение с базой сделать? | |
|
|
|
|
|
|
|
для: АЙКА
(06.04.2006 в 10:32)
| | А это уже зависит от того, когда именно, и какой именно файл Вы хотите удалить. | |
|
|
|
|
|
|
|
для: Trianon
(06.04.2006 в 10:57)
| | файл, который пришел вместе с сообщением. я хочу его удалить.... как мне это сделать??? | |
|
|
|
|
|
|
|
для: Trianon
(06.04.2006 в 10:57)
| | вот скрипт, который удаляет сообщение... можно ли сюда же вставить скрипт, чтоб удалялся и файл?
<?php
include("config.php");
if(!isset($_SESSION['Logged']))
{
exit('Ñòðàíèöà äîñòóïíà òîëüêî äëÿ çàðåãèñòðèðîâàííûõ ïîëüçîâàòåëåé');
}
$id = GetPostStrValue("id");
if ($id == '')
{
$id = GetGetStrValue("id");
}
?>
<BR><BR><BR>
<?php
$query = "DELETE FROM usermessages WHERE 'nomer'='$id' and 'to'='".$_SESSION['Logged']."'";
if (!@mysql_query ($query)) {
$Message = "Îøèáêà ââîäà äàííûõ";
}
else {
$Message = "Ñîîáùåíèå óäàëåíî.";
}
?>
<?php echo $Message; ?>
|
| |
|
|
|
|
|
|
|
для: АЙКА
(06.04.2006 в 11:34)
| | Как-то так...
.......
<BR><BR><BR>
<?php
$cat = 'c:/www/files/';
$query = "SELECT attach FROM usermessages WHERE 'nomer'='$id' and 'to'='".$_SESSION['Logged']."'";
$attach = '';
if (($result = @mysql_query ($query)) != 0)
$attach = mysql_result($result, 0);
if($attach != '')
unlink($cat.$attach);
$query = "DELETE FROM usermessages WHERE 'nomer'='$id' and 'to'='".$_SESSION['Logged']."'";
............
|
| |
|
|
|
|
|
|
|
для: Trianon
(06.04.2006 в 11:56)
| | Но повторю.
У Вас вполне может сложиться ситуация, когда два разных человека отправят по сообщению с файлами, у которых будет одно и то же имя. Или один человек отправит два сообщения с такими файлами. А система больше одного файла хранить не будет.
Чтобы этого избежать, Вам следует изменить именование файлов в папке files | |
|
|
|
|
|
|
|
для: Trianon
(06.04.2006 в 12:02)
| | подскажите пожалуйста как это сделать???
и еще..... в браузере выходит вот такая ошибка:
Warning: mysql_result() [function.mysql-result]: Unable to jump to row 0 on MySQL result index 36 in c:\www\messages\delmessage.php on line 21Сообщение удалено.
что это за ошибка? | |
|
|
|
|
|
|
|
для: АЙКА
(06.04.2006 в 12:43)
| | Это значит, что нету у вас такого сообщения. А диагностика - "сообщение удалено" - ложная. | |
|
|
|
|
|
|
|
для: АЙКА
(06.04.2006 в 12:43)
| | Это означает, что у вас не передан или не верен второй параметр функции mysql_result().
PS Под разные вопросы, лучше заводить разные темы - так и тему назвать проще, ссылаться на неё потому удобнее и читать интереснее. | |
|
|
|