[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Загрузка файла на сервер
Bazon77
Здравствуйте!

Написал(с подсказками из инета) обычный хостинг картинок. При загрузке на сервер проверка на формат проходит и если формат другой от выдаёт ошибку, а при превышении размера один фиг выдаётся код якобы на эту картинку но в коде окончание всего лишь расширение файла без имени, Но картинка не загружается на сервер как и полагается. Вроди всё написал правильно.!

Помогите пожалуйста решить проблему с этим кодом.!
..

<!DOCTYPE HTML>
<?php include('config.php'); ?>
<html>
<head>
<title><?php print
$title; ?></title>
<meta
http-equiv="Content-Type" content="text/html; charset=windows-1251">
<meta
name="description" content="">
<meta
name="keywords" content="">
<link
href="style.css" rel="stylesheet" type="text/css" />
</head>
<body>

<?php

if($_SERVER['REQUEST_METHOD'] == 'POST')
{
preg_match('/\.([a-zA-Z]+?)$/', $_FILES['file']['name'], $matches);
if(in_array(strtolower($matches[1]), $accepted))
{
if($_FILES['file']['size'] <= $maxsize)
{
$newname = md5_file($_FILES['file']['tmp_name']).'.'.$matches[1];
move_uploaded_file($_FILES['file']['tmp_name'], $filedir.'/'.$newname);
$linkurl = 'http://'.$_SERVER['HTTP_HOST'].preg_replace('/\/([^\/]+?)$/', '/', $_SERVER['PHP_SELF']).'#'.$newname;
$imgurl = 'http://'.$_SERVER['HTTP_HOST'].preg_replace('/\/([^\/]+?)$/', '/', $_SERVER['PHP_SELF']).$filedir.'/'.$newname;
print '<h2>Upload Succesful!</h2>
<p>
Embed on webpages or MySpace:<br><input type="text" size="100" value=
\'<a href="'.$linkurl.'"><img src="'.$imgurl.'" alt="Image hosting by '.$title.'" />&lt/a>\'><br>
Direct link:<br><input type="text" size="100" value="'
.$imgurl.'">
</p>'
;
}

else
print '<p>Sorry, that file is too big.</p>';

}
else
print '<p>Sorry, that file type is not supported.</p>';
}
?>

<form
enctype="multipart/form-data" action="[php]<?php print preg_replace('/\/([^\/]+?)$/', '/', $_SERVER['PHP_SELF']) ?>[/php]" method="post">
<input
type="hidden" name="MAX_FILE_SIZE" value="[php]<?php print (ini_get('upload_max_filesize')>$maxsize)?ini_get('upload_max_filesize'):$maxsize; ?>[/php]">
<input
type="file" name="file" id="file"> (must not be bigger than [php]<?php print ((ini_get('upload_max_filesize')>$maxsize)?ini_get('upload_max_filesize'):$maxsize)/1024; ?>[/php] KiB)<br>
<input
name="submit" type="submit" value="Загрузить">
</form>

</body>
</html>


и собственно файл конфига

<?php
$title = 'DemoHost';
$filedir = 'pics';
$maxsize = 1024*1024; //in bytes, 1024*1024 is 1MB
$accepted = array('png', 'jpg', 'jpeg', 'gif', 'bmp');
?>




Спустя 5 минут, 42 секунды (5.12.2011 - 18:03) m4a1fox написал(а):
Bazon77
Цитата
action="
<?php print preg_replace('/\/([^\/]+?)$/', '/', $_SERVER['PHP_SELF']) ?>
"

По-моему это мазохизмом попахивает!

Спустя 2 минуты, 31 секунда (5.12.2011 - 18:06) Bazon77 написал(а):
Цитата (m4a1fox @ 5.12.2011 - 15:03)
Bazon77
Цитата
action="<pre class="sh_sourceCode" rel="php"><span class="sh_keyword"><?php</span> print <span class="sh_function">preg_replace</span><span class="sh_symbol">(</span><span class="sh_string">'/\/([^\/]+?)$/'</span><span class="sh_symbol">,</span> <span class="sh_string">'/'</span><span class="sh_symbol">,</span> <span class="sh_variable">$_SERVER</span><span class="sh_symbol">[</span><span class="sh_string">'PHP_SELF'</span><span class="sh_symbol">])</span> <span class="sh_keyword">?></span></pre>"

По-моему это мазохизмом попахивает!

Объясни!? Я не мастер php и не нужны пояснения

Спустя 47 секунд (5.12.2011 - 18:07) Bazon77 написал(а):
..поправка.. и Мне нужны пояснения

Спустя 4 минуты, 56 секунд (5.12.2011 - 18:12) m4a1fox написал(а):
Bazon77
Цитата
Объясни!?

Объясняю!
Цитата
action – в значении этого атрибута прописывается ссылка, на страницу в кот. передается форма, если обработчик формы находится на странице с самой формой, то поле action оставляем пустым.

Для начала!

Спустя 3 минуты, 39 секунд (5.12.2011 - 18:15) Bazon77 написал(а):
Да, я знаю что это не правильно и данный код будет доработан и разбит на 2 страницы, мне на данный момент нужно сделать чтоб если размер превышал допустимый, то выдавалась ошибка мол вы загружаете большой файл, что то в этом духе

Спустя 4 минуты, 1 секунда (5.12.2011 - 18:19) Winston написал(а):
Это
$linkurl = 'http://'.$_SERVER['HTTP_HOST'] . preg_replace('/\/([^\/]+?)$/', '/', $_SERVER['PHP_SELF']).'#'.$newname;

Аналогично этому
$linkurl = 'http://'.$_SERVER['HTTP_HOST'] . '/#'.$newname;

Так нафига городить велосипед ?

Атрибут action вообще пустым оставь.

Спустя 38 секунд (5.12.2011 - 18:20) m4a1fox написал(а):
<?php
error_reporting(E_ALL);
?>
в начало страницы

Спустя 3 минуты, 14 секунд (5.12.2011 - 18:23) Winston написал(а):
Цитата (Bazon77 @ 5.12.2011 - 17:15)
мне на данный момент нужно сделать чтоб если размер превышал допустимый, то выдавалась ошибка мол вы загружаете большой файл

А эта проверка разве не помогает ?
Цитата (Bazon77 @ 5.12.2011 - 16:58)
if($_FILES['file']['size'] <= $maxsize)

Спустя 2 минуты, 47 секунд (5.12.2011 - 18:26) Bazon77 написал(а):
Цитата (m4a1fox @ 5.12.2011 - 15:20)
<?php
error_reporting(E_ALL);
?>
в начало страницы

Это в начало как бы будуще страницы где код будет показываться?

Спустя 1 минута, 2 секунды (5.12.2011 - 18:27) inpost написал(а):
В начало, чтобы включить вывод ошибок! Если на странице есть ошибки, тебе это напишется.

Спустя 49 секунд (5.12.2011 - 18:28) m4a1fox написал(а):
Bazon77
Цитата
Это в начало как бы будуще страницы где код будет показываться?

Лучше, на начальном этапе во все страницы!

Спустя 2 минуты, 12 секунд (5.12.2011 - 18:30) Bazon77 написал(а):
Цитата (Winston @ 5.12.2011 - 15:23)
Цитата (Bazon77 @ 5.12.2011 - 17:15)
мне на данный момент нужно сделать чтоб если размер превышал допустимый, то выдавалась ошибка мол вы загружаете большой файл

А эта проверка разве не помогает ?
Цитата (Bazon77 @ 5.12.2011 - 16:58)
if($_FILES['file']['size'] <= $maxsize)

А ошибку не выдаёт, тестирую и фиг в ответ

Спустя 32 минуты, 39 секунд (5.12.2011 - 19:03) Bazon77 написал(а):
Ах да, забыл спросить. Хотел вот тут поинтересовать, файл, если всё удачно, то загружается в папку pics, а я хочу чтоб файл был удалён через десять дней, тобишь как сделать чтобы файл грузился не в pics, а в pcs/дата загрузки сегодняшняя/и здесь уже сам файл будет лежать, тем самым если папка уже создана то загружать в нее, если ещё нету её то создать. т.е. я захожу на сервер вижу папка была создана 10 дней назад и просто удаляю её, или это можно даже автоматизировать как то? Что то как то так

Спустя 3 минуты, 6 секунд (5.12.2011 - 19:06) Bazon77 написал(а):
.. и между делом, что обозначает это код в форме в инпуте?

<?php print (ini_get('upload_max_filesize')>$maxsize)?ini_get('upload_max_filesize'):$maxsize; ?>


_____________
Не могу поверить что мне дадуть впердолить за кражу сраной макаки, украсть макаку, знай бы я такой расклад, крал бы этих макак с сими лет..
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.