Я написал html-форму только с полем электронной почты. Я хочу передать это письмо, которое пользователь вводит в текстовый файл на моем веб-сервере.
Когда я нажимаю кнопку отправки, я получаю белый экран. В мой текстовый файл ничего не записывается. Я также хочу перенаправить пользователя на другую страницу, когда они нажимают кнопку отправки. Это возможно? Я новичок.
<?php $file = fopen("emaillist.txt","a+"); fwrite($file,$email); fclose($file); print_r(error_get_last()); ?> <form action= "emaillist.php" method="post" name="email "> <input type="text" name="email"> <br> <br> <input type="submit" name="email" value="submit"><br>
В дополнение к тому, что Энди G сказал об изменении имени кнопки отправки:
<?php //Get the email from POST $email = $_REQUEST['email']; $file = fopen("emaillist.txt","a+"); fwrite($file,$email); print_r(error_get_last()); //redirect header("Location: http://www.example.com/");
Не оставляйте пустые строки между <?php
и началом файла, иначе перенаправление не будет работать.
Результаты представления будут сохранены в переменной $_POST
:
<?php $file = fopen("emaillist.txt","a+"); $email = $_POST['email']; fwrite($file,$email); fclose($file); print_r(error_get_last()); ?>
Попробуйте, используйте другое имя для кнопки отправки, также проверьте, была ли нажата кнопка отправки, чем запись в файл. Вы также не получили опубликованные значения email
<?php if(isset($_POST['submit'])) { $email = $_POST['email']; $file = fopen("emaillist.txt","a+"); fwrite($file,$email); fclose($file); print_r(error_get_last()); } ?> <form action= "" method="post" name="form"> <input type="text" name="email"> <br> <br> <input type="submit" name="submit" value="submit"><br> </form>
Ваша кнопка отправки и элемент ввода и форма имеют одно и то же имя «email». Первое, что нужно сделать, это дать им разные имена.
Название формы также включает дополнительное пространство «email».
В php существует массив с именем $_POST
который хранит все переменные из формы при его публикации. Таким образом, $email
будет найдена в $_POST['email']
У вас есть несколько вещей, которые вам нужно будет обновить здесь:
Элементы формы должны иметь разные имена, поэтому вы можете различать их в PHP-серверном коде. Что-то вроде этого:
<form action="emaillist.php" method="post"> <input type="text" name="email" /> <br /> <br /> <input type="submit" name="emailSubmit" value="submit" /> <br /> </form>
Вам нужно обернуть свой серверный код в условном выражении, чтобы убедиться, что это сообщение формы. В настоящее время, когда вы впервые загружаете эту страницу, она будет записываться в файл. Но контент отсутствует, пока вы снова не вернетесь на страницу с данными формы. Поэтому вам нужно проверить, является ли это сообщение формы. Обычный способ сделать это – проверить наличие кнопки отправки в данных сообщения:
if (isset($_POST["emailSubmit"])) { $file = fopen("emaillist.txt","a+"); fwrite($file,$email); fclose($file); print_r(error_get_last()); }
Просто чтобы подтвердить, так как вы говорите, что вы новичок в PHP … Вы ожидаете, что файл будет написан на сервере, а не на клиенте , правильно?
Чтобы перенаправить на другую страницу, вы можете просто задать заголовок местоположения на PHP-сервере на стороне сервера. Это необходимо сделать, прежде чем какой-либо контент будет отправлен клиенту. Поскольку вы только хотите, чтобы это произошло в событии post, оно должно быть в том же условии, что и раньше:
if (isset($_POST["emailSubmit"])) { $file = fopen("emaillist.txt","a+"); fwrite($file,$email); fclose($file); print_r(error_get_last()); header("Location: http://www.yoursite.com/newPage.php") ; }
<?php if (isset($_POST['emailSubmit'])) { $file = fopen('emaillist.txt','a+'); $email = $_POST['nail']; $fmail = $email.PHP_EOL; fwrite($file,$fmail); fclose($file); print_r(error_get_last()); header("Location: http://www.yourdomain.com/thanks.html") ; } ?> <form action='emaillist.php' method='post'> <input type='text' name ='nail' size= '30'/> <br /> <br /> <input type='submit' name='emailSubmit' value='OK'/> <br /> </form>