为什么我的联系表格在html,php中不起作用?

问题描述:

您好我现在面临一个问题,我的联系方式我没有收到任何邮件,我不知道为什么..为什么我的联系表格在html,php中不起作用?

这是我的PHP代码有什么事情不对

<?php 
$name=$_POST ['name']; 
$mobileno=$_POST ['mobileno']; 
$email=$_POST ['email']; 
$message=$_POST ['message']; 

$to = 'any mail.com'; 
$subject = ' Message from your Webite'; 
$msg = " Your name : $name\n"; 
$msg .= " Your Mobile No. : $mobileno\n"; 
$msg .= " Your email: $email\n" ; 
$msg .= " Your Message: $message"; 

mail ($to, $subject, $msg, 'From:' . $email); 

echo ' Thank You <br/>'; 
echo ' Your name ' . $name . '<br>'; 
echo ' Your email ' . $email . '<br>'; 
echo ' Your Mobile No. ' . $mobileno . '<br>'; 
echo ' Your Message ' . $message . '<br>'; 

?> 

<br /><br /> 
Here is the result from $msg: <br /><br /> 
<?php 

echo $msg; 

?> 

我HTML代码,我编辑的代码几次,但什么都没有发生

<head> 

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 

<title>Untitled Document</title> 

</head> 

<body> 

<form name="form1" method="post" action="justsend.php"> 

    <p> 

    <label for="mobileno">your mobile</label> 

    <input type="text" name="mobileno" id="mobileno"> 

    <label for="name"><br> 
     your name</label> 
    <input type="text" name="name" id="name"> 
    </p> 
    <p> 
    <label for="email">your email</label> 
    <input type="text" name="email" id="email"> 
    </p> 
    <p> 
    <label for="message">your message</label> 
    <textarea name="message" id="message" cols="45" rows="5"></textarea> 
    </p> 
    <p> 
    <label for="send">send msg</label> 
    <input type="submit" name="send" id="send" value="Submit"> 
    </p> 
</form> 
</body> 
</html> 
+0

您的全局'$ _POST'需要删除空格。 '$ name = $ _ POST ['name'];'应该是'$ name = $ _ POST ['name'];' – EternalHour 2014-10-09 05:52:24

+0

仍然无效 – 2014-10-09 06:05:00

+0

更新您的新代码。 – EternalHour 2014-10-09 06:07:12

$_POST ['name'];应该$_POST['name'];删除所有的空格在您的文章值。

这样:

$name=$_POST ['name']; 
$mobileno=$_POST ['mobileno']; 
$email=$_POST ['email']; 
$message=$_POST ['message']; 

变为:

$name=$_POST['name']; 
$mobileno=$_POST['mobileno']; 
$email=$_POST['email']; 
$message=$_POST['message']; 

和像EternalHour说,这可能是如果窗体填充某种方式来验证一个好主意;在宣布$name$mobileno等后立即尝试此操作;

if(!empty($name) && !empty($mobileno) && !empty($email) && !empty($message)){ 
// do stuff 
} 

你会使用!empty()代替isset()的原因是因为如果表单提交isset仍然会返回true,因为值设置..他们都只是空的。

编辑: 在您的HTML变化action="get"action="post"进一步为了得到它的工作。

+0

为什么downvote?这是正确的夸克。 – Azrael 2014-10-09 05:59:48

+0

我做到了,没有错误,但我没有收到邮件, 您认为Html代码是问题吗? – 2014-10-09 06:18:09

+0

你可以在你的问题@IbnZiad上发布html吗? – Azrael 2014-10-09 06:21:32

你需要修正你的$_POST变量,但我会推荐这个,所以你会知道你的POST是否成功。

<?php 

if (isset($_POST)) { 
$name=$_POST['name']; 
$mobileno=$_POST['mobileno']; 
$email=$_POST['email']; 
$message=$_POST['message']; 

$to = 'any mail.com'; 
$subject = ' Message from your Webite'; 
$msg = " Your name : $name\n"; 
$msg .= " Your Mobile No. : $mobileno\n"; 
$msg .= " Your email: $email\n" ; 
$msg .= " Your Message: $message"; 

mail ($to, $subject, $msg, 'From:' . $email); 

echo ' Thank You <br/>'; 
echo ' Your name ' . $name . '<br>'; 
echo ' Your email ' . $email . '<br>'; 
echo ' Your Mobile No. ' . $mobileno . '<br>'; 
echo ' Your Message ' . $message . '<br>'; 

?> 

<br /><br /> 
Here is the result from $msg: <br /><br /> 
<?php 

echo $msg; 
} else { 
echo "submit failed!"; 
exit; 
} 
?> 

这样你就知道你的表格是否没有正确提交的消息。

+0

为什么要投票? – EternalHour 2014-10-09 05:57:41

+1

