Я нашел несколько ответов, таких как this good one (он использует два файла один для форм и других для обработки), и есть другие ответы с использованием внешних ресурсов (таких как базы данных или простые файлы).Предотвращение множественных представлений одной и той же формы
Что я ищу, это предотвращение нескольких представлений одной и той же формы, особенно если форма и код php находятся в одном файле и без использования внешних файлов.
Это то, что я пробовал:
<?php //fone.php
if (session_status() == PHP_SESSION_NONE) {
session_start();
}
if(isset($_SESSION['token']))
$_SESSION['prv_token']=$_SESSION['token'];
$_SESSION['token']=md5(uniqid());
?>
<html>
<head><meta charset="utf-8"><title>TEST</title></head>
<body>
<?php
if($_SERVER['REQUEST_METHOD']=='POST' && $_POST['token']==$_SESSION['prv_token']){
echo "<p>Form Submited</p>";
}
?>
<form method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF'])?>">
<input type="hidden" name="token" value="<?php echo $_SESSION['token'];?>">
Name : <input type="text" name="name"><br>
Age : <input type="text" name="age"><br>
<input type="submit" name="submit">
</form>
</body>
</htmL>
Это решение работает для меня, но код перерывы, если я использую $_SESSION['token']
в других файлах.
Итак ..... в чем ваш вопрос? – Glubus
@Glubus Предотвращение нескольких представлений одной и той же формы, в случае формы и кода php, находится в одном файле ... и без использования файлов extrnal. – BBeta
Как вы заявляете в своем вопросе, вы уже достигли этого. Вы просите альтернативы своему собственному решению? На самом деле это не место для этого. – Glubus