2012-06-27 5 views
0

Можно ли использовать тег «die» для ссылки на сайт ошибки, а не на текст, который отображается по умолчанию?Показать страницу с ошибкой, если Recaptcha неверна

require_once('recaptchalib.php'); 
$privatekey = "*******"; 
$resp = recaptcha_check_answer ($privatekey, 
$_SERVER["REMOTE_ADDR"], 
$_POST["recaptcha_challenge_field"], 
$_POST["recaptcha_response_field"]); 
if (!$resp->is_valid) { 
die ("The reCAPTCHA wasn't entered correctly. Go back and try it again." . 
"(reCAPTCHA said: " . $resp->error . ")"); 
} 

Как:

die ('error.php'); 

Конечно, это не работает. Но я не могу понять, как использовать тег die.

ответ

0

die() ничего, кроме печати переданного значения и остановить скрипт не может сделать, однако код уже имеет структуру, чтобы делать то, что вы хотите:

if (!$resp->is_valid) { 
    header('Location: http://example.com'); 
    die ("The reCAPTCHA wasn't entered correctly. Go back and try it again." . 
     "(reCAPTCHA said: " . $resp->error . ")"); 
} 

Обратите внимание, что если у Вас есть выход что-либо до этого кода , вам придется использовать другой метод для перенаправления, поскольку header() не будет работать после отправки заголовков (путем запуска вывода).

Стоит отметить, что вам, вероятно, было бы лучше сменить поток программы, если captcha не соответствовал, а не перенаправлял и останавливал выполнение. Если вы перенаправляете (как есть), вы теряете все данные, связанные с текущим запросом, тогда как если вы установите что-то вроде $captcha_error = true и продолжите программу (при необходимости измените поток на основе $captcha_error), вы получите лучший пользовательский интерфейс, так как вы не переустанавливая всю форму, потому что ошибка была неправильной.