[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Загрузка файлов на сервер
Отторжение
Вообщем, есть HTML форма

<html>
<head>
<title>
Добавить в ЧС</title>
<meta
http-equiv="content-type" content="text/html;charset=utf-8" />
<link
rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<form
action="add.php" method="POST" enctype="multipart/form-data">
<TABLE>
<TR><TD
class="border0">Ник</TD><TD class="border0"><input type="text" name="addname" size="20"></TD></TR>
<TR><TD
class="border0">Профессия</TD><TD class="border0">
<SELECT
name="prof">
<option
value="kors">Корсар</option>
<option
value="inj">Инженер</option>
<option
value="naim">Наемник</option>
<option
value="stalker">Сталкер</option>
<option
value="staratel">Старатель</option>
<option
value="kinet">Пси-Кинетик</option>
<option
value="lider">Пси-Лидер</option>
<option
value="medik">Пси-Медиум</option>
<option
value="psionik">Псионик</option>
<option
value="polik">Полиморф</option>
<option
value="patrul">Патрульный</option>
<option
value="shturm">Штурмовик</option>
<option
value="spec">Специалист</option>
<option
value="torg">Торговец</option>
</SELECT></TD></TR>
<TR><TD
class="border0">Клан</TD><TD class="border0"><input type="text" name="addclan" size="20"></TD></TR>
<TR><TD
class="border0">Лог</TD><TD class="border0"><input type="file" name="addlog"></TD></TR>
<TR><TD
class="border0">Дополнительно</TD><TD class="border0"><input type="text" name="addetc"></TD></TR>
<TR><TD
class="border0">Выход</TD><TD class="border0"><input type="text" name="addexit" size="10"></TD></TR>
<TR><TD
class="border0"></TD><TD class="border0"><input type="submit" name="ok" value="Добавить"></TD></TR>
</TABLE>
</form>
</body>
</html>


И php скрипт:

<?php
$dblocation = "127.0.0.1";
$dbname = "blacklist";
$dbuser = "root";
$dbpsw = "s6evjfgy";

echo "<meta http-equiv=\"content-type\" content=\"text/html;charset=utf-8\" />
<link rel=
\"stylesheet\" type=\"text/css\" href=\"style.css\" />";

$uploaddir = "log/";

if(!empty($_POST['addname']))
if(!empty($_POST['prof']))
if(!empty($_POST['addclan']))
if(!empty($_POST['addlog']))
if(!empty($_POST['addetc']))
if(!empty($_POST['addexit']))
{
$dbconnect = mysql_connect($dblocation,$dbuser,$dbpsw) or die(mysql_error());
mysql_select_db($dbname,$dbconnect) or die(mysql_error());
mysql_query("SET NAMES 'utf8'");
$logname = substr($_POST['addlog'],0,12);
$uploadfile = $uploaddir . $_FILES['addlog']['name'];
if(move_uploaded_file($_FILES['addlog']['tmp_name'],$uploadfile))
{
$query = mysql_query("INSERT INTO `badlist`(`nickname`,`profession`,`clan`,`log`,`etc`,`exit`)
VALUES ('"
.mysql_real_escape_string($_POST['addname'])."',
'"
.mysql_real_escape_string($_POST['prof'])."',
'"
.mysql_real_escape_string($_POST['addclan'])."',
'"
.mysql_real_escape_string($logname)."',
'"
.mysql_real_escape_string($_POST['addetc'])."',
'"
.mysql_real_escape_string($_POST['addexit'])."')")
or die(mysql_error());
echo "Персонаж успешно добавлен в чёрный список";
echo "<script type=\"text/javascript\">setTimeout(history.go(-1),5000);</script>";
}else
echo "Неудачная попытка загрузки файла, попробуйте ещё раз";
}

else
echo "Введите сумму выхода";
else
echo "Введите пояснение";
else
echo "Выберите лог";
else
echo "Введите имя клана";
else
echo "Выберите профессию";
else
echo "Введите никнейм";


//header("Location: blacklist.php");
exit();

?>


И мне постоянно выбивает ошибку "Выберите лог", хотя файл я уже выбрал %) Если закоментировать проверку на наличие чего-то в 'addlog', то файл всё равно не грузится. Такое ощущение что то что я выбираю - вообще не видит

В чём может быть проблема?.



Спустя 3 минуты, 46 секунд (23.10.2010 - 15:07) inpost написал(а):
Делай проверку через:
$_FILES['addlog']['name'], вместо твоего $_POST['addlog']

Спустя 9 минут, 59 секунд (23.10.2010 - 15:17) Michael написал(а):
Вместо подобного:
if(!empty($_POST['addname']))
if(!empty($_POST['prof']))
if(!empty($_POST['addclan']))
if(!empty($_POST['addlog']))
if(!empty($_POST['addetc']))
if(!empty($_POST['addexit']))

можно сделать так:
$a1 = !empty($_POST['addname']) ? $_POST['addname'] : '';
$p1 = !empty($_POST['prof']) ? $_POST['prof'] : '';
...

if ($a1 && $p1 && ...) {
// ...
}

, хотя я бы рекомендовал isset вместо !empty

Спустя 12 минут, 51 секунда (23.10.2010 - 15:30) inpost написал(а):
Michael
Согласен, конструкция мне тоже не нравится, но в твоём варианте нельзя выбрать вывод ошибок в зависимости отсутствия какой-то из переменных.
Да и empty в данном варианте лучше, чем isset =)

