Вниз  PHP и мелкие вопросы
- 11.05.2013 / 13:20
Artorius
  Пользователь

Artorius 
Сейчас: Offline
не знаю,что у тебя там,я бы сделал так
  1. <?php
  2. $title=htmlspecialchars(trim($_REQUEST['title']));//Берем title
  3. $text=htmlspecialchars(trim($_REQUEST['text']));// Берем text
  4. $lentitle=strlen($title);//длина $title
  5. $lentext=strlen($text);//длина $text
  6. if(($lentitle<20)and($lentext<5000)){
  7. //Запись в бд
  8. }
  9. else{
  10. //Вывод формы и ошибки
  11. }
  12. ?>

- 11.05.2013 / 13:31
Dinisimys
  Пользователь

Dinisimys 
Сейчас: Offline
Artorius, не $_REQUEST, а $_POST. Отдельные переменные для хранения длины строки не нужны, так как они тольк раз используются
- 11.05.2013 / 13:31
Dinisimys
  Пользователь

Dinisimys 
Сейчас: Offline
Nokia_372Oc, функцию вв-тегов мою используеш?
- 11.05.2013 / 13:39
Nokia_372Oc
  Пользователь

Nokia_372Oc 
Вот весь скрипт.
  1. <?php
  2. #error_reporting(0);
  3.  
  4.  
  5. $title = htmlspecialchars
  6. (stripslashes($_POST["title"])); //заголовок
  7.  
  8. $text = htmlspecialchars
  9. (stripslashes($_POST["text"])); //текст
  10.  
  11. include('sys/inc/db.php'); //подключаю БД.
  12.  
  13. if( $title != "" && $text != "" )
  14.   { /* Еле не пустые */
  15.     if( strtr($title) < 20 && strtr($text) < 5000)
  16.      { /* то записую. */
  17.          mysql_query( "INSERT INTO
  18. `news` SET `title` = '$title', `text` =
  19. '$text'" );
  20.  
  21. exit(include('info.php'));
  22.  
  23.    }
  24. }
  25.  
  26. else { /* Иначе это. */
  27.  
  28. exit(include('form.php'));
  29.  
  30. }
  31.  
  32. ?>

- 11.05.2013 / 13:47
Nokia_372Oc
  Пользователь

Nokia_372Oc 
Artorius, я сначало проверяю не пустые ли переменные, ну а потом уже проверяю их длину.

Dinisimys, я модефецировал функцию влаволка. Твою потмом на досуге буду изучать. Так как она много данных хранит. Буду урезать. Вообщем у неё будет такая же судьба как и у функции влаволка. Модификация.

Изменено Nokia_372Oc (11.05 / 13:48) (всего 1 раз)
- 11.05.2013 / 13:57
Dinisimys
  Пользователь

Dinisimys 
Сейчас: Offline
Вот на тебе код. Вроде должно работать.
  1. <?php
  2. require_once '../sys/inc/db.php'; //подключаю БД.
  3. $new=$err=false;
  4.  
  5. if(!empty($_POST['title']) and !empty($_POST['text'])) {
  6. //trim() - удаляет все пробелы в начале и в конце строки
  7.   $title = htmlspecialchars(trim($_POST['title']));
  8.   $text = htmlspecialchars(trim($_POST['text']));
  9.   if(strlen($title)<20 and strlen($text)<5000) {
  10.      mysql_query( "INSERT INTO `news` SET `title` = '$title', `text` = '$text'");
  11.      $new=true;
  12.      require_once 'info.php';
  13.   } else $err=true;
  14. }
  15. if(!$new) {
  16.   if($err) echo 'Очень большое кол.символов';
  17.   require_once 'form.php';
  18. }
  19. ?>
Если не пашет , тогда ошибки в подключаемых файлах.
:ps: Нафиг файлы эти подключать? Это явно не тот случай. Файл db.php нужно подключать, а info.php и form.php встраивай в главный файл.
:ps: моя функция никаких данных не хранит. Возможно код для тебя больших объемов, но она делает все что нужно. Там есть много вв-тегов + смайлы. Твои модификации приведут только к еще большему коду. Функция влаволка имеет такой баг:
Если стока имеет такой вид - [b]текст, тогда на исоде будет такое - <b>текст, а это уже html-ошибка. Как ты не можешь понять? Попробуй тестануть

Изменено Dinisimys (11.05 / 13:58) (всего 1 раз)
- 11.05.2013 / 13:59
Dinisimys
  Пользователь

Dinisimys 
Сейчас: Offline
Nokia_372Oc, кстати, ты использовал функцию strtr(), вместо strlen(). Они ведь работают по разному. Хороший справочник по функциям - http://php.su
- 11.05.2013 / 14:04
Nokia_372Oc
  Пользователь

Nokia_372Oc 
Dinisimys (11.05.2013/13:57)
Функция влаволка имеет такой баг:
Если стока имеет такой вид - [b]текст, тогда на исоде будет такое - <b>текст, а это уже html-ошибка. Как ты не можешь понять? Попробуй тестануть.
Выполнилось правельно. Можеш сам тестануть, адрес знаеш.

P.S. Проверю ещё в этой форме.

[b]Текст
- 11.05.2013 / 14:08
Dinisimys
  Пользователь

Dinisimys 
Сейчас: Offline
Nokia_372Oc, в чем правильность? Написал [b]текст , а заменило на <b>текст</b>.
Это не верно. Говорю же, без регулярок не обойтись, возьими мою функцию и не тупи. Она объемом норм, и сайт твой не ляжет от нее :)
- 11.05.2013 / 14:15
Nokia_372Oc
  Пользователь

Nokia_372Oc 
Dinisimys, Заметил баг с не закрытым bb кодом. Возму твою функцию. А насщот strtr(), то я по ошибке вписал. Сейчас заменил на strlen() и больше 15 сим. не записует. Пошол ставить твою функцию.
Наверх  Всего сообщений: 4740
Фильтровать сообщения
Поиск по теме
Файлы топика (129)