Прошу помочь в решении данной проблемы!
Вот код на пхп который по идее должен закынуть картинку в БД, но каждый раз выдает ошибку Вы ввели не всю информацию, заполните пожалуйста все поля для ввода!
<?php
require("include/mysql.php");
if (isset($_POST['name']))
{
$name = $_POST['name'];
}
if ($name == '')
{
unset($name);
}
if (isset($_POST['meta_d']))
{
$meta_d = $_POST['meta_d'];
}
if ($meta_d == '')
{
unset($meta_d);
}
if (isset($_POST['meta_k']))
{
$meta_k = $_POST['meta_k'];
}
if ($meta_k == '')
{
unset($meta_k);
}
if (isset($_FILES['filename']['tmp_name']))
{
$filename = $_FILES['filename']['tmp_name'];
}
if ($filename == '')
{
unset($filename);
}
if(isset($_POST['description']))
{
$description = $_POST['description'];
}
if($description == '')
{
unset($description);
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Главная | Добавить</title>
</head>
<body>
<?php
if (isset($name) && isset($meta_d) && isset($meta_k) && isset($filename) && isset($description))
{
$result = mysql_query("INSERT INTO `gallery` (`name`,`meta_d`,`meta_k`,`filename`,`description`) VALUES ('$name','$meta_d','$meta_k','$filename','$size','$description')");
if ($result == 'true')
{
echo "<p>Ваша фотография загружена успешно!</p>";
}
else
{
echo "<p>Ваша фотография не загружена!</p>";
}
}
else
{
echo "<p> Вы ввели не всю информацию, заполните пожалуйста все поля для ввода!";
}
?>
Вот собственно сама форма для ввода данных на хтмлэ:
<form name="form1" action="add_gallery.php" method="post" enctype="multipart/form-data">
<p>
<label>Введите название фотографии<br>
<input type="text" name="name" id="name">
</label>
</p>
<p>
<label>Введите краткое описание фотографии<br>
<input type="text" name="meta_d" id="meta_d">
</label>
</p>
<p>
<label>Введите ключевые слова по которым будет найден Ваш сайт через поисковую систему<br>
<input type="text" name="meta_k" id="meta_k">
</label>
</p>
<p>
<label>Введите описание фотографии<br>
<input type="text" name="description" id="description">
</label>
</p>
<p>
<label>Нажмите обзор и выбирите Вашу фотогрию:<br>
<input type="hidden" name="MAX_FILE_SIZE" value="30000">
<input type="file" name="filename" id="filename">
</label>
</p>
Что делаю не так?
Спустя 15 минут (29.11.2011 - 23:04) zerolinko написал(а):
Убрав строчку
Выводит:
Ваша фотография не загружена!
<input type="hidden" name="MAX_FILE_SIZE" value="30000">
Выводит:
Ваша фотография не загружена!
Спустя 4 минуты, 16 секунд (29.11.2011 - 23:08) Placido написал(а):
Количество и типы полей вот здесь
должны совпадать с данными вот здесь
А у вас поля size в перовом случае нет.
INSERT INTO `gallery` (`name`,`meta_d`,`meta_k`,`filename`,`description`)
должны совпадать с данными вот здесь
VALUES ('$name','$meta_d','$meta_k','$filename','$size','$description')
А у вас поля size в перовом случае нет.
Спустя 15 минут, 46 секунд (29.11.2011 - 23:24) Игорь_Vasinsky написал(а):
замечательное отображение того - как писать не нужно. Каждая строчка без исключения приносит радость.
И после долгих вычеслений, этот сногсшибательный скрипткончает с собой после долгих мучений в итоге всё решает так
И после долгих вычеслений, этот сногсшибательный скрипт
Цитата |
if ($result == 'true') |
где $result - boolean который вернулся после попытки записи в БД.
ТС. Вернуться бы к основам?
Спустя 2 минуты, 48 секунд (29.11.2011 - 23:27) zerolinko написал(а):
Спасибо Placido за помощь!
В следуйщий раз буду внимательней смотреть!
Игорь Vasinsky Вы не могли бы меня поправить и написать как нужно правильно писать?
Я новичок в этом деле и не особо понимаю структуризацию правильного кода
В следуйщий раз буду внимательней смотреть!
Игорь Vasinsky Вы не могли бы меня поправить и написать как нужно правильно писать?
Я новичок в этом деле и не особо понимаю структуризацию правильного кода
Спустя 3 минуты, 26 секунд (29.11.2011 - 23:30) Игорь_Vasinsky написал(а):
Править я ни чего не собираюсь. Спасиб за предложение.
Сам алгоритм радует. И если вы начинающий - как вы окозались рядом с БД.
Я даже не буду утруждаться - т.к. всё переписывать нужно
Первые строчки
Сам алгоритм радует. И если вы начинающий - как вы окозались рядом с БД.
Я даже не буду утруждаться - т.к. всё переписывать нужно
Первые строчки
Цитата |
if (isset($_POST['name'])) { $name = $_POST['name']; } if ($name == '') { unset($name); } |
я ввёл 1 пробел
я ввёл SQL-инъекцию, удалил БД.
Хватило 6 первых строчек.
Спустя 58 секунд (29.11.2011 - 23:31) Игорь_Vasinsky написал(а):
и по секрету для 1го условия if else {} - не обязательны, но это мелочи.
Пример простой проверки POST данных с помощью тернарного оператора + защита
всё. теперь $name - либо есть, либо NULL
можно ещё регулярками - так даже надёжней - один паттерн и проверили всё и разрешённые символы и длину.
Пропустит логин от 3 до 15 символов, все буквы, все цифры. - _ .
специально простой паттерн выбрал
Пример простой проверки POST данных с помощью тернарного оператора + защита
$name = !empty(trim($_POST['name'])) ? mysql_real_escape_string($_POST['name']) : null;
всё. теперь $name - либо есть, либо NULL
можно ещё регулярками - так даже надёжней - один паттерн и проверили всё и разрешённые символы и длину.
Пропустит логин от 3 до 15 символов, все буквы, все цифры. - _ .
if(!preg_match("#^[0-9a-zа-я\-_\.]{3,15}$#ius", $_POST['name']))
echo "Не корректно";
специально простой паттерн выбрал
Спустя 7 минут, 28 секунд (29.11.2011 - 23:39) zerolinko написал(а):
Ну что ж, спасибо, теперь буду знать!
Но если поле NULL то иньекция этого поля произойдёт в sql?
Мне нужно чтобы скрипт не выполнялся будь хотя бы одно поле не заполнено
Но если поле NULL то иньекция этого поля произойдёт в sql?
Мне нужно чтобы скрипт не выполнялся будь хотя бы одно поле не заполнено
Спустя 8 минут, 26 секунд (29.11.2011 - 23:47) Игорь_Vasinsky написал(а):
Цитата |
Но если поле NULL то иньекция этого поля произойдёт в sql? |
Инъекция это другое, почитайте в гугле.
Чтоб удостовериться что поле на NULL, достаточно
if(!$name)
exit("Не корректное имя");
есть ещё более удобные, но сложнее варианты с хранением ошибок в массиве и т.д. и не в моих правила рекомендовать использовать exit() для остановки скрипта, но для вас суть - понять логику построения работы скрипта, который проверяет данные на корректность и решает исполнять ему запись в БД в итоге или нет.
я думаю на http://irbis-team.com - вы много для себя полездного откроете ;)
Спустя 4 минуты, 11 секунд (29.11.2011 - 23:51) Игорь_Vasinsky написал(а):
Цитата |
if (isset($name) && isset($meta_d) && isset($meta_k) && isset($filename) && isset($description)) |
вот это отдельный шедевр.
и для чё вы без жалостно unset то всех???
у вас есть submit в форме, дайте ему name
и потом чтобы запустить скрипт, достаточно проверить нажата кнопка или нет
например у кнопки name name="send"
if(isset($_POST['send']))
{
//Запускайте проверку и остальное
}
вы же можете наблюдать весь POST массив строкой
echo '<pre>' . print_r($_POST, 1) . '</pre>';
здесь все ваши данные отправленные формой
Спустя 34 секунды (29.11.2011 - 23:52) m4a1fox написал(а):
Киньте человеку ссылку на ирбисе где поповщина разбирается...
Спустя 3 минуты, 8 секунд (29.11.2011 - 23:55) Игорь_Vasinsky написал(а):
да здесь больше на самодеятельность похоже. Нужно учиться. ссылка на ирбис - выше. там от А до Я, через год сложные классы писать будите.
и в моём журнале гляньте статейки.
особенно про кокатенацию в SQL запросах
и в моём журнале гляньте статейки.
особенно про кокатенацию в SQL запросах