2015-11-12 3 views
2

Я пытаюсь создать форму, поля которой будут автоматически заполнены из URL-адреса. Кроме того, если пользователь нажимает «Сохранить меня на месте», он должен перенаправить в одно место, отправить электронное письмо и сохранить файлы cookie. Если пользователь нажимает «Не интересует, спасибо», он должен перенаправить его/ее в другое место, отправить электронное письмо и сохранить файлы cookie.HTML-формы, которые должны сохранять данные с помощью PHP

Теперь я не работал с PHP уже 2 года, и я многое забыл.

Вот код:

<?php 
ini_set('display_errors', 1); 
ini_set('display_startup_errors', 1); 
error_reporting(E_ALL); 
if(isset($_POST['submit'])){ 
// Fetching variables of the form which travels in URL 
$firstname = $_POST['firstname']; 
$lastname = $_POST['lastname']; 
$title = $_POST['positiontitle']; 
$company = $_POST['companyname']; 
$all = array($firstname, $lastname, $title, $company); 
if($firstname !=''&& $lastname !=''&& $title !=''&& $company !='') 
{ 
// To redirect form on a particular page 
header("Location:http://www.example.com"); 
} 
else{ 
?><span><?php echo "Please fill in all fields!";?></span> <?php 
} 
} 
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<meta content="noindex, nofollow" /> 
</head> 
<body> 
<form class="conf-form" method="POST"> 
    <legend>Please input your information:</legend><br /> 
    First name:<br> 
    <input class="fst-name" type="text" name="firstname" value="First Name"> 
    <br><br /> 
    Last name:<br> 
    <input class="lst-name" type="text" name="lastname" value="Last Name"> 
    <br /><br /> 
    Position title:<br /> 
    <input class"pos-title" type="text" name="positiontitle" value="Position Title"/> 
    <br /> <br /> 
    Company name:<br /> 
    <input class="cmp-name" type="text" name="companyname" value="Company Name"/> 
    <br /><br /> 
    <input id="save-me" type="submit" value="Save me a seat" name="submit">&nbsp;&nbsp;&nbsp;&nbsp;<input id="not-int" type="submit" value="Not interested, thank you" name="notsubmit"> 
    <br /><br /> 
    If you have any comments/questions please let us know here:<br /> 
    <textarea rows="4" cols="50"></textarea> 
</form> 
</body> 
</html> 

Это не перенаправлять, где я хочу. Для начала, как я могу это исправить?

+0

В чем проблема? – Andrius

+0

Я сделал изменения. :) Извините – super11

+0

Должны ли мы предположить, что код PHP, который вы указываете, находится в 'includes/redirect.php' и поэтому включен в нижней части HTML-файла? – RiggsFolly

ответ

3

Перенаправление не может быть выполнено после того, как вы уже отправили контент. В вашем случае, вы уже содержание HTML перед запуском header():

Помните, что заголовок() должен вызываться перед любым фактическим выходом , необходимо либо с помощью обычных HTML-тегов, пустых строк в файл, или из PHP. Это очень распространенная ошибка для чтения кода с включением или требованием, функциями или другой функцией доступа к файлам, а также пробелов или пустых строк , которые выводятся перед вызовом header(). Та же проблема существует при использовании одного файла PHP/HTML.

Этот должен инициировать ошибку, но вы, вероятно, отключили отчет об ошибках. Чтобы включить отчеты об ошибках, вам необходимо включить это в верхней части основного PHP файла, который запускается каждый раз:

ini_set('display_errors', 1); 
ini_set('display_startup_errors', 1); 
error_reporting(E_ALL); 

Это позволит вам сэкономить время при разработке.

Чтобы решить вашу проблему, вам нужно переместить файл include PHP поверх вашего содержимого HTML.

+0

Если вы помните жизненный цикл веб-страницы, PHP-код должен всегда находиться в верхней части файла и включать тест, поэтому он запускается только в том случае, если произошло какое-либо действие (нажатие кнопки). – RiggsFolly

+0

Я пробовал .. Ничего не происходит. – super11

+0

Что значит «ничего не происходит»? Вы знаете, это не помогает. Вы переместили весь свой PHP выше HTML? Вы включили отчет об ошибках? – Andrius

1

Ваш код PHP не запускается. Метод по умолчанию для form - get, в вашем коде вы пытаетесь взять что-то с HTTP POST, который никогда не получает отправки.

Чтобы решить это, вы должны либо изменить атрибут формы method, либо изменить свой PHP на использование $_GET. Я бы порекомендовал добавить method='post' в ваш тег формы. Для получения дополнительной информации ознакомьтесь с этими двумя страницами на PHP.net, $_POST и $_GET.

За то, что вы описали в своем вопросе

Я пытаюсь сделать форму, поля которой будут автоматически из URL.

Возможно, вам будет интереснее get.

Рядом с этим, почему этот код:

If you have any comments/questions please let us know here:<br /> 
<textarea rows="4" cols="50"></textarea> 

Если вы в любом случае не использовать его.Если вы собираетесь использовать его, то вы должны использовать post как ваш метод формы, видя, что URL-адрес (и поэтому get) имеет ограничение по его размеру. В любом случае вы можете добавить атрибут name в это текстовое поле.

Резюмируя

  1. Измените ваш form method на post или изменить свой PHP код $_GET
  2. Добавьте атрибут name к вашему textarea так, что он будет доступ к которой ваш код и не бесполезна
+0

спасибо, я обновлю вас. :) – super11

Смежные вопросы