Чувствительная ко времени форма
Posted in: Именованные шаблоны, By: admin, At: Июль 15th, 2008
Функции protect () и validate {) в действии
Теперь, когда мы разобрались в теории и практике проверки скрытых элементов форм, рассмотрим реальный пример. В листинге 5.5 с использованием функций protect () и validate () создается чувствительная ко времени форма, которую пользователь должен отправить в течение 5 минут.
Листинг 5.5. Чувствительная ко времени форма, использующая функции protect () И validate ()
define(’PROTECTED_KEY’, ‘mysecretword’); function my_addslashes(Sstring) (
return (get_magic_quotes_gpc() == 1) ? Sstring : addslashes(Sstring);
J ~ * .”.
function protect(Sname, Svalue, Ssecret) { Stag «■ “”;
Sseed = md5(Sname.Svalue.Ssecret); Shtml^name = Sname.”_checksum”;
Stag = “\n”; return Stag;
)
function validate(Sinput, Ssecret) | if(!is_array(Sinput)) ( return false;
I
if{!isset(Sinput['protected_list']) ss
!isset(Sinput!’protected_list_checksum’])) ( foreach(Sinput as $key=>Sval) (
if{!preg_match(”/(submit I_checksum$)/i”, Skey)) ( 5protected[] = Skey;
}
)
] else {
if (!isset (Sinput['protected_list']) |[
!isset(Sinput['protected_list_checksum'])) ( return false;
) ___^
Scheckval = ‘protected_list’ .
stripslashes(urldecode(Sinput['protected_list'])) . PROTECTED_KEY; Schecksum = md5(Scheckval);
if(Schecksum !== Sinput['protected_li5t_checksum' ]) ( return false;
I
Sprotected = unserialize(stripslashes(urldecode( Sinput['protected_list'])));
)
foreach(Sprotected as Sval) (
if{isset(Sinput[Sval."_checksum"]) ss isset(Sinput[Sval])) ( Stemp = urldecode(Sinput[Sval]);
Schecksum = md5($val.stripslashes(Stemp).PRQTECTED_KEY); if($checksum != Sinput[Sval."_checksum"])’ ( return false;
\
} else {
return false;
return true;
I
if(isset($_GET[1 submit'])) (
if(validate(sS_GET, P ROT EC ТЕ D_KE Y)) | if($_GET['time')+300 > timet)) 1
echo "Благодарим, " . S_GET['username'] . “, за своевременную отправку!”;
] else (
echo “Извините, ваше время истекло!”;
к
) else {
echo “Данные не верны!”;
}
}
$protect_str = serialize(array(’time’));
?><НТМь><НЕА0ХТ1ТЬЕ>Пример проверки скрытых элементов формы
Пожалуйста, заполните форму в течение максимум 5 минут:
Leave a Reply