Спустя 4 минуты, 3 секунды (23.10.2010 - 15:34) Отторжение написал(а):
Michael спасибо, попробуем


inpost, пытался вывести имя файла

echo $_FILES['addlog']['name'];

ничего абсолютно. система Ubuntu 10.04, может с ней не хочет работать %)

Спустя 3 минуты, 18 секунд (23.10.2010 - 15:38) Michael написал(а):
Ошибку можно потом и по другому вывести.
У empty мне именно в этом случае не нравится то, что он не пропустит 0 и также '0', хотя они могут быть допустимыми значениями.


Спустя 4 минуты, 10 секунд (23.10.2010 - 15:42) Michael написал(а):
Ты проверь в $_POST:
echo '<pre>' . print_r($_POST, true) . '</pre>';

существует ли там вообще индекс addlog
$_POST['addlog']
т.к. не факт.
и тогда это
if(!empty($_POST['addlog']))

не надо проверять.

Спустя 3 минуты, 7 секунд (23.10.2010 - 15:45) Michael написал(а):
... Я уже сам проверил - не будет ее там.
Вот это: $_POST['addlog'] поубирай.

Спустя 36 минут, 59 секунд (23.10.2010 - 16:22) Отторжение написал(а):
Убрал. А дальше что делать то?)

Спустя 3 минуты, 9 секунд (23.10.2010 - 16:25) Michael написал(а):
Ну ты использовал:
$_POST['addlog']

теперь вместо него используй:
$_FILES['addlog']['name']

Проверку:
if(!empty($_POST['addlog']))

убрал?

Спустя 1 час, 28 минут, 21 секунда (23.10.2010 - 17:53) Отторжение написал(а):
Да убрать то убрал, выдаёт ошибку о том что файл не загружен. Просто непонятно почему не хочет закидывать файл %)

Спустя 9 минут, 46 секунд (23.10.2010 - 18:03) аrvitaly написал(а):
Отторжение,

В вашем случае нужно использовать исключения

try
{
if(empty($_POST['addname']))
{
throw new Exception("Введите никнейм")
}
if(empty($_POST['prof']))
{
throw new Exception("Выберите профессию")
}
}

catch (Exception $e)
{
echo $e->getMessage
}

Спустя 57 минут, 19 секунд (23.10.2010 - 19:00) Отторжение написал(а):
аrvitalyспасибо. будем исправлять

больше пугает не проверка ошибок на ввод, а то что файл не хочет загружать %)

Спустя 9 минут, 25 секунд (23.10.2010 - 19:10) inpost написал(а):
Начни с минимума, проверь, добавляются ли фотки (скрипт даю простой):

<?php
if($_FILES['userfile']['name'] != "")
{
$allowed_filetypes = array('.jpg','.gif','.bmp','.png'); // Здесь мы перечисляем допустимые типы файлов
$max_filesize = 524288; // Максимальный размер загружаемого файла в байтах (в данном случае он равен 0.5 Мб).
$upload_path = '../img/cat/'; // Место, куда будут загружаться файлы (в данном случае это папка 'files').
$filename = $_FILES['userfile']['name']; // В переменную $filename заносим точное имя файла (включая расширение).
$ext = substr($filename, strpos($filename,'.'), strlen($filename)-1); // В переменную $ext заносим расширение загруженного файла.
if(!in_array($ext,$allowed_filetypes))
die('Данный тип файла не поддерживается.');
if(filesize($_FILES['userfile']['tmp_name']) > $max_filesize)
die('Фаил слишком большой.');
if(!is_writable($upload_path))
die('Невозможно загрузить фаил в папку. Установите права доступа - 777.');
if(move_uploaded_file($_FILES['userfile']['tmp_name'],$upload_path . $filename))
echo 'Ваш фаил успешно загружен <a href="' . $upload_path . $filename . '" target="_blank">смотреть</a>';
else
echo 'При загрузке возникли ошибки. Попробуйте ещё раз.';
}
?>
<form action="" method="post" enctype="multipart/form-data">
<
input type="file" name="userfile" id="file">
<
input type="submit" value="Загрузить фаил">
</
form>


А причиной может быть банальное отсутствие прав доступа на папку 777.

Спустя 19 минут, 27 секунд (23.10.2010 - 19:29) Отторжение написал(а):
inpost да папка /home, так что права там точно есть.

Сейчас попробую Ваш скрипт.

Мдааа, действительно понадобились права моей папке) тупизм %)

inpost спасибо)
Быстрый ответ:

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