为什么我的html、php联系人表单不起作用?

为什么我的html、php联系人表单不起作用?,php,send,Php,Send,嗨,我的联系方式有问题,我没有收到任何邮件,我不知道为什么 这是我的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 : $

嗨,我的联系方式有问题,我没有收到任何邮件,我不知道为什么

这是我的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;

 ?>



下面是$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>

无标题文件

你的手机

你的名字

你的电子邮件

你的信息

发送消息


$\u POST['name']应该是
$\u POST['name']删除post值中的所有空格

因此:

变成:

$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”
,以使其正常工作。

您需要修复
$\u 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;
}
?>



下面是$msg的结果:

这样,您就可以知道您的表单是否没有正确提交的消息。

首先,如果这是在本地主机上,它将不起作用,因为邮件功能在本地被禁用,您必须联机运行它

进一步: 我看不出你到底错在哪里,但我接管了我自己网站上的邮件功能,并将其转换为你的

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: noreply@yourwebsite.com"; // 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
if(isset($\u POST['send']){//检查“提交”按钮中名为send的数据是否在此处
$name=mysqli\u real\u escape\u字符串($con,$\u POST['name']);
$mobileno=mysqli\u real\u escape\u字符串($con,$\u POST['mobileno']);
$email=mysqli\u real\u escape\u字符串($con,$\u POST['email']);
$message=mysqli\u real\u escape\u字符串($con,$\u POST['message']);
//您的post变量之间有空格,这是行不通的。此外,如果您使用mysqli,最好是谨慎行事,使其安全,以防您也使用数据库。变量$con是您的连接信息。
//如果变量有效,则回显。例如:
//echo$mobileno;
//这样您就可以确定项目是否已设置。
$message=wordwrap($message,70);//如果是一条长消息,一行可以包含70个字符
$to='any mail.com';//您的电子邮件
$subject='messagefromywebite';
$msg=“您的姓名:”.$name.\n”;
$msg.=“您的手机号码:”$mobileno.“\n”;
$msg.=“您的电子邮件:”.$email.\n”;
$msg.=“您的邮件:”..$Message;
$headers=“MIME版本:1.0”。“\r\n”;//这与msg中的css和html有关
$headers.=“内容类型:text/html;charset=UTF-8”。“\r\n”;//这与msg中的css和html有关
$headers.=”来自:noreply@yourwebsite.com“;//将此更改为您希望它来自的任何内容
if(邮件($to、$subject、$msg、$headers)){
回声“谢谢你”
; 回显“您的姓名”。$name.
; 回显“您的电子邮件”。$email.
; 回显“您的手机号码”。$mobileno.
”; 回显“您的消息”。$Message.“
”; //为确保您的电子邮件已发送,它将按上述方式输出您的邮件,否则将显示错误 }否则{ echo‘出了点问题……哎呀,黛西’; }//关闭if邮件检查 }//完成if(isset)检查的关闭
别忘了在mysqli函数中包含连接信息,以便在将其添加到数据库时清理变量。不管怎样,这也是一个很好的练习。我将$con定义为连接信息,您的可能会有所不同。然后必须将其更改为连接变量

如果您使用
mysql\u
函数,请使用
mysql\u real\u escape\u字符串($\u POST['YourPostVariable'])没有连接信息。看这里

--编辑--

更新了它,因为您的消息不会输出变量,只输出$name而不是$name变量中的名称


希望这有帮助,祝调试顺利:)

您好,我刚刚修改了您的代码。我收到了电子邮件。请检查以下代码。请在文本框中输入您的电子邮件以接收电子邮件

<?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>

无标题文件

你的手机

你的名字

你的电子邮件

你的信息

发送消息


您的全局
$\u帖子需要删除空格<代码>$name=$\u POST['name']
应该是
$name=$\u POST['name']更新新代码。在打开文件后立即将错误报告添加到文件顶部
是否尝试使用
if(邮件(收件人、主题、消息等){echo SUCCESS}ELSE{echo FAIL}
?实际上,你最好使用像phpMaileTargets这样的东西,对我投反对票,对我投反对票。。很好的编辑:而且,使用它不是更好吗!空()因为提交帖子时isset()总是返回true。我也是,但他活该,你不应该使用isset(),因为表单提交后它总是返回true。这不是awnser。噢,哇,首先你发布了一个dupe awnser,然后你对我投了否决票,因为你得到了否决票,现在你无法处理真相,开始对我发火。请再看一遍帖子。我这样做了,没有错误,但我没有收到邮件,你认为Html代码是问题所在吗?你能在你的问题@IbnZiad中发布Html吗?在你的Html中,你将表单设置为
method=“get”
将其更改为
method=“post”
它是“post”,但我更改了它,仍然没有任何结果。@IbnZiad-无论你尝试了什么,如果你的方法是get,那么php需要$\u get,如果是post,那么为了安全起见,php是$\u post
<?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>