У меня есть следующий код, сохраненный как send.php:

<?php
$to_email = "person@gmail.com";
$subject = $_POST['subject'];
$body = "Hi, This is test email send by PHP Script";
$headers = "From: Me@myWebsite.com";

if ( mail($to_email, $subject, $body, $headers)) {
    echo("Email successfully sent to $to_email...");
} else {
    echo("Email sending failed...");
}
?>

Письмо отправляется, если я перехожу на https://myWebsite.com/Stuff/send.php и сделать $subject = "something"

Но если я установлю $subject в качестве переменной POST. Он не отправляет тему, когда я пишу этот URL в браузере (как, например, электронное письмо все еще отправляет, но тема теперь пуста):

 https://myWebsite.com/Stuff/send.php?subject=notworking

Я ломал голову над этой проблемой и боролся пару часов. Кто-нибудь знает?

0
user4351838 3 Май 2019 в 11:11

3 ответа

Лучший ответ

Чтобы получить $_POST и $_GET, вы можете использовать $_REQUEST, который будет работать для обоих.

В вашем коде замени

$subject = $_GET['subject'];

С участием

$subject = $_REQUEST['subject'];

Если кто-то напрямую нажмет URL-адрес в браузере без указания параметра, вы можете запретить его использование.

if(!empty($_REQUEST['subject']))
{
  $to_email = "person@gmail.com";
  $subject = $_REQUEST['subject'];
  $body = "Hi, This is test email send by PHP Script";
  $headers = "From: Me@myWebsite.com";

  if ( mail($to_email, $subject, $body, $headers))
    echo("Email successfully sent to $to_email...");
  else
    echo("Email sending failed...");
}
0
Rakesh Jakhar 3 Май 2019 в 08:32

Если вы хотите извлечь значения из параметров URL, вам нужно использовать $_GET глобальная переменная, чтобы получить такие данные,

<?php
$to_email = "person@gmail.com";
$subject = $_GET['subject'];
$body = "Hi, This is test email send by PHP Script";
$headers = "From: Me@myWebsite.com";

if ( mail($to_email, $subject, $body, $headers)) {
    echo("Email successfully sent to $to_email...");
} else {
    echo("Email sending failed...");
}
?>
0
RopAli Munshi 3 Май 2019 в 08:14

Попытайся.

 <?php
    $to_email = "person@gmail.com";
    $subject = (isset($_GET['subject']) && (!empty($_GET['subject']))?$_GET['subject']:"No Subject";
    $body = "Hi, This is test email send by PHP Script";
    $headers = "From: Me@myWebsite.com";

    if ( mail($to_email, $subject, $body, $headers))
        echo("Email successfully sent to $to_email...");
    else
        echo("Email sending failed...");
?>
0
Bhavesh Patel 3 Май 2019 в 08:15