我有一个表格,我希望人们将表格发送到他们的电子邮件中。因此,我将邮件添加到了代码mail($ to,$ subject ....)。如果我手动在$ to中输入一个值(例如$ to =“ xxx.example.com”),则电子邮件将到达。但是,此解决方案不切实际,因为我需要通过用户输入来发送电子邮件。 我使用JavaScript创建了一个带有输入字段的警报框:
function prompt($prompt_msg){
echo("<script type='text/javascript'> var answer = prompt('".$prompt_msg."',); </script>");
$answer = "<script type='text/javascript'> document.write(answer); </script>";
return($answer);
}
$prompt_msg = "Zadejte Váš email:";
$name = prompt($prompt_msg);
如果我打印带有echo($ name)的值,则会显示电子邮件地址,但不会发送电子邮件。 因此,我创建了一个多电子邮件值:
$recipients = array ("xxx@yyy.com", $name, "yyy@xxx.com");
到电子邮件地址xxx和电子邮件地址yyy的电子邮件已到达,但是如果我在yyy的电子邮件框中而不是xxx,yyy和$ name中的值中查看电子邮件收件人,则会显示以下信息:
Recipients - xxx, yyy, scripttype='text/javascript'@ssd3.jh-pro.cz
answer <document.write@ssd3.jh-pro.cz>
/script@ssd3.jh-pro.cz
这意味着该电子邮件将发送到:
,而不是$ name的内容。scripttype='text/javascript'@ssd3.jh-pro.cz,
answer <document.write@ssd3.jh-pro.cz>,
/script@ssd3.jh-pro.cz
您知道为什么会这样吗? 预先感谢您的帮助
function prompt($prompt_msg){
echo("<script type='text/javascript'> var answer =
prompt('".$prompt_msg."',); </script>");
$answer = "<script type='text/javascript'> document.write(answer); </script>";
return($answer);
}
$prompt_msg = "Zadejte Váš email:";
$name = prompt($prompt_msg);
$recipients = array("xxx@yyy.cz",$name,"yyy@xxx.com");
$to = implode(',', $recipients);
echo($to);
.
.
.
.
mail($to,$subject,$message,$headers);
答案 0 :(得分:0)
我假设您正在尝试通过网络浏览器执行此操作。您尝试做的事情是可能的,但并不能以您接近的方式进行。
PHP是在服务器上运行的编程语言,而JavaScript是在浏览器中运行的编程语言。必须理解这一点:这是两种完全不同的编程语言,它们在两台完全独立的计算机上运行。 PHP不知道用户浏览器中发生了什么,而用户浏览器也不知道PHP中发生了什么。
实际上,PHP甚至都不知道您正在生成JavaScript。就PHP而言,您只是生成一堆文本并将其发送给用户。直到PHP停止执行,JavaScript才开始运行。
结果,您的代码中发生的事情是字符串"<script type='text/javascript'> document.write(answer); </script>"
被存储在$name
中,您立即尝试向该字符串发送电子邮件。这一切都在提示用户之前发生。
您需要从根本上将您的工作流程更改为以下内容:
mail()
呼叫处理提供的电子邮件。