Как создать форму PHP, которая подчиняется себе?

Как создать форму для самостоятельной публикации / самостоятельной подачи, т. Е. Форму, которая представляет результаты для себя, а не для отправки в другую форму?

Related of "Как создать форму PHP, которая подчиняется себе?"

Правильный способ – использовать $_SERVER["PHP_SELF"] (в сочетании с htmlspecialchars чтобы избежать возможных эксплойтов). Вы также можете просто пропустить action= part empty, который не является W3C действительным, но в настоящее время работает в большинстве (всех?) Браузеров – по умолчанию это отправляться в self, если он пуст.

Вот пример формы, которая берет имя и адрес электронной почты, а затем отображает значения, которые вы ввели при отправке:

 <?php if (!empty($_POST)): ?> Welcome, <?php echo htmlspecialchars($_POST["name"]); ?>!<br> Your email is <?php echo htmlspecialchars($_POST["email"]); ?>.<br> <?php else: ?> <form action=<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?> method="post"> Name: <input type="text" name="name"><br> Email: <input type="text" name="email"><br> <input type="submit"> </form> <?php endif; ?> 

Думаю, вы имеете в виду $_SERVER['PHP_SELF'] . И если это так, вы действительно не должны использовать его, не дезинфицируя его в первую очередь. Это позволяет вам открывать атаки XSS.

Условие if(isset($_POST['submit'])) должно быть выше всего вывода HTML и должно содержать функцию header() с повторным перенаправлением на текущую страницу (только теперь, с некоторым замечанием, что «электронные письма имеют был отправлен ".. или что-то). Для этого вам придется использовать $_SESSION или $_COOKIE .

И, пожалуйста. Прекратите использование $_REQUEST . Это также создает угрозу безопасности.

Это будет работать, только если register_globals включен, и он никогда не должен быть включен (если, конечно, вы не определяете эту переменную где-то еще).

Попробуйте установить атрибут action ?

 <form method="post" action="?"> ... </form> 

Вы также можете установить его как пустую ( "" ), но старые версии WebKit имели ошибку .

У вашей кнопки отправки нет имени. Добавьте имя = "отправить" на кнопку отправки.

Если вы просмотрите источник в форме в браузере, вы увидите, как он подчиняется себе: атрибут действия формы будет содержать имя текущего скрипта – поэтому, когда форма отправляется, она отправляется сама по себе. Править ради суеты!

  1. изменение
    <input type="submit" value="Submit" />
    в
    <input type="submit" value="Submit" name='submit'/>

  2. изменение
    <form method="post" action="<?php echo $PHP_SELF;?>">
    в
    <form method="post" action="">

  3. Он будет выполнять код, if только когда он будет отправлен.
  4. Он всегда будет показывать форму (html-код).
  5. Каков ваш вопрос?

Попробуй это

<form method="post" id="reg" name="reg" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>"

Работает хорошо 🙂