[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Защита комментария
AtonS
Здраствуйте.
1. Как запретить вводить в форму длинные слова и как определить количество введенных символов в форму?
2. Так же вопрос по do while. У меня выводятся новости в цикле вот так

1 Новость
2 Новость
3 Новость

А как вывести наоборот, а лучше вообще по дате.

5 февраля 2009
3 февраля 2009
1 февраля 2009

Заранее всех благодарю!



Спустя 1 час, 20 секунд (11.02.2009 - 21:39) kirik написал(а):
1. Первым делом нужно ограничить длину возможного слова на стороне пользователя путем добавления maxlength="15" в input тэг, где 15 - максимальная длина слова. Во-вторых на стороне сервера обрезать все, что больше 15 символов (в нашем случае) таким образом - $_POST['text'] = substr($_POST['text'], 0, 15);.

2. Лучше б код показал. А вообше можно "перевернуть" этот массив с помощью array_reverse();

Спустя 59 минут, 16 секунд (11.02.2009 - 22:38) AtonS написал(а):
Спасибо!
А как определить в обрабатывающем фаиле что ввели например больше 3000 символов?
Вот код. Можно без array_reverse() обойтись?

PHP
$result mysql_query("SELECT *, DATE_FORMAT(date, '%d.%m.%Y') as date FROM data WHERE id='$id'",$db);
$myrow mysql_fetch_array($result);

printf ("<p class='post_title2'>%s</p> 

<p class='post_date_aut'><span class='color_date'>Дата добавления:&nbsp;</span>%s</p>

<p class='post_date_aut'><span class='color_author'>Автор:&nbsp;</span>%s</p>  %s
 
<table width='120' border='0' cellspacing='0' cellpadding='0' align='right' class='table_com'>
        <tr>
          <td width='30'><img src='pic/comments-24.png' width='20' height='20' alt='Комментарии' title='Комментариев'/></td>
          <td>%s</td>
          <td width='30'><img src='pic/viewmag.png' width='20' height='20' alt='Просмотров'  title='Просмотров'/></td>
          <td>%s</td>
        </tr>
</table>"
$myrow['title'], $myrow['date'], $myrow['author'], $myrow['text'], $myrow['comment'], $myrow['view'] );

Спустя 7 минут, 53 секунды (11.02.2009 - 22:46) kirik написал(а):
Цитата (AtonS @ 11.02.2009 - 14:38)
А как определить в обрабатывающем фаиле что ввели например больше 3000 символов?

PHP
if(strlen($_POST['text']) > 3000)
{
     echo 
'Вы ввели больше 3к символов!';
}
else
{
     
// OK
}

Цитата (AtonS @ 11.02.2009 - 14:38)
Вот код. Можно без array_reverse() обойтись?

Вижу только вывод одной новости wink.gif

Спустя 7 минут, 15 секунд (11.02.2009 - 22:53) AtonS написал(а):
Извините это код самой новости Вот
PHP
$result mysql_query("SELECT id,title,description,date,author,mini_img,comment,view, DATE_FORMAT(date, '%d.%m.%Y') as date FROM data WHERE cat='$cat'",$db);
if(
mysql_num_rows($result) > 0){

$myrow mysql_fetch_array($result);

do{
if (!
$myrow["mini_img"]){
$myrow["mini_img"] = "http://www.rainbow43.ru/pic/no_image.gif";  
}
printf ("<br /><table align='center' class='post'>
         <tr>
         <td class='post_title'>
          <table width='120' border='0' cellspacing='0' cellpadding='0' align='right' class='table_com'>
        <tr>
          <td width='30'><img src='pic/comments-24.png' width='20' height='20' alt='Комментарии' title='Комментариев'/></td>
          <td>%s</td>
          <td width='30'><img src='pic/viewmag.png' width='20' height='20' alt='Просмотров'  title='Просмотров'/></td>
          <td>%s</td>
        </tr>
      </table>
         <p class='post_name'>
         <img src='%s' width='50' height='50' alt='Картинка' title='%s' align='left' class='mini'/>
         <a href='view_post.php?id=%s' title='%s'>%s</a> </p>
         <p class='post_adds'><span class='color_date'>Дата добавления:</span> %s</p>
         <p class='post_adds'><span class='color_author'>Автор:</span> %s</p></td>
         </tr>    
         <tr>
         <td><div class='descr'>%s</div><br/>
         </td>
         </tr>
         </table>"
$myrow["comment"], $myrow["view"], $myrow["mini_img"], $myrow["title"],$myrow["id"], $myrow["title"], $myrow["title"], $myrow["date"], $myrow["author"], $myrow["description"]);
}
while(
$myrow mysql_fetch_array($result));

Спустя 5 минут, 5 секунд (11.02.2009 - 22:58) kirik написал(а):
В конец запроса
SQL
SELECT id,title,description,date,author,mini_img,comment,view, DATE_FORMAT(date, '%d.%m.%Y') as date FROM data WHERE cat='$cat'


Нужно добавить ORDER BY `date` DESC, будет так-
SQL
SELECT id,title,description,date,author,mini_img,comment,view, DATE_FORMAT(date, '%d.%m.%Y') as date FROM data WHERE cat='$cat' ORDER BY `date` DESC

Спустя 4 минуты, 21 секунда (11.02.2009 - 23:03) AtonS написал(а):
Спасибо Вам огромное! Весь форум облазил - искал ответ. Вы всем помогаете! Мне бы дорасти до Вашего уровня! Успехов Вам во всем!

Спустя 17 минут, 29 секунд (11.02.2009 - 23:20) AtonS написал(а):
Извините. Снова побеспокою.
Если указать $_POST['text'] = substr($_POST['text'], 0, 15);
то обрезает все. А можно сделать, чтобы просто проверяло все слова в предложение и если есть длиннее 15 символов выдавало сообщение?
И как можно обрезать адрес выдоваемый $_SERVER['REMOTE_ADDR']
до www.name.ru?

Спустя 7 минут, 5 секунд (11.02.2009 - 23:27) kirik написал(а):
А.. ну выше был пост =)
PHP
if(strlen($_POST['text']) > 15)
{
     echo 'Вы ввели больше 15 символов!';
}
else
{
     // OK
}


Но мне кажется если вы ограничите колличество вводимых символов в форме, то не нужно проверять и выдавать ошибку. Нужно просто резать все лишнее, потому как если человек ввел больше, значит он пытался обойти защиту через maxlength.

Спустя 2 минуты, 42 секунды (11.02.2009 - 23:30) AtonS написал(а):
Так он считает все введенное, а каждое слово по отдельности?
И как можно обрезать адрес выдоваемый $_SERVER['REMOTE_ADDR']
до www.name.ru?

Спустя 2 минуты, 3 секунды (11.02.2009 - 23:32) kirik написал(а):
Цитата (AtonS @ 11.02.2009 - 15:20)
И как можно обрезать адрес выдоваемый $_SERVER['REMOTE_ADDR']
до www.name.ru?

parse_url() в помощь! smile.gif

Спустя 4 минуты, 52 секунды (11.02.2009 - 23:37) kirik написал(а):
Цитата (AtonS @ 11.02.2009 - 15:30)
Так он считает все введенное, а каждое слово по отдельности?

Нужно каждое слово? Хм.. тогда регулярки..

PHP
$text 'gdgdgas;ldkf;lakdsj  asdlkfjskladjfkl asdf;lkdlskf  sdklfjewjiweif ';

if(
preg_match('/\S{15,}/'$text))
{
    echo 
'Одно или больше слов превышают 15 символов.';
}
else
{
    
// OK
}

Спустя 3 минуты, 55 секунд (11.02.2009 - 23:41) AtonS написал(а):
Ну теперь вообще поклон до земли. user posted image

Спустя 14 часов, 14 минут, 39 секунд (12.02.2009 - 13:56) AtonS написал(а):
Все ОК.

Спустя 7 часов, 24 минуты, 27 секунд (12.02.2009 - 21:20) kirik написал(а):
PHP
$adres_vhoda $_SERVER['HTTP_REFERER'];
// Извлекаем имя хоста из URL 
    
preg_match("/^(http:\/\/)?([^\/]+)/i"$adres_vhoda$matches); 
     
$host $matches[2]; 
// извлекаем две последние части имени хоста 
        
preg_match("/[^\.\/]+\.[^\.\/]+$/D"$host$matches);

Это меняем на
PHP
$adres_vhoda preg_replace('/http:\/\/(www\.)?([^\/]+)(\/\S+)?/i''www.$2'$_SERVER['HTTP_REFERER']);


Это <a href='$adres_vhoda' меняем на <a href='{$_SERVER['HTTP_REFERER']}', а это {$matches[0]} меняем на {$adres_vhoda}

Вроде ничего не забыл..

Спустя 57 секунд (12.02.2009 - 21:21) kirik написал(а):
Цитата (AtonS @ 12.02.2009 - 05:56)
Все ОК.

Хорошо что сам разобрался smile.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.