писать в текстовый файл из HTML-формы с помощью PHP

Я написал 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>