PHP表单提交未定义的值

时间:2012-05-23 20:07:40

标签: php html forms

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

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

我注意到的第一件事:“手机型号”并没有像其他人那样说“未定义”。第二,为什么其他人说未定义而不是我放入的文本?

提前致谢。

7 个答案:

答案 0 :(得分:4)

尝试更改

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

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

编辑:以下示例:

if(isset($_POST['name'])) {
    var_dump($_POST);
    exit;

答案 1 :(得分:1)

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

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

要:

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

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

答案 2 :(得分:1)

首先,只需打印这些变量即可缩小问题范围。 当它没有正确打印。尝试使用GET代替$ _POST ['xxx'] - &gt; $ _GET ['xxx'],method ='post' - &gt;方法=“得到” 当然,这不是你想要的,只是为了确保。

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

答案 3 :(得分:1)

更新

您似乎使用的不是HTML&amp; PHP运行您的网站/表单。在PHP或Javascript中是否还有其他库可能会在您的脚本出现之前触及它?

原始

除非您按the documentation提交enctype,否则您应该将表单application/x-www-form-urlencoded更改为files, non-ASCII data, and binary data

multipart/form-data会给你一些奇怪的行为。至少,那是我明确的经历。

答案 4 :(得分:1)

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

答案 5 :(得分:0)

修正了它。事实证明它在进入PHP之前经历了一些jQuery然后是AJAX,这是造成我所有问题的原因。

当你被投入项目并且不太了解它时会发生这种情况。 :/

谢谢大家。

答案 6 :(得分:0)

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

  • 移动CSS

    jQuery核心的JS

    jQuery mobile的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">