Не могу получить значение из метода GET - PullRequest
1 голос
/ 04 ноября 2011

У меня есть веб-сайт со списком продуктов, и у каждого продукта есть возможность отправить некоторую информацию на адрес электронной почты с помощью простой формы.

Форма открывается в новом окне.Он состоит из одного поля ввода (для адреса электронной почты) и кнопки отправки.Пример URL: ... / send_email.php? Productid = 12345

Вот форма:

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
  <input type="text" name="youremail" value="youremail"><br /><br />
  <input type="submit" name="sendsubmit" value="Send">
</form>

Вот что я имею для отправки формы:

<?php
  if(isset($_POST['sendsubmit'])){

    $productid = $_GET['productid'];

    $youremail = $_POST['youremail'];
    $subject = "Product name";

    $email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
    if(!preg_match($email_exp,$youremail)) {
      echo 'Your email address does not appear to be valid.<br />';
    }

    mail($youremail, $subject, $productid);
  }
?>    

Проблема в том, что я не могу получить значение "productid".Что я делаю не так?

Ответы [ 5 ]

2 голосов
/ 04 ноября 2011

$_SERVER['PHP_SELF'] не включает строку запроса.Вы хотите $_SERVER['REQUEST_URI'].

0 голосов
/ 04 ноября 2011

убедитесь, что URL-адрес, вызванный с помощью submit ($ _SERVER ['PHP_SELF']), содержит? Productid = 12345

0 голосов
/ 04 ноября 2011

если весь процесс, который вы выполняете в файле send.php, используйте $_GET['productid'] перед if(isset($_POST['sendsubmit'])), как

$productid = (isset($_GET['productid'])) ? $_GET['productid'] : 'error';
0 голосов
/ 04 ноября 2011

$_SERVER['PHP_SELF'] не включает строку запроса.

Попробуйте вместо этого $_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'].

0 голосов
/ 04 ноября 2011

Что ж, вместо того, чтобы задавать этот вопрос, вам пришлось проверить HTML-код вашей формы и посмотреть, что с ним не так.
И только тогда вы можете задать вопрос: «какая переменная сервера содержит полный текущий URL».

Очень важно проверить результат вашего кода.Вы не можете быть пользователем PHP без постоянного использования такой практики.

что касается вашей конкретной проблемы - просто оставьте поле пустым :

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