PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (3): « 1 2 [3]

> Найдено сообщений: 43
levchick Отправлено: 06 Апреля, 2011 - 09:05:53 • Тема: Борьба со спамом • Форум: Программирование на PHP

Ответов: 38
Просмотров: 2241
Zuldek пишет:
Кстати, забыл упомянуть (напомнила статья), что вместо вопросов, можно показывать посетителю фотографии или пиктограммы чтобы он написал что на них изображено (звери всякие, например). Это очень эффективный метод, оптимизированные картинки будут весить даже меньше чем картинка с текстом некоторых других капч.


Как вариант, только количество вариантов картинок должно быть достаточно большим и все же стоит контролировать количество неверных попыток.
levchick Отправлено: 06 Апреля, 2011 - 08:59:14 • Тема: Борьба со спамом • Форум: Программирование на PHP

Ответов: 38
Просмотров: 2241
Viper пишет:
Кстати изветсно что либо про рекапчу? Там вроде как картинка несложная(иногда), но что-то про её взлом не слышал ничего.


Ломали, ломали: http://www[dot]securitylab[dot]ru/news/397014.php . Вообще да, достаточно надежная система, но против индусов и китайцев тоже не выстоит Улыбка

Кстати, на счет каптчи с вопросами. Я хочу написать для себя именно такую, с элементарными вопросами аля "название планеты", но выводить вопросы не обычным текстом, а на картинке. Таким образом:
1) исключаем ситуацию накопления роботом базы вопросов по сайту
2) заставляем робота думать, что он имеет дело с обычной капчей
3) китайцы и индусы бессильны, против русского языка
Но, правда, вопрос интернализации тут снимается конечно, только русскоговорящая аудитория
levchick Отправлено: 06 Апреля, 2011 - 08:52:01 • Тема: Проверка пустой переменной! • Форум: Программирование на PHP

Ответов: 3
Просмотров: 1139
Давайте представим ситуацию, когда у вас 16 полей не заполнено, а последнее 17 заполнено, как будет работать Ваш код?

На первых 16 вариантах он выставит $check в false, потому что первые 16 не заполнены. А вот на последнем, 17-ом шаге, $check чудесным образом становиться true, потому как 17 поле то заполнено. И на выходе из цикла мы имеем $check==true и система думает, что заполнены все поля!

Вот так следует изменить код:
PHP:
скопировать код в буфер обмена
  1.  
  2. $check = TRUE;
  3.  
  4. for($i = 0; $i < count($data); $i++)
  5. {
  6.   if(empty($data[$i]) $check = FALSE;//$check это просто флажок для проверки переменной
  7. }
  8.  


В этом случае получаем, что если хотя бы одно из полей не заполнено, то $check выставиться в false, в случае если поля заполнены все, при прохождении цикла $check никак не измениться и все будет хорошо.
levchick Отправлено: 06 Апреля, 2011 - 08:46:22 • Тема: Борьба со спамом • Форум: Программирование на PHP

Ответов: 38
Просмотров: 2241
Viper пишет:
levchick пишет:
робот распознает код, примерно, в 5-10 попытках из 100
а подробней можно? А то я в своем проекте заиспользовал её как альтернативу recaptcha.


Что бы Вы хотели подробнее узнать?Улыбка

Распознавание изображений, и текста в том числе, в данный момент времени развито очень слабо. Да, есть алгоритмы распознаваний, но они, отнюдь, не 100% работоспособные.

Механизм большинства спам роботов позволяет распознавать коды с популярных каптч, но верность распознавания составляет лишь 5-6%. То есть при распознавании 100 картинок, верным будет 5-6.

А вообще, советую почитать вот эту статейку - http://www[dot]xakep[dot]ru/magazine/xa/135/044/1[dot]asp
levchick Отправлено: 06 Апреля, 2011 - 07:20:52 • Тема: одноимённые функции и require • Форум: Программирование на PHP

Ответов: 15
Просмотров: 1456
PHP:
скопировать код в буфер обмена
  1.  
  2. class Test {
  3.  
  4.   public function method1(){
  5.      include "phpscripts/phpscript1.php";
  6.   }
  7.  
  8.   public function method2(){
  9.      include "phpscripts/phpscript2.php";
  10.   }
  11.      
  12. }
  13.  


Создаете объект класса, вызываете сначала первый метод, потом второй. Таким образом, функции из скриптов будут объявлены лишь внутри метода, в котором они инклудятся, и конфликта не возникнет. Результат выполнения первого и второго скриптов можно сохранять в свойствах класса - смотрите по ситуации.
levchick Отправлено: 06 Апреля, 2011 - 07:14:33 • Тема: Борьба со спамом • Форум: Программирование на PHP

Ответов: 38
Просмотров: 2241
Почти все из существующих kcaptcha давно взломаны.

DeepVarvar пишет:
Вот эту пробовали: http://www[dot]captcha[dot]ru/kcaptcha/ ???
- эта в том числе, я пробовал ее в своих проектах.

Но, есть один нюанс: робот распознает код, примерно, в 5-10 попытках из 100. Так что одно из решений можно выделить в следущем:

1) Отслеживать кол-во неверных попыток ввода

