11.05.2013 / 13:20 | |
Artorius Пользователь Сейчас: Offline
Имя: Артур Регистрация: 29.08.2012
| не знаю,что у тебя там,я бы сделал так <?php
$title=htmlspecialchars(trim($_REQUEST['title']));//Берем title
$text=htmlspecialchars(trim($_REQUEST['text']));// Берем text
$lentitle=strlen($title);//длина $title
$lentext=strlen($text);//длина $text
if(($lentitle<20)and($lentext<5000)){
//Запись в бд
}
else{
//Вывод формы и ошибки
}
?>
|
11.05.2013 / 13:31 | |
Dinisimys Пользователь Сейчас: Offline
Имя: Денис Регистрация: 30.07.2012
| Artorius, не $_REQUEST, а $_POST. Отдельные переменные для хранения длины строки не нужны, так как они тольк раз используются
|
11.05.2013 / 13:31 | |
Dinisimys Пользователь Сейчас: Offline
Имя: Денис Регистрация: 30.07.2012
| Nokia_372Oc, функцию вв-тегов мою используеш?
|
11.05.2013 / 13:39 | |
Nokia_372Oc Пользователь
| Вот весь скрипт. <?php
#error_reporting(0);
$title = htmlspecialchars
(stripslashes($_POST["title"])); //заголовок
$text = htmlspecialchars
(stripslashes($_POST["text"])); //текст
include('sys/inc/db.php'); //подключаю БД.
if( $title != "" && $text != "" )
{ /* Еле не пустые */
if( strtr($title) < 20 && strtr($text) < 5000)
{ /* то записую. */
mysql_query( "INSERT INTO
`news` SET `title` = '$title', `text` =
'$text'" );
exit(include('info.php'));
}
}
else { /* Иначе это. */
exit(include('form.php'));
}
?>
|
11.05.2013 / 13:47 | |
Nokia_372Oc Пользователь
| Artorius, я сначало проверяю не пустые ли переменные, ну а потом уже проверяю их длину.
Dinisimys, я модефецировал функцию влаволка. Твою потмом на досуге буду изучать. Так как она много данных хранит. Буду урезать. Вообщем у неё будет такая же судьба как и у функции влаволка. Модификация.
Изменено Nokia_372Oc (11.05 / 13:48) (всего 1 раз) |
11.05.2013 / 13:57 | |
Dinisimys Пользователь Сейчас: Offline
Имя: Денис Регистрация: 30.07.2012
| Вот на тебе код. Вроде должно работать. <?php
require_once '../sys/inc/db.php'; //подключаю БД.
$new=$err=false;
if(!empty($_POST['title']) and !empty($_POST['text'])) {
//trim() - удаляет все пробелы в начале и в конце строки
$title = htmlspecialchars(trim($_POST['title']));
$text = htmlspecialchars(trim($_POST['text']));
if(strlen($title)<20 and strlen($text)<5000) {
mysql_query( "INSERT INTO `news` SET `title` = '$title', `text` = '$text'");
$new=true;
require_once 'info.php';
} else $err=true;
}
if(!$new) {
if($err) echo 'Очень большое кол.символов';
require_once 'form.php';
}
?>
Если не пашет , тогда ошибки в подключаемых файлах. Нафиг файлы эти подключать? Это явно не тот случай. Файл db.php нужно подключать, а info.php и form.php встраивай в главный файл. моя функция никаких данных не хранит. Возможно код для тебя больших объемов, но она делает все что нужно. Там есть много вв-тегов + смайлы. Твои модификации приведут только к еще большему коду. Функция влаволка имеет такой баг: Если стока имеет такой вид - [b]текст, тогда на исоде будет такое - <b>текст, а это уже html-ошибка. Как ты не можешь понять? Попробуй тестануть Изменено Dinisimys (11.05 / 13:58) (всего 1 раз) |
11.05.2013 / 13:59 | |
Dinisimys Пользователь Сейчас: Offline
Имя: Денис Регистрация: 30.07.2012
| Nokia_372Oc, кстати, ты использовал функцию strtr(), вместо strlen(). Они ведь работают по разному. Хороший справочник по функциям - http://php.su |
11.05.2013 / 14:04 | |
Nokia_372Oc Пользователь
| Dinisimys (11.05.2013/13:57) Функция влаволка имеет такой баг: Если стока имеет такой вид - [b]текст, тогда на исоде будет такое - <b>текст, а это уже html-ошибка. Как ты не можешь понять? Попробуй тестануть.Выполнилось правельно. Можеш сам тестануть, адрес знаеш.
P.S. Проверю ещё в этой форме.
[b]Текст
|
11.05.2013 / 14:08 | |
Dinisimys Пользователь Сейчас: Offline
Имя: Денис Регистрация: 30.07.2012
| Nokia_372Oc, в чем правильность? Написал [b]текст , а заменило на <b>текст</b>. Это не верно. Говорю же, без регулярок не обойтись, возьими мою функцию и не тупи. Она объемом норм, и сайт твой не ляжет от нее |
11.05.2013 / 14:15 | |
Nokia_372Oc Пользователь
| Dinisimys, Заметил баг с не закрытым bb кодом. Возму твою функцию. А насщот strtr(), то я по ошибке вписал. Сейчас заменил на strlen() и больше 15 сим. не записует. Пошол ставить твою функцию.
|