делаю проверку введенной капчи с помощью ajax. сессия формируется по определенным условиям, картинка сохраняется. вопрос: как теперь прочитать сессию? выводим форму с капчой: Код (Text): <img src=images/captcha.gif?".date('s')."> Введите цифры с картинки: <input name=code onkeyup=\"$('#est').load('db.php?code='+$(this).val());\" size=4 maxlength=4><span id=est>тут будет сообщение</span> db.php Код (Text): if(strlen($_GET["code"])==4 and $_GET["code"]!=$_SESSION["code"]){ $msg="введенный код неверен!";}
Нда-уж ну и программист из вас. Да забудьте вы уже наконец, что такое каптча =))) Да и не мешало бы проверку делать, существует ли глобальная переменная (или другие).
во-первых, почему нужно забыть о каптче? для чего тогда её придумали и используют? и как мне объяснить это заказчику? во-вторых, мне несложно сделать смену каптчи с помощью аякса при неверном вводе. в-третьих, как умею, так и программирую. у каждого свои методы. не нужно здесь судить о том, какой из кого программист. существует ли глобальная переменная.. if(isset($_GET["code"])) {... } так что ли? мне нужно не наличие этой переменной как таковой, а о том, чтобы количество знаков ещё совпадало. лучше наверное запросы вообще делать методом post. и, суть вопроса: почему ajax не читает сессию? во всех других скриптах она видна и выводится, также проверял в tmp- она есть.
что значит "не сложно"? =) если капча не меняется, то ее тупо будут брать перебором до победного. никто ничего такого не говорил. это у тебя комплексы =) аякс такой же запрос как и все остальные.
http://rghost.ru/44322953 допилять ещё нужно, количество разрешённых неправильных вариантов и т.д, но сделал так как оно должно быть. и мне кажется что в db.php ты тупо провтыкал session_start(); потому у тебя и сессия недоступна была и приучи себя в атрибутах элемента ставить кавычки
Не могу понять зачем определять длину капчи, если у тебя и так проверка на правильность капчи и сессии.
переменная code может использоваться для других условий. и только в случае с капчой она состоит из 4 цифр. каптча в данном проекте нужна для защиты от спама и ложных регистраций.
Так в чем проблема? Пусть скрипт возвращает длину и еще много чего. Сделайте формат JSON, с ним легче даже. Просто подумав можно решить эту задачу. Не скажи, капча очень нужна, могу привести пример из реальной жизни: У меня есть блог, который я запустил и временно забыл о нем, поскольку нет времени. Так вот, за пол месяца простоя тамошняя незащищенная "КАПЧЕЙ" гостевая книга накопила 1450 спам комментариев, и все это делали роботы. Поставил капчу и через месяц простоя на этом блоге оказалось 0 комментариев))) Роботы обломились. Вот в чем суть капчи. )))
если это каменты, которые не проходят премодерацию, а сразу фигачатся на сайт на всеобщее обозрение - то капча обязательна, и не она одна.
+4 лишних запроса к серверу =). Вообще лучше было бы сделать кнопку, только повешать на нее не самбит, а отправку запроса с капчей к серверу и обработка ответа--> если капча верна - то просто самбит всей формы, если капча не верна то(php) в json возвращаем false и меняем капчу в браузере. А изначальный вопрос "как прочитать сессию?" вообще тут не нужен)
Не ну заставлять вводить тоже не хорошо) У ботов нет не сессий не js. Если сделать сложную каптчу, пользователи уйдут, скажут да ну вас вводилки эти когда все вот работает у людей ввел только логин и пароль, вошел и сделал все авторизовано, придумали тоже пароль, повторить пароль) Есть сессии для этого которые после отправки будут временно блокировать скрипт, секунд этак на 5-7, после отправки. Чем будет лучше еще и через javascript отследить сессию и сделать секунды без всяких там постоянных запросов на ajax через функции setTimeout, setInterval. Сервер считает сам а js тоже. То что сервер отдаст, отправили комментарий записали таймер, отдали в js, он тоже показывает, обновили страницу если таймер еще не закончился то, что сервер считал он в js опять отдает через переменную и все, а js показывает сколько остается и начитает отсчет. Тем самым вводить не будем заставлять, заставим просто подождать. =) И потом, как не в чем не бывало аккуратно покажем форму, для комментариев. =) Пора уже облегчать процесс... А не усложнять наоборот)
Сейчас у нормального ddos бота есть встроенная поддержка javascript "из коробки", скоро и спамеры запиливать в свой софт подобное начнут =)
тогда и будем думать. рост крутости ботов еще не говорит о росте крутости школолольников. =) так что есть надежда.
https например. Js со стороны другого сайта не умеет вроде работать с защищенным протоколам =) Да и вообще что ему это даст, пока сервер не выполнится продолжение работы вы не увидите, хоть боты хоть кто там пусть будет. Сделать вообще рандом время от 10 - 60 секунд и нормально будет, зачем штопать комменты один за другим, если вы ответ дали, подождете не переломитесь, зато вводить каптчи всякие не нужные не надо. Да и вообще вы уверены, что они ее не обойдут?) Да и нету у них session, а собственно сайт вообще не увидят.) Точно...