得到downvoted,downvotes我..良好的工作**编辑:**也,它不会更好地使用!empty(),因为isset()将在提交帖子时返回true。 – Azrael 2014-10-09 06:01:04

+0

你为什么问我?我不能投两次票。 – EternalHour 2014-10-09 06:03:24

首先,如果这是在本地主机,它不会工作,原因mailfunction在本地被禁用,你必须在线运行

另外: 我没有看到真正的你要去哪里错了,但我接手我自己的邮件功能,我在自己的网站上得到它转化为你的

if(isset($_POST['send'])){ // checks if the data from the submit button with the name send is here 
$name=mysqli_real_escape_string($con,$_POST['name']); 
$mobileno=mysqli_real_escape_string($con,$_POST['mobileno']); 
$email=mysqli_real_escape_string($con,$_POST['email']); 
$message=mysqli_real_escape_string($con,$_POST['message']); 

// you had spaces between your post variables which wont work. Also if you use mysqli, its better to play safe and make them safe, in case you do also database work. The variable $con is your connection information. 

// echo out if your variables working. For example: 
// echo $mobileno; 
// this way you know for sure if the items are set.  

$message = wordwrap($message, 70); // in case its a long message, this allows 70 characters on one line 
$to = 'any mail.com'; // your email 
$subject = ' Message from your Webite'; 
$msg = " Your name : ".$name."\n"; 
$msg .= " Your Mobile No. : ".$mobileno."\n"; 
$msg .= " Your email: ".$email."\n" ; 
$msg .= " Your Message:".$message ; 

$headers = "MIME-Version: 1.0" . "\r\n"; // this has to do with css and html in your msg 
$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n"; // this has to do with css and html in your msg 
$headers .= "From: [email protected]"; // change this to whatever you want it to come from 

if (mail ($to, $subject, $msg, $headers)) { 
    echo ' Thank You <br/>'; 
    echo ' Your name ' . $name . '<br>'; 
    echo ' Your email ' . $email . '<br>'; 
    echo ' Your Mobile No. ' . $mobileno . '<br>'; 
    echo ' Your Message ' . $message . '<br>'; 

// to make sure if your email is send it will output your message as given above, else an error 
}else{ 
    echo ' Something went wrong ... oopsie daisy'; 
    } // closure of the if mail check 
} // closure of the complete if(isset) check 

不要忘了,包括您的连接信息,以及为mysqli的函数来净化你的变量的情况下,你再要添加它也适用于数据库。无论如何,这只是一个很好的做法。我将$ con定义为连接信息,您的可能会有所不同。你必须改变它然后到你的连接变量。

如果您使用mysql_函数,请使用mysql_real_escape_string($_POST['YourPostVariable']);而不使用连接信息。看这里。 http://php.net/manual/en/function.mysql-real-escape-string.php

- 编辑 -

更新它,因为你的信息不会输出你的变量,就在$名称,而不是$ name变量中的名称。

希望这会有所帮助,祝你好运:)调试

+0

谢谢,但它没有工作,当我按发送它变成空白页。 – 2014-10-09 07:18:59

+0

你在本地服务器上运行它,还是在线? – Dorvalla 2014-10-09 07:19:23

您好我刚修改的代码只是一个小bit..and我收到与下面的email..please检查code..please给您的电子邮件中接收邮件的文本框

<?php 
if($_POST['email'] != '') 
{ 
    $name=$_POST['name']; 
    $mobileno=$_POST['mobileno']; 
    $email=$_POST['email']; 
    $message=$_POST['message']; 
    $to = $email; 
    $subject = 'Message from your Webite'; 
    $msg = " Your name : $name\n"; 
    $msg .= " Your Mobile No. : $mobileno\n"; 
    $msg .= " Your email: $email\n" ; 
    $msg .= " Your Message: $message"; 
    mail ($to, $subject, $msg, 'From:'.$email); 
    echo ' Thank You <br/>'; 
    echo ' Your name ' . $name.'<br>'; 
    echo ' Your email ' . $email .'<br>'; 
    echo ' Your Mobile No. ' . $mobileno . '<br>'; 
    echo ' Your Message ' . $message . '<br>'; 
} 
?> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 

<title>Untitled Document</title> 

</head> 

<body> 

<form name="form1" method="post" action="justsend.php"> 

    <p> 
    <label for="mobileno">your mobile</label> 

    <input type="text" name="mobileno" id="mobileno"> 

    <label for="name"><br> 
     your name</label> 
    <input type="text" name="name" id="name"> 
    </p> 
    <p> 
    <label for="email">your email</label> 
    <input type="text" name="email" id="email"> 
    </p> 
    <p> 
    <label for="message">your message</label> 
    <textarea name="message" id="message" cols="45" rows="5"></textarea> 
    </p> 
    <p> 
    <label for="send">send msg</label> 
    <input type="submit" name="send" id="send" value="Submit"> 
    </p> 
</form> 
</body> 
</html>