2) Отслеживать интервал времени между попытками ввода (робот будет отсылать запросы очень часто. Человеку на переотправку формы требуется минимум секунд 3-5, робот, думаю уложиться во время, меньшее секунды)

3) Не переусердствовать с 1 и 2 пунктами, что бы не страдали реальные пользователи Улыбка

Это, конечно, не панацея, но количество спама сведет к минимуму.
levchick Отправлено: 21 Марта, 2011 - 18:55:03 • Тема: Не редактируется текст ( UPDATE ) • Форум: SQL и Архитектура БД

Ответов: 18
Просмотров: 93
Улыбка Очень рад, что проблема решена.

Все же один из огромных минусов php - это отсутствие типизации и предварительного объявления переменных, от сюда возникает множество ошибок, подобных этой...
levchick Отправлено: 21 Марта, 2011 - 16:56:34 • Тема: Не редактируется текст ( UPDATE ) • Форум: SQL и Архитектура БД

Ответов: 18
Просмотров: 93
Будем ждатьУлыбка
levchick Отправлено: 21 Марта, 2011 - 16:17:06 • Тема: Не редактируется текст ( UPDATE ) • Форум: SQL и Архитектура БД

Ответов: 18
Просмотров: 93
Viper пишет:
Учтите что UPDATE не затрагивает строки если данные не поменялись.


Все верно, но думаю в данной ситуации данные все же изменяются.
levchick Отправлено: 21 Марта, 2011 - 16:10:24 • Тема: Не редактируется текст ( UPDATE ) • Форум: SQL и Архитектура БД

Ответов: 18
Просмотров: 93
Вероятнее всего ошибка вот тут:
CODE (htmlphp):
скопировать код в буфер обмена
  1. WHERE id=".(int)($id)


Если mysql_error() не возвращает ошибки, значит ее нет => запрос выполняется, но не затрагивает ни одной строки. А значит ни к одной строке не подходит условие WHERE. Попробуйте перед выполнением запроса вывести в браузер переменную $id:

PHP:
скопировать код в буфер обмена
  1. echo $id."<br>";
  2. mysql_query("UPDATE $table SET msg='".addslashes($msgnew)."' WHERE id=".(int)($id)) or die("Ошибка запроса : " . mysql_error());



И посмотреть ее значение, возможно она у Вас не инициализирована, либо не существует строке с заданным id в таблице
levchick Отправлено: 21 Марта, 2011 - 08:47:06 • Тема: WHERE с множеством условий для 1го столбца • Форум: SQL и Архитектура БД

Ответов: 2
Просмотров: 26
Ничего удивительного в том, что запрос вернул пустой результат. Как одна и та же ячейка таблицы одновременно может равняться 10,15 и 27? В подобном запросе, думаю, уместней будет использовать or, а не and:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT `id` FROM `table` WHERE (`id`=10 OR `id`=15 OR `id`=27)


Так же советую Вам почитать про булеву логику: операторы AND, OR, NOT - их использование, приоритеты, группировки ну и т.д.
levchick Отправлено: 29 Июля, 2010 - 15:20:32 • Тема: Запись на в текстовый файл на PHP • Форум: Программирование на PHP

Ответов: 7
Просмотров: 525
Так же можно проверить заголовки посылаемые браузером (в какой кодировке выводится html код страницы). От этого зависит в какой кодировке браузер будет посылать данные методом POST (если это не Ajax конечно, там только UTF-8). Ну и соответственно когда просматриваете файл - проверить установки редактора, через который просматриваете содержимое, на предмет кодировки. Все это должно быть одинаковым.

Либо же можно принудительно конвертировать строки перед записью, например $str=iconv('UTF-8','windows-1251', $str);

Проверьте все варианты, какой нибудь да подойдет Улыбка
levchick Отправлено: 29 Июля, 2010 - 06:58:52 • Тема: Запись на в текстовый файл на PHP • Форум: Программирование на PHP

Ответов: 7
Просмотров: 525
<?php
$newline=chr(10);
$fp = fopen('message.txt', 'a');
$date = date("m.d.y").'|';
$time = date("H:i:s").'|';
fwrite($fp, $date);
fwrite($fp, $time);
fwrite($fp, $_POST['name'].'|');
fwrite($fp, $_POST['email'].'|');
fwrite($fp, $_POST['theme'].$newline);
fwrite($fp, $_POST['msg'].$newline.$newline);
fclose($fp);
?>

как то так...

Страниц (3): « 1 2 [3]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB