Помощник
|
Пустая запись |
macbeth9
|
Сообщение
#1
|
||
|
|
||
|
|||
Mulder_hb |
27.12.2010, 13:17;
Ответить: Mulder_hb
Сообщение
#2
|
|
Сами код писали или понатаскали из разных источников, не понимая, что он делает? Зачем вы вводите массив ошибок error, если потом его нигде не обрабатываете? Зачем вы дважды проверяете на пустоту title, причем при вторая проверка сделана неверно? Естественно, ваш запрос в базу ничем не проверяется, а потому пустые значения вполне допустимы. Исправляйте код обработчика, причем кардинально.
|
|
|
LifeUP |
27.12.2010, 13:19;
Ответить: LifeUP
Сообщение
#3
|
|
форму кинь сюда. напишу обработчик
|
|
|
Nitrex |
27.12.2010, 13:20;
Ответить: Nitrex
Сообщение
#4
|
|
Попова учили?
|
|
|
LifeUP |
27.12.2010, 13:27;
Ответить: LifeUP
Сообщение
#5
|
|
а попов тут причём?
|
|
|
macbeth9
|
Сообщение
#6
|
|
<form action="" method=post enctype='multipart/form-data' name="content3">
<label>Название:<span style="color:#F00">*</span></label><input style="margin-top:10px" type=text name=title size=35 maxlength="60" value="<? echo ''.$_POST["title"].'' ?>"><BR><font style="font-size:11px;">максимально 60 знаков</font><BR><BR> <label>Текст:<span style="color:#F00">*</span></label><textarea name='content2' value="<? echo ''.$_POST["content2"].'' ?>" rows=20 cols=80 style="font-size: 11px;" ></textarea><BR><font style="font-size:11px;padding-left:150px">минимально 500 знаков</font><BR><BR> <label>Изображение:</label><input style="margin-top:10px;font-size: 11px;" type=file name=picture size=30><BR><BR> <input type="checkbox" name="chk" onClick="apply()"> <font style='font-size: 11px;'>Я подтверждаю, что данная информация точна и достоверна</font></td></tr> <input style="margin-top:10px" type=hidden name=login size=35 maxlength="70" value='<? echo $_SESSION["user"]["login"] ?>'><input type='submit' disabled style="margin:10px" name='submit' value='Добавить' class="submit"> </form> |
|
|
macbeth9
|
Сообщение
#7
|
|
Попова тут нет вообще) Mulder, я же не полностью код выложил, а вы тут сразу начинаете..через error вывожу ошибки
[PHP]<?php if($error){ echo implode($error); } ?>[/PHP] |
|
|
ZhukV |
28.12.2010, 10:17;
Ответить: ZhukV
Сообщение
#8
|
|
Ошибка возникает на 33 строке.
Я и сам когда стыкнулся с ней, думал что дуба дам. Проблема в том, что Вы назвали поле datestamp, такой же и тип есть у данных SQL. При Вашем запросе мускула просто не знает, что это. Тип данных или названия поля. В результате есть два выхода: 1. Переименовать поле. 2. При запросе, установить поле в обратные косые черты : `datestamp` Также у скрипте, есть некие ньюансы: 1. Зачем в самом начале подключатся к БД, если она может быть и не использована (Если ошибка валидации). В результате, подключайтесь только тогда, когда Вам нужно. Экономия пару сотых секунд:) 2. Если Вы данные грузите по каком то методу, то вытаскивайте их так же: $_GET, $_POST. 3. 28,29 строки зачем? И без них будет отлично работать. Вот можно так, если нужно грузить в директорию, где находится обрабатываемый файл: [PHP]$path = dirname(__FILE__)[/PHP] 4. На 22 строке, Вы просто поверяете загружаемый файл по имени, а ошибки при загрузке? Лучше проверять по значению error, если файл не был загружен, код ошибки - 4 5. Если Вы хотите проверить, является ли загружаемый файл изображением, тогда обезательно нужно проверять по миме типу, находится в переменной type (Я вот могу взять файл пхп, перейменовать его на картинку, и загрузить :) Он то конечно же обрабатыватся не будет, но на тупых серверах, можа полностью получить доступ :)) 6. На линуксах, в большинстве случаев, но только что созданных каталогах устанавливаются права 644, в результате, пользователь увидит ошибку при копировании. Лучше подавите ошибки при помощи @ и проверте, было ли скопировано. 7. 5, 11 строка, совсем не понятны. Если проверяете, есть ли что то в переменной, тогда просто проверяйте, а не делайте бог знает чего. Ваши же ресурсы и Ваше же время :): [PHP]if($content2){//Если переменная имеет значение //OR if(!$content){//Если она пуста[/PHP] Ошибки обработаны красиво, но вот вывод их? Попова тут нет вообще) Mulder, я же не полностью код выложил, а вы тут сразу начинаете..через error вывожу ошибки Следы Попова заметны, именно на проверках :) Не нужно огрызатся, а приймите к вниманию: Попов не научит!!! Научитесь сами, если захотите :), вот как многие из нас на этом форуме. |
|
|
Mulder_hb |
28.12.2010, 11:10;
Ответить: Mulder_hb
Сообщение
#9
|
|
Попова тут нет вообще) Mulder, я же не полностью код выложил, а вы тут сразу начинаете..через error вывожу ошибки А какой смысл вывода ваших ошибок, если скрипт после них продолжает работать, как ни в чем не бывало? [PHP]if (strlen($title) == 0) { $error[] = "<font style='display:block;width:90%;color:#D8000C;text-align:center;font-weight:bold;padding-bottom:5px'>Пожалуйста, введите название</font>"; }[/PHP] Допустим strlen($title) действительно равен 0. И что? Я не вижу кода, при котором произойдет останов скрипта. А вы еще удивляетесь, почему запрос проходит. А ему просто ничто не мешает выполниться. [PHP]if(($_POST['login']!=="")||($_POST['title']!=="")||($_POST['content2']!==""))[/PHP] А это зачем? Выше вы уже проверили и title, и content2 на пустоту. Зачем опять проверять? [PHP]if (isset($_REQUEST['content2'])){ $content2 = htmlspecialchars(trim($_REQUEST['content2'])); if (strlen($content2) == 0){ $error[] = "<font style='display:block;width:90%;color:#D8000C;text-align:center;font-weight:bold;padding-bottom:5px'>Пожалуйста, введите в поле текст</font>"; } } if (isset($_REQUEST['content2'])){ $content2 = htmlspecialchars(trim($_REQUEST['content2'])); if (strlen($content2) < 500){ $error[] = "<font style='display:block;width:90%;color:#D8000C;text-align:center;font-weight:bold;'>Пожалуйста, введите в поле текст более 500 символов</font>"; }}[/PHP] А зачем тут дважды проверять на одно и тоже? Достаточно лишь проверить на "меньше 500". А зачем такие дикие операционно-зависимые проверки путей? |
|
|
LifeUP |
28.12.2010, 12:30;
Ответить: LifeUP
Сообщение
#10
|
|
Форма:
<form action="" method=post enctype="multipart/form-data" name="content3"> <label style="cursor:pointer;"> Название:<span style="color:#F00">*</span> <input style="margin-top:10px" type="text" name="title" size="35" maxlength="60" value="<? echo ''.$_POST["title"].'' ?>"><font style="font-size:11px;">максимально 60 знаков</font> </label><br /><br /> <label style="cursor:pointer;"> Текст:<span style="color:#F00">*</span> <textarea name="content2" value="<? echo ''.$_POST["content2"].'' ?>" rows=20 cols=80 style="font-size: 11px;" ></textarea><font style="font-size:11px;padding-left:10px">минимально 500 знаков</font> </label><br /><br /> <label style="cursor:pointer;"> Изображение: <input style="margin-top:10px;font-size: 11px;" type="file" name="picture" size="30"> </label><br /><br /> <input type="checkbox" name="chk" onClick="apply()"> <font style='font-size: 11px;'>Я подтверждаю, что данная информация точна и достоверна</font> <input style="margin-top:10px" type="hidden" name="login" size="35" maxlength="70" value='ceqwccqe'><br /> <input type="submit" style="margin:10px" name="submit" value="Добавить" class="submit"> </form> Обработчик: [PHP] $info = ''; if (isset ($_POST['submit'])) { $title = isset ($_POST['title']) ? $_POST['title'] : ''; $content2 = isset ($_POST['content2']) ? $_POST['content2'] : ''; $login = isset ($_POST['login']) ? $_POST['login'] : ''; $picture = isset ($_FILES['picture']) ? $_FILES['picture'] : ''; $chk = isset ($_POST['chk']) ? $_POST['chk'] : ''; if ($chk != 'on') { $info = 'Подтвердите информацию'; } elseif (strlen ($title) < 3 || strlen ($title) > 150) { $info = 'Название не может быть меньше 3 и больше 150 символов'; } elseif (strlen ($content2) < 3 || strlen ($content2) > 1000) { $info = 'Титул не может быть меньше 3 и больше 150 символов'; } elseif (strlen ($login) < 3 || strlen ($login) > 20) { $info = 'тут твой код который будет реагировать на логин'; } elseif (empty ($picture['size'])) { $info = 'Выберите файл'; } if (empty ($info)) { # Папка куда будут записываться файлы $filedir = dirname (__FILE__); @copy ($picture['tmp_name'], $filedir . '/' . $picture['name']); if (@mysql_query ("INSERT INTO rasskazi (title, content2, login, picture, datetime ) VALUES ('" . $title . "', '" . $content2 . "', '" . $login . "', '" . $newimg . "', '" . time () . "')")) { $info = 'Всё путём'; } else { $info = 'Ошибка записи в БД'; } } } echo $info; [/PHP] P.S Перед применением обработай входящие данные, также проверь файл чтобы шелл не залили, ну и корректируй под себя. |
|
|
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
Как улучшить запись голоса | 0 | k0ttee | 5902 | 6.8.2020, 18:59 автор: k0ttee |
|
Переведу аудио/видио запись в текст | 0 | ByhAnka | 1512 | 28.1.2017, 22:39 автор: ByhAnka |
|
Запись массива в БД (200 RUR) | 3 | pjotr | 3494 | 7.2.2013, 15:41 автор: -A1ex- |
Текстовая версия | Сейчас: 24.4.2024, 16:32 |