<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']
$_FILES['addlog']['name'], вместо твоего $_POST['addlog']
Спустя 9 минут, 59 секунд (23.10.2010 - 15:17) Michael написал(а):
Вместо подобного:
можно сделать так:
, хотя я бы рекомендовал isset вместо !empty
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 =)
Согласен, конструкция мне тоже не нравится, но в твоём варианте нельзя выбрать вывод ошибок в зависимости отсутствия какой-то из переменных.
Да и empty в данном варианте лучше, чем isset =)
Спустя 4 минуты, 3 секунды (23.10.2010 - 15:34) Отторжение написал(а):
Michael спасибо, попробуем
inpost, пытался вывести имя файла
ничего абсолютно. система Ubuntu 10.04, может с ней не хочет работать %)
inpost, пытался вывести имя файла
echo $_FILES['addlog']['name'];
ничего абсолютно. система Ubuntu 10.04, может с ней не хочет работать %)
Спустя 3 минуты, 18 секунд (23.10.2010 - 15:38) Michael написал(а):
Ошибку можно потом и по другому вывести.
У empty мне именно в этом случае не нравится то, что он не пропустит 0 и также '0', хотя они могут быть допустимыми значениями.
У empty мне именно в этом случае не нравится то, что он не пропустит 0 и также '0', хотя они могут быть допустимыми значениями.
Спустя 4 минуты, 10 секунд (23.10.2010 - 15:42) Michael написал(а):
Ты проверь в $_POST:
существует ли там вообще индекс addlog
$_POST['addlog']
т.к. не факт.
и тогда это
не надо проверять.
echo '<pre>' . print_r($_POST, true) . '</pre>';
существует ли там вообще индекс addlog
$_POST['addlog']
т.к. не факт.
и тогда это
if(!empty($_POST['addlog']))
не надо проверять.
Спустя 3 минуты, 7 секунд (23.10.2010 - 15:45) Michael написал(а):
... Я уже сам проверил - не будет ее там.
Вот это: $_POST['addlog'] поубирай.
Вот это: $_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 написал(а):
Начни с минимума, проверь, добавляются ли фотки (скрипт даю простой):
А причиной может быть банальное отсутствие прав доступа на папку 777.
<?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 спасибо)
Сейчас попробую Ваш скрипт.
Мдааа, действительно понадобились права моей папке) тупизм %)
inpost спасибо)