2

就像我的标题所说,我的电子邮件表单在电子邮件中提交“未定义”。让我从一些代码开始......

HTML:

<form action="contactform.php" method="post" enctype="multipart/form-data" name="contact">
        <input name="name" type="text" value="Name" onfocus="if(this.value=='Name') this.value='';" />
        <input name="email" type="text" value="Email address" onfocus="if(this.value=='Email address') this.value='';" />
        <input name="phonemodel" type="text" value="Phone model" onfocus="if(this.value=='Phone model') this.value='';" />
        <textarea name="comments" cols="" rows="" style="height:130px;" onfocus="if(this.value=='Type your message here.') this.value='';" >Type your message here.</textarea>
        <input type="image" name="button" value="Submit" src="../media/btn_play_submit.png" style="margin-right:5px; margin-top:12px;" />
</form>

PHP:

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

    $to = 'MYEMAILHERE';
    $headers = "From: blahblahblah\r\n";
    $subject = "Online Contact Submission Received\r\n";

    $name = $_POST['name'];
    $email = $_POST['email'];
    $phone = $_POST['phonemodel'];
    $comments = $_POST['comments'];

    $message .= "Name: " . $name . "\r\n";
    $message .= "Email: " . $email . "\r\n";
    $message .= "Phone Model: " . $phone . "\r\n";
    $message .= "Comments: " . $comments . "\r\n";

    mail($to, $subject, $message, $headers);
  }
?>

我收到的电子邮件看起来像这样(是的,我在字段中输入了文本......):

Name: undefined
Email: undefined
Phone Model:
Comments: undefined

我注意到的第一件事:“电话模型”不像其他人那样说“未定义”。其次,为什么其他人说未定义而不是我输入的文字?

提前致谢。

4

7 回答 7

4

尝试改变

$message .= "Name: " . $name . "\r\n";

$message = "Name: " . $name . "\r\n";

编辑:下面的示例:

if(isset($_POST['name'])) {
    var_dump($_POST);
    exit;
于 2012-05-23T20:16:43.710 回答
1

尝试删除标题和主题后的换行符“\r\n”,它们可能与邮件功能有关。

$headers = "From: blahblahblah\r\n";
$subject = "Online Contact Submission Received\r\n";

到:

$headers = "From: blahblahblah";
$subject = "Online Contact Submission Received";

如果不这样做,转储您的 $_POST 数组并检查它是否获取表单处理程序。

于 2012-05-23T20:23:47.217 回答
1

首先简单地打印这些变量以缩小问题范围。当它没有正确打印时。尝试使用 GET 代替 $_POST['xxx'] -> $_GET['xxx'], method='post' -> method='get' 当然这不是你想要的,只是为了确保。

网络服务器中有一些选项可以禁用 GET 和/或 POST。您是否在新的未配置服务器上进行测试?

于 2012-05-23T20:37:24.313 回答
1

更新

看来您正在使用 HTML 和 PHP 以外的东西来运行您的网站/表单。在您的脚本之前,是否有任何其他库(无论是 PHP 还是 Javascript)可能会触及这个问题?

原来的

除非您按照文档提交,否则您应该将表单更改enctype为。application/x-www-form-urlencodedfiles, non-ASCII data, and binary data

multipart/form-data否则会给你奇怪的行为。至少,这是我明确的经验。

于 2012-05-23T20:40:12.313 回答
1

除了上述所有解决方案,您还可以placeholder="text you want to display"使用onfocus="if(this.value=='Name') this.value='';". 那里的值可能出了问题....

于 2012-05-24T05:48:54.090 回答
0

修复。事实证明,在使用 PHP 之前,它通过了一些 jQuery 和 AJAX,这是导致我所有问题的原因。

这就是当你被投入到一个项目并且不太理解它时会发生的事情。:/

谢谢大家。

于 2012-05-25T19:28:27.987 回答
0

当您引用本地文件时,请按以下顺序放置这些引用:

  • 移动端 CSS

    jQuery核心的JS

    jQuery 移动端的 JS。

不合适会导致这个错误

正确

<script src="jquery-1.7.1.min.js"> 
 <script type="text/javascript" src="jq-all-debug.js"> 

        <script src="jquery.mobile-1.1.1.min.js"> 

错误

        <script src="jquery-1.7.1.min.js"> 

<script src="jquery.mobile-1.1.1.min.js"> 

                <script type="text/javascript" src="jq-all-debug.js"> 
于 2012-11-09T16:45:16.873 回答