Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
Страницы: (2) 1 [2]  ( Перейти к первому непрочитанному сообщению )  
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Передача переменной при PHP_SELF, Потерял логику, в связи с неопытностью
arbuzmaster  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 720
Пользователь №: 37872
На форуме: 3 года, 4 месяца, 13 дней
Карма: 21




Цитата (killer8080 @ 20.10.2015 - 10:40)

где именно уточни пожалуйста, в коде отдающем страницу, или в коде генерирующем капчу?

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

session_start();
if($_POST['capthca'] == $_SESSION['code'])
{
// код авторизации
}
else
{

echo "<H3>Введен неверный код с картинки!</H3>";


}
$_SESSION['code']=rand(100,999);


--------------------
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
killer8080  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 8737
Пользователь №: 26630
На форуме: 5 лет, 9 месяцев, 7 дней
Карма: 591




Цитата (arbuzmaster @ 20.10.2015 - 11:01)
В коде отдающем страницу, что бы не было возможности проводить подбор пароля без кода капчи.


Всё еще хуже чем я думал, твоя защита обходится отключением кук в браузере, а для ботов так вообще просто находка wink.gif
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
arbuzmaster  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 720
Пользователь №: 37872
На форуме: 3 года, 4 месяца, 13 дней
Карма: 21




А как же тогда быть? Как правильно?


--------------------
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
killer8080  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 8737
Пользователь №: 26630
На форуме: 5 лет, 9 месяцев, 7 дней
Карма: 591




Правильно код генерить в коде самой капчи, хотя бы потому что нужно иметь возможность её обновлять, если пользователь не может разобрать надпись например. Проверка так

if (!empty($_POST['capthca']) && !empty($_SESSION['code']) && $_POST['capthca'] == $_SESSION['code']) {
// valid code
} else {
// invalid code
}

unset($_SESSION['code']); // исключаем повторное использование
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
arbuzmaster  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 720
Пользователь №: 37872
На форуме: 3 года, 4 месяца, 13 дней
Карма: 21




Я просто не могу понять логику, где генерируется $_SESSION['code'] (то есть код капчи) если до проверки, то получается, что коды не сойдутся если картинка уже показана пользователю.
if($_POST['capthca'] == $_SESSION['code'])

если отключить куки, как мне кажется условие не сработает, так как $_SESSION['code'] не существует, просто выдаст ошибку в логах?


--------------------
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
killer8080  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 8737
Пользователь №: 26630
На форуме: 5 лет, 9 месяцев, 7 дней
Карма: 591




Цитата (arbuzmaster @ 20.10.2015 - 11:43)
Я просто не могу понять логику, где генерируется $_SESSION['code'] (то есть код капчи)

там же где и сама капча, браузер запрашивает картинку, в этот момент код и генерируется, и хранится в сессии.
Цитата (arbuzmaster @ 20.10.2015 - 11:43)
если отключить куки, как мне кажется условие не сработает, так как $_SESSION['code'] не существует, просто выдаст ошибку в логах?

нет, $_SESSION['code'] === null, если не передавать в пост поле капчи, то $_POST['capthca'] === null, если передать пустое значение, то $_POST['capthca'] === '', в любом случае условие сработает.
var_dump(''==null); // true
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
arbuzmaster  
[x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 720
Пользователь №: 37872
На форуме: 3 года, 4 месяца, 13 дней
Карма: 21




Цитата (killer8080 @ 20.10.2015 - 12:24)
Правильно код генерить в коде самой капчи, хотя бы потому что нужно иметь возможность её обновлять, если пользователь не может разобрать надпись например. Проверка так



//Если генерировать код капчи здесь, то $_POST['capthca'] и $_SESSION['code'] не сойдутся

if (!empty($_POST['capthca']) && !empty($_SESSION['code']) && $_POST['capthca'] == $_SESSION['code']) {
// valid code Если здесь, то они тоже не сойдутся
} else {
// invalid code Если здесь, то они тоже не сойдутся
}

unset($_SESSION['code']); // исключаем повторное использование

так где же его генерировать?
Если Вы про $_SESSION['code']=rand(100,999); - не код капчи(просто перезапись $_SESSION['code'] ) - примерно тоже самое что и unset($_SESSION['code']); Может мы просто не поняли друг друга? Просто я практически не вижу отличий между моим и Вашим кодом кроме 2-х
if (!empty($_POST['capthca']) && !empty($_SESSION['code']) && $_POST['capthca'] == $_SESSION['code']) 

if($_POST['capthca'] == $_SESSION['code']) // 2 отличия


unset($_SESSION['code']); // удаление

$_SESSION['code']=rand(100,999); // перезапись 


--------------------
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
killer8080  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 8737
Пользователь №: 26630
На форуме: 5 лет, 9 месяцев, 7 дней
Карма: 591




Цитата (arbuzmaster @ 20.10.2015 - 12:29)
так где же его генерировать?

Блин вроде же по русски писал user posted image
Цитата (killer8080 @ 20.10.2015 - 11:49)
там же где и сама капча

капча это картинка генерируемая отдельным скриптом, причем тут логика проверки?
<img src="/captcha.php" />

captcha.php это и есть генератор капчи, в нем создается и код, и картинка к этому коду.
Скрипт отдающий html форму никакого отношения к капчи не имеет, ровно как и обработчик POST запроса.

Цитата (arbuzmaster @ 20.10.2015 - 12:29)
Просто я практически не вижу отличий между моим и Вашим кодом кроме 2-х
if (!empty($_POST['capthca']) && !empty($_SESSION['code']) && $_POST['capthca'] == $_SESSION['code'])

if($_POST['capthca'] == $_SESSION['code']) // 2 отличия


unset($_SESSION['code']); // удаление

ну да незначительное такое отличие, без которого твой код совершенно бесполезен user posted image
PMПисьмо на e-mail пользователю
    1   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
arbuzmaster  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 720
Пользователь №: 37872
На форуме: 3 года, 4 месяца, 13 дней
Карма: 21




Вот теперь мне все понятно! Спасибо большое что просветили! Исправлю свое условие на Ваше!


--------------------
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темыСтраницы: (2) 1 [2]  Ответ в темуСоздание новой темыСоздание опроса