2016-05-19 6 views
0

я заполнить следующую форму:PHP метод GET получает неправильные данные

<form name="frmContacto" class="form-horizontal" method="GET" action="./mail/contact_me.php"> 
    <fieldset> 
      <legend class="text-center header">Formulario de contacto</legend> 

      <div class="form-group"> 
       <span class="col-md-1 col-md-offset-2 text-center"><i 
         class="fa fa-user bigicon"></i></span> 
       <div class="col-md-8"> 
        <input id="name" name="name" type="text" placeholder="Nombre" 
          class="form-control"> 
       </div> 
      </div> 

      <div class="form-group"> 
       <span class="col-md-1 col-md-offset-2 text-center"><i 
         class="fa fa-envelope-o bigicon"></i></span> 
       <div class="col-md-8"> 
        <input id="email" name="email" type="text" placeholder="Correo electrónico" 
          class="form-control"> 
       </div> 
      </div> 

      <div class="form-group"> 
       <span class="col-md-1 col-md-offset-2 text-center"><i 
         class="fa fa-phone-square bigicon"></i></span> 
       <div class="col-md-8"> 
        <input id="phone" name="phone" type="text" placeholder="Teléfono" 
          class="form-control"> 
       </div> 
      </div> 

      <div class="form-group"> 
       <span class="col-md-1 col-md-offset-2 text-center"><i 
         class="fa fa-pencil-square-o bigicon"></i></span> 
       <div class="col-md-8"> 
        <textarea class="form-control" id="message" name="message" 
           placeholder="Introduce aquí tu mensaje." rows="7"></textarea> 
       </div> 
      </div> 

      <div class="form-group"> 
       <div class="col-md-12 text-center"> 
        <a href="mailto:[email protected]?Subject=Hello%20again" target="_top"> 
         <button type="submit" class="btn btn-primary btn-lg">Enviar</button> 
        </a> 
       </div> 
      </div> 
     </fieldset> 
    </form> 

PHP сторона:

<?php 

$name = isset($_GET['name']); 
echo $name; 
$email_address = isset($_GET['email']); 
echo $email_address; 
$phone = isset($_GET['phone']); 
echo $phone; 
$message = isset($_GET['message']); 
echo $message; 

// Create the email and send the message 
$to = '[email protected]'; // Add your email address inbetween the '' replacing [email protected] - This is where the form will send a message to. 
$email_subject = "Formulario de contacto web: $name"; 
$email_body = "Ha recibido un nuevo mensaje desde la web.\n\n" . "Detalles:\n\Nombre: $name\n\nEmail: $email_address\n\Teléfono: $phone\n\Mensaje:\n$message"; 
$headers = "From: [email protected]\n"; // This is the email address the generated message will be from. We recommend using something like [email protected] 
$headers .= "Reply-To: $email_address"; 
mail($to, $email_subject, $email_body, $headers); 
return true; 
?> 

Я думаю, что метод GET получает неверные данные, я заполнить форму с текстовыми строками, но методы эха печатаются 1: enter image description here

Если я заполняю форму настоящими строками, то почему метод эхо-печати печатает 1 для каждого поля? Кроме того, я думаю, что предупреждение состоит в том, что параметры все «1», но для меня это не имеет смысла.

ответ

2

Вы присвоили значение isset() переменной:

Определить, если переменная задана и не NULL.

Это значение будет возвращено 1, когда переменная установлена.

$name = isset($_GET['name']); 
echo $name; 
$email_address = isset($_GET['email']); 
echo $email_address; 
$phone = isset($_GET['phone']); 
echo $phone; 
$message = isset($_GET['message']); 
echo $message; 

Следующий код будет проверять, если переменная $_GET установлена, а затем присвоить его:

if (isset($_GET['name'])) { $name = $_GET['name']; 
echo $name; 
} 
if (isset($_GET['email'])) { $email_address = $_GET['email']; 
echo $email_address; 
} 
if (isset($_GET['phone'])) { $phone = $_GET['phone']; 
echo $phone; 
} 
if (isset($_GET['message'])) { $message = $_GET['message']; 
echo $message; 
} 
+1

Чтобы добавить этот ответ, вы также можете использовать '$ имя = Исеть ($ _ GET [ 'имя' ])? $ _GET ['name']: false; ' – Peter

1

Вы печатаете возвращаемое значение isset(), а не индекс массива вы testinging, чтобы увидеть, если он установлен.

$name = isset($_GET['name']); 

должно быть что-то более по линии:

$name = ""; 
if (isset($_GET['name'])) { 
    $name = $_GET['name']) 
}; 

или вы можете использовать тройной оператор:

$name = (isset($_GET['name'])) ? $_GET['name'] : ""; 
0

Ваша проблема есть:

$name = isset($_GET['name']); 
echo $name; 

Поскольку существует $ _GET, isset($_GET['name']) возвращает 1, который вы храните в $name. $name равен 1 сейчас (или true).

сделать что-то вроде

if(isset($_GET['name'])) 
{ 
    echo $_GET['name']; 
} 
0

Вы должны использовать, как показано ниже: -

if(isset($_GET['name'])) 
{ 
$name = $_GET['name']; 
} 
Смежные вопросы