За последние 24 часа нас посетили 15140 программистов и 1671 робот. Сейчас ищет 921 программист ...

ajax и сессии

Тема в разделе "JavaScript и AJAX", создана пользователем nikemat, 5 мар 2013.

  1. nikemat

    nikemat Guest

    делаю проверку введенной капчи с помощью ajax. сессия формируется по определенным условиям, картинка сохраняется. вопрос: как теперь прочитать сессию?

    выводим форму с капчой:
    Код (Text):
    1. <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):
    1. if(strlen($_GET["code"])==4 and $_GET["code"]!=$_SESSION["code"]){
    2. $msg="введенный код неверен!";}
     
  2. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Нда-уж ну и программист из вас.
    Да забудьте вы уже наконец, что такое каптча =)))
    Да и не мешало бы проверку делать, существует ли глобальная переменная (или другие).
     
  3. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    а когда аякс сказал, что каптча не верная, вы её не меняете, да?
     
  4. nikemat

    nikemat Guest

    во-первых, почему нужно забыть о каптче? для чего тогда её придумали и используют? и как мне объяснить это заказчику?
    во-вторых, мне несложно сделать смену каптчи с помощью аякса при неверном вводе.
    в-третьих, как умею, так и программирую. у каждого свои методы. не нужно здесь судить о том, какой из кого программист.
    существует ли глобальная переменная.. if(isset($_GET["code"])) {... } так что ли? мне нужно не наличие этой переменной как таковой, а о том, чтобы количество знаков ещё совпадало. лучше наверное запросы вообще делать методом post.
    и, суть вопроса: почему ajax не читает сессию? во всех других скриптах она видна и выводится, также проверял в tmp- она есть.
     
  5. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    что значит "не сложно"? =)
    если капча не меняется, то ее тупо будут брать перебором до победного.

    никто ничего такого не говорил. это у тебя комплексы =)

    аякс такой же запрос как и все остальные.
     
  6. siiXth

    siiXth Активный пользователь

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    http://rghost.ru/44322953
    допилять ещё нужно, количество разрешённых неправильных вариантов и т.д, но сделал так как оно должно быть.
    и мне кажется что в db.php ты тупо провтыкал session_start(); потому у тебя и сессия недоступна была
    и приучи себя в атрибутах элемента ставить кавычки
     
  7. jenya777777

    jenya777777 Активный пользователь

    С нами с:
    16 мар 2010
    Сообщения:
    562
    Симпатии:
    0
    Не могу понять зачем определять длину капчи, если у тебя и так проверка на правильность капчи и сессии.
     
  8. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Я не могу понять, зачем каптча =)
     
  9. nikemat

    nikemat Guest

    переменная code может использоваться для других условий. и только в случае с капчой она состоит из 4 цифр.
    каптча в данном проекте нужна для защиты от спама и ложных регистраций.
     
  10. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Выбросить помойка там ->
     
  11. Priler

    Priler Активный пользователь

    С нами с:
    2 мар 2013
    Сообщения:
    171
    Симпатии:
    0
    Адрес:
    New-York
    Так в чем проблема? Пусть скрипт возвращает длину и еще много чего. Сделайте формат JSON, с ним легче даже.
    Просто подумав можно решить эту задачу.
    Не скажи, капча очень нужна, могу привести пример из реальной жизни:
    У меня есть блог, который я запустил и временно забыл о нем, поскольку нет времени.
    Так вот, за пол месяца простоя тамошняя незащищенная "КАПЧЕЙ" гостевая книга накопила 1450 спам комментариев, и все это делали роботы.
    Поставил капчу и через месяц простоя на этом блоге оказалось 0 комментариев))) Роботы обломились.
    Вот в чем суть капчи. )))
     
  12. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    если это каменты, которые не проходят премодерацию, а сразу фигачатся на сайт на всеобщее обозрение - то капча обязательна, и не она одна.
     
  13. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Видимо, кто-то не знает, что такое javascript. Печалька.
     
  14. r3l0c

    r3l0c Активный пользователь

    С нами с:
    10 янв 2013
    Сообщения:
    453
    Симпатии:
    4
    +4 лишних запроса к серверу =).
    Вообще лучше было бы сделать кнопку, только повешать на нее не самбит, а отправку запроса с капчей к серверу и обработка ответа--> если капча верна - то просто самбит всей формы, если капча не верна то(php) в json возвращаем false и меняем капчу в браузере.

    А изначальный вопрос "как прочитать сессию?" вообще тут не нужен)
     
  15. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Не ну заставлять вводить тоже не хорошо)
    У ботов нет не сессий не js.

    Если сделать сложную каптчу, пользователи уйдут, скажут да ну вас вводилки эти когда все вот работает у людей ввел только логин и пароль, вошел и сделал все авторизовано, придумали тоже пароль, повторить пароль) :D

    Есть сессии для этого которые после отправки будут временно блокировать скрипт, секунд этак на 5-7, после отправки.
    Чем будет лучше еще и через javascript отследить сессию и сделать секунды без всяких там постоянных запросов на ajax через функции setTimeout, setInterval.

    Сервер считает сам а js тоже. То что сервер отдаст, отправили комментарий записали таймер, отдали в js, он тоже показывает, обновили страницу если таймер еще не закончился то, что сервер считал он в js опять отдает через переменную и все, а js показывает сколько остается и начитает отсчет.

    Тем самым вводить не будем заставлять, заставим просто подождать. =)
    И потом, как не в чем не бывало аккуратно покажем форму, для комментариев. =)

    Пора уже облегчать процесс... А не усложнять наоборот)
     
  16. r3l0c

    r3l0c Активный пользователь

    С нами с:
    10 янв 2013
    Сообщения:
    453
    Симпатии:
    4
    Сейчас у нормального ddos бота есть встроенная поддержка javascript "из коробки", скоро и спамеры запиливать в свой софт подобное начнут =)
     
  17. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    тогда и будем думать. рост крутости ботов еще не говорит о росте крутости школолольников. =) так что есть надежда.
     
  18. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    https например. Js со стороны другого сайта не умеет вроде работать с защищенным протоколам =)
    Да и вообще что ему это даст, пока сервер не выполнится продолжение работы вы не увидите, хоть боты хоть кто там пусть будет.
    Сделать вообще рандом время от 10 - 60 секунд и нормально будет, зачем штопать комменты один за другим, если вы ответ дали, подождете не переломитесь, зато вводить каптчи всякие не нужные не надо.
    Да и вообще вы уверены, что они ее не обойдут?)


    Да и нету у них session, а собственно сайт вообще не увидят.) Точно...