Допустим у меня есть страница регистрацией index.php с формой : Код (Text): <form action="reg.php" method="post"> и есть страница reg.php, куда присылаются данные о регистрации и сохраняются в БД. Как сделать так, чтобы данные приходили только с index.php и посторонний человек не мог написать бота? Была идея написать в index.php форму так: Код (Text): <form action="reg.php" method="post"> ... <?php $_SESSION['key'] = $random_string; echo '<input type="hidden" name="key" value="'.$random_string.'" />'; ?> <input type="submit" value="Зарегестрироваться" /> </form> а потом в reg.php сравнивать: Код (Text): <?php if( $_SESSION['key'] != $_POST['key']) die(); ?>
случайное число (токен) в форме (хотя его можно заранее уточнить) и капча (хотя ее в теории можно проанализировать). имхо, 100% гарантии нет никогда. вешать время заполнения формы? так человек может быстро отправить после небольшого редактирования. по каждому вводу аяксить подтверждение человечности ввода? бот может делать то же самое.
думаю, не выпендриваться и делать ровно как и у всех))). примеров регистрационных форм много на просторах интернета. все в той или иной степени защищены. в конце концов на вашу защиту найдется человек, который научит бота ее обходить. если уж очень надо будет. поверьте мне.