<?php
//**************************************************************************
// * name: Check
// * returns:
// ***********************************************************************
session_start();
if (!empty($exit)) session_destroy();
$admin = trim($_POST['admin']);
if ($admin!=12) {
echo "Не правильно!";
error($er);
} else {
echo "Правильно!";
exit(0);
}
function error($d) {
global $attempt;
if (empty($attempt))
$attempt=1;
else $attempt++;
session_register("attempt");
check();
}
//*******************************************************
//Три попытки авторизироваться
//Вывод каптчи
//
//*********************************************************
function check() {
global $attempt;
$attempt= intval($attempt);
if ($attempt==3)
// Выводится каптча
exit(0);
}
?>
Спустя 5 минут, 58 секунд (16.03.2010 - 12:58) Игорь_Vasinsky написал(а):
блин... а какая ошибка выдаётся?
или какой результат ждёшь ?
это значительно ускорит процесс
или какой результат ждёшь ?
это значительно ускорит процесс
Спустя 3 минуты, 14 секунд (16.03.2010 - 13:01) Serg2009 написал(а):
Цитата (Игорь_Vasinsky @ 16.03.2010 - 09:58) |
блин... а какая ошибка выдаётся? или какой результат ждёшь ? это значительно ускорит процесс |
счетчик не отсчитывает количество не удачных авторизаций, после трех неудачных попыток авторизации должна вылазить каптча..
Спустя 5 минут, 11 секунд (16.03.2010 - 13:06) Игорь_Vasinsky написал(а):
$exit, $d и др. ну стока переменных, а кто это вы не говорите,
потом
if ($attempt==3) - нужно if ($attempt=3)
потом
if ($attempt==3) - нужно if ($attempt=3)
Спустя 15 минут, 21 секунда (16.03.2010 - 13:22) Serg2009 написал(а):
Цитата (Игорь_Vasinsky @ 16.03.2010 - 10:06) |
$exit, $d и др. ну стока переменных, а кто это вы не говорите, потом if ($attempt==3) - нужно if ($attempt=3) |
Изначальный код функций:
function error($er)
{
//начало нового кода
if (empty($attempt)) $attempt=1;
else $attempt++;
session_register("attempt");
//конец нового кода
//выводим сообщение об ошибке пользователю
exit(0)
}
function check()
{
//начало нового кода
Global $attempt;
$attempt= intval($attempt);
if ($attempt==3)
exit();
//конец нового кода
}
если пишу [b] if ($attempt=3)
просто выполняется код без счетчика ,т.е. все выполнилось $attempt = 1 и все
Спустя 2 часа, 28 секунд (16.03.2010 - 15:22) Игорь_Vasinsky написал(а):
если $attempt - число - integer а 3 это integer - то такое условие как == применять наверно неверно.
так как == логическая операция идентичности
а = знак равенства
вот мож ещё
заменить на
попробуй
так как == логическая операция идентичности
а = знак равенства
вот мож ещё
else $attempt++;
заменить на
else $attempt+1;
попробуй
Спустя 8 минут, 39 секунд (16.03.2010 - 15:31) Serg2009 написал(а):
Цитата (Игорь_Vasinsky @ 16.03.2010 - 12:22) |
если $attempt - число - integer а 3 это integer - то такое условие как == применять наверно неверно. так как == логическая операция идентичности а = знак равенства вот мож ещё else $attempt++; заменить на else $attempt+1; попробуй |
не помогает! ничего не пойму, логически все должно работать, а почему не работает.., может настройки php или какие то тонкости с объявлением переменных?
Спустя 2 минуты, 8 секунд (16.03.2010 - 15:33) Kuliev написал(а):
Serg2009
Где скрипт взяли?
судя по этому
Скрипт старый какговно мамонта!
Выложите весь скрипт и не забудьте сделать подсветку кода!
Где скрипт взяли?
судя по этому
session_register("attempt");
Скрипт старый как
Выложите весь скрипт и не забудьте сделать подсветку кода!
Спустя 9 минут, 10 секунд (16.03.2010 - 15:42) Serg2009 написал(а):
Цитата (Kuliev @ 16.03.2010 - 12:33) |
Serg2009 Где скрипт взяли? судя по этому
Скрипт старый как Выложите весь скрипт и не забудьте сделать подсветку кода! |
Весь скрипт состоит из 2х функций:
<?php
// Инициируем сессию
session_start();
$admin = trim($_POST['admin']);
if ($admin!=12) {
echo "Не правильно!";
error();
} else {
echo "Получилось!";
exit(0);
}
function error() {
global $attempt;
if (empty($attempt))
$attempt = 1;
else
$attempt++;
session_register("attempt");
echo $attempt;
//Вызвать проверку на количество ошибок
check ();
}
function check()
{
global $attempt;
if ($attempt==3) {
//Здесь вызов кода капчти
echo "К А П Т Ч А";
unset($_SESSION["attempt"]);
exit(0);
}
}
?>
Спустя 8 минут, 5 секунд (16.03.2010 - 15:50) Kuliev написал(а):
Serg2009
1). Заменить
session_register("attempt");
на
2). Заменить
на
А потом попробуй скрипт запусти
1). Заменить
session_register("attempt");
на
$_SESSION['attempt'];
2). Заменить
unset($_SESSION["attempt"]);
на
unset($_SESSION['attempt']);
А потом попробуй скрипт запусти
Спустя 3 минуты, 55 секунд (16.03.2010 - 15:54) Serg2009 написал(а):
Цитата (Kuliev @ 16.03.2010 - 12:50) |
Serg2009 1). Заменить session_register("attempt"); на $_SESSION['attempt']; 2). Заменить unset($_SESSION["attempt"]); на unset($_SESSION['attempt']); А потом попробуй скрипт запусти |
Заменил, не считает счетчик!
Спустя 16 минут, 28 секунд (16.03.2010 - 16:11) Игорь_Vasinsky написал(а):
смотри по этому алгоритму
функция 1
1.старт сессия
2.проверяем есть ли сессия attempt
3.Если нет - объявляем переменную attempt = 1 и преобразуем в постоянный тив через intval($attempt)
4. записываем сессию - придаём значение 1
3 Если есть сессия - читаем сессию и увеличиваем на 1, записываем сессию
функция 2
1. читаем сессию attempt если равна 3 - то показываем каптчу
функция 1
1.старт сессия
2.проверяем есть ли сессия attempt
3.Если нет - объявляем переменную attempt = 1 и преобразуем в постоянный тив через intval($attempt)
4. записываем сессию - придаём значение 1
3 Если есть сессия - читаем сессию и увеличиваем на 1, записываем сессию
функция 2
1. читаем сессию attempt если равна 3 - то показываем каптчу
Спустя 12 минут, 40 секунд (16.03.2010 - 16:23) Игорь_Vasinsky написал(а):
Ну результат то пакаж ????
Спустя 6 минут, 51 секунда (16.03.2010 - 16:30) Serg2009 написал(а):
Цитата (Игорь_Vasinsky @ 16.03.2010 - 13:23) |
Ну результат то пакаж ???? |
вот что сделал:
результат $attempt увеличилась на 1 и того 2 дальше не считает!
session_start();
$admin = trim($_POST['admin']);
if (isset ($_SESSION['attempt'])) {
$_SESSION['attempt'];
} else {
$attempt = 1;
intval($attempt);
$_SESSION['attempt'];
}
if ($admin!=12) {
echo "Не правильно!";
error();
} else {
echo "Получилось!";
exit(0);
}
function error() {
global $attempt;
if (empty($attempt))
$attempt = 1;
else
$attempt++;
$_SESSION['attempt'];
echo $attempt;
//Вызвать проверку на количество ошибок
check ();
}
function check()
{
global $attempt;
if ($attempt==3) {
//Здесь вызов кода капчти
echo "К А П Т Ч А";
unset($_SESSION['attempt']);
exit(0);
}
}
?>
Спустя 24 минуты, 16 секунд (16.03.2010 - 16:54) Игорь_Vasinsky написал(а):
function error() - прописал а не запустил
и по логике порядок функций наоборот
и по логике порядок функций наоборот
Спустя 10 минут, 39 секунд (16.03.2010 - 17:05) Serg2009 написал(а):
Цитата (Игорь_Vasinsky @ 16.03.2010 - 13:54) |
function error() - прописал а не запустил и по логике порядок функций наоборот |
как запустить функцию, не совсем понял вас? если вам не трудно могли бы вы набросать код.. в php я всего пол года, туговато пока разбираюсь!
Спустя 5 минут, 54 секунды (16.03.2010 - 17:11) Игорь_Vasinsky написал(а):
видимо так
function error();
Спустя 25 минут, 11 секунд (16.03.2010 - 17:36) twin написал(а):
Зачем $attempt сделали глобальной?
Спустя 19 минут, 37 секунд (16.03.2010 - 17:56) Игорь_Vasinsky написал(а):
я не вникал, главно чтоб алгоритм был верен
Спустя 2 минуты, 1 секунда (16.03.2010 - 17:58) twin написал(а):
Плохо, что не вникал. Вникать надо. А алгоритм не верен. Потому как избыточен.
Спустя 5 минут, 32 секунды (16.03.2010 - 18:03) Игорь_Vasinsky написал(а):
ну мой алгоритм описан в текстовом виде на 1й странице
Спустя 1 час, 14 минут, 29 секунд (16.03.2010 - 19:18) Serg2009 написал(а):
Помогите, будте так добры, если в курсе где дыра в коде!!!
Спустя 1 час, 45 минут, 11 секунд (16.03.2010 - 21:03) Serg2009 написал(а):
twin
Помогите, будте так добры, если в курсе разобраться где дыра в коде!!!
Помогите, будте так добры, если в курсе разобраться где дыра в коде!!!