Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP mail()函数$email和$name变量不起作用,但$message和$subject起作用_Php_Email_Variables - Fatal编程技术网

PHP mail()函数$email和$name变量不起作用,但$message和$subject起作用

PHP mail()函数$email和$name变量不起作用,但$message和$subject起作用,php,email,variables,Php,Email,Variables,提前感谢您的阅读 我有一个部分工作的电子邮件功能:当我在电子邮件地址中硬编码时,它确实会发送一封带有正确消息、主题和标题的电子邮件。上面的SQL插入工作正常,因此我知道它正在将所有变量正确地保存到数据库中 但是,它不会通过$email、$first\u names或$pass variables发送。它们在邮件中显示为空白,$email在邮件($email等)功能中不起作用。现在,mail()仅在我硬编码电子邮件时有效 PHP文件中的代码: $email = $_POST['email']; $

提前感谢您的阅读

我有一个部分工作的电子邮件功能:当我在电子邮件地址中硬编码时,它确实会发送一封带有正确消息、主题和标题的电子邮件。上面的SQL插入工作正常,因此我知道它正在将所有变量正确地保存到数据库中

但是,它不会通过
$email
$first\u names
$pass variables
发送。它们在邮件中显示为空白,$email在邮件(
$email
等)功能中不起作用。现在,
mail()
仅在我硬编码电子邮件时有效

PHP文件中的代码:

$email = $_POST['email'];
$first_names = str_replace("'","",$_POST['fname']);
$last_names = str_replace("'","",$_POST['lname']);
$password = $_POST['password'];
$user_type = 2;
$status = 1;
$last_login = '0000-00-00 00:00:00';
$sql_insert = "INSERT INTO `cb_sub_users` (`id`, `email`, `password`, `firstName`, `lastName`, `user_type`, `super_user`, `last_login`, `status`) VALUES (NULL, '$email', '$password', '$first_names', '$last_names', '$user_type', '$super_user_id', '$last_login', '1');";
$check_user = mysql_num_rows(mysql_query("SELECT * FROM `cb_sub_users` WHERE email='".$email."'"));

$message = 'Hi, ' + $first_names + '! Your team has invited you to join Our Site. Your username is ' . $email . ' and your password is ' . $password . '. Log in at blank for analytics you will actually use. If you have any questions, get in touch at help@help.com.';
$subject = 'Welcome to Our Site';
$headers = array("From: help@help.com",
"Reply-To: help@help.com",
"X-Mailer: PHP/" . PHP_VERSION );
$headers = implode("\r\n", $headers);
$body = "From: $name\n E-Mail: $email\n Message:\n $message";

mail('myhardcoded@email.com', $subject, $message, $headers);
ini_set("mail.log", "/tmp/mail.log");
ini_set("mail.add_x_header", TRUE);

非常感谢!非常感谢您的帮助

您的代码易受SQL注入攻击,并且正在使用不推荐使用的MySQL函数。以下是一些可以改进代码的方法:

<?php
$email = isset($_POST['email']?$_POST['email']:"";
$first_name = isset($_POST['fname'])?str_replace("'","",$_POST['fname']):"";
$last_name = isset($_POST['lname'])?str_replace("'","",$_POST['lname']):"";
$password = isset($_POST['password'])?$_POST['password']:"";
if(empty($email)){
    echo "Email is empty.";
    exit();
}
$name = "$first_name $last_name";

$message = "Hi, $first_name! Your team has invited you to join Our Site. Your username is $email and your password is $password. Log in at http://www.help.com/login for social media analytics you will actually use. If you have any questions, get in touch at help@help.com.\r\n";
$subject = 'Welcome to Help';
$headers = array('From: "Help" <help@help.com>',
    "Reply-To: help@help.com",
    "X-Mailer: PHP/" . PHP_VERSION
);
$headers = implode("\r\n", $headers);
$body = "From: $name\n E-Mail: $email\n Message:\n $message";

if(!ini_set("mail.log", "/tmp/mail.log")){
    echo "<p>Mail Log not set.</p>";
}
if(!ini_set("mail.add_x_header", TRUE)){
    echo "<p>X-Headers not enabled.</p>";
}
$result = mail($email, $subject, $message, $headers);
if(!$result){
    echo "<p>Message Failed to Send.</p>";
)
?>


因为不清楚您是如何使用SQL的,所以我只是略过了一下,因为您在这里询问
mail()

$first\u names
好的<代码>姓氏。好啊但是,
$name
从何而来?您将如何处理
$check\u user
?您没有在代码中使用任何where。PHP 5.5.0中不推荐使用Mysql函数,并且在PHP 7.0.0中删除了它。相反,应该使用MySQLi或PDO_MySQL扩展。
$check\u user
在做什么?您正在检查它的值吗?(1)您设置了
$check\u user
$body
,但不使用它们。(2) 您正在
+
行中使用
$message='Hi',+$first\u names+'…
。必须使用
,而不是
+
,在PHP中连接字符串。(3) ;
mysql.*
函数已经过时,而且不安全。使用或代替。(4)你完全可以接受。这个代码会让你被黑客攻击。