<!DOCTYPE html>
<html>
<head>
<link href="aadab.css" rel="stylesheet" type="text/css">
<link rel="icon" href="images/favicon.png">
</head>
<body>
<h2>REGISTRATION FORM</h2>
<div id="form">
<?php
if(isset($_POST['submit']))
{
$name= $_POST['name'];
$phone= $_POST['phone'];
$email= $_POST['email'];
$college= $_POST['namecolg'];
$team= $_POST['team'];
$im= $_POST['im'];
$detail= $_POST['detail'];
$subject= 'Registration for aadab 2013';
if ( (empty($name)) || (empty($phone)) || (empty($email)) || (empty($college)) || (empty($detail)) )
{
echo '<p id="fillall">It is necessary that you fill at least the required fields that are marked with a star</p>';
}
else
{
$to= 'xyz@gmail.com';
$con= "<b>Registration Details:</b><br>"."Name: $name<br>"."Contact: $phone<br>"."Email: $email<br>"."College: $college<br>"."Team(if any): $team<br>"."Instant message: $im<br>"."Details of the event(s): $detail<br>";
$emsg= "Registration Details:\n\n"."Name: $name\n"."Contact: $phone\n"."Email: $email\n"."College: $college\n"."Team(if any): $team\n"."Instant message: $im\n"."Details of the event(s): $detail\n";
$msg = wordwrap($emsg,70);
$mailsend= mail($to, $subject, $msg);
if ($mailsend)
{
echo "<div class=\"regdet\"><b>Here is what you've submitted:</b><br><br>$con";
echo '<br>Congratulations! You have successfully registered! Click <a href="index.html">here</a> to continue.</div>';
}
else
{
echo '<div class="regdet"><br>OOPS! Something went wrong. Click <a href="form.php">here</a> to try again.</div>';
}
}
}
else
{?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" autocomplete="on" method="post">
<table>
<tr>
<th><label for="name">Your fullname*</label></th>
<td><input type="text" id="name" name="name" value="<?php echo $name; ?>" required></td>
</tr>
<tr>
<th><label for="phone">Your contact number*</label></th>
<td><input type="tel" id="phone" name="phone" value="<?php echo $phone; ?>" required></td>
</tr>
<tr>
<th><label for="email">Your email-id*</label></th>
<td><input type="email" id="email" name="email" value="<?php echo $email; ?>" required></td>
</tr>
<tr>
<th><label for="namecolg">Name of your college*</label></th>
<td><input type="text" id="namecolg" name="namecolg" value="<?php echo $college; ?>" required></td>
</tr>
<tr>
<th><label for="team">The name of your team<br>(if registering for a team event)</label></th>
<td><input type="text" id="team" name="team" value="<?php echo $team; ?>" ></td>
</tr>
<tr>
<th><label for="im">Bbm pin/iMessage id/Whatsapp<br>(if any, separate each id by a comma)</label></th>
<td><input type="text" id="im" name="im" value="<?php echo $im; ?>" ></td>
</tr>
<tr>
<th><label for="detail">Details of the event(s) you want to register for*</label></th>
<td><input type="text" id="detail" name="detail" value="<?php echo $detail; ?>" required></td>
</tr>
<tr><td colspan="2" style="text-align: center; padding: 40px 0px 0px 0px;"><input type="submit" name="submit" value="Register"></td</tr>
</table>
</form>
<?php } ?>
</div>
</body>
</html>
这段剧本困扰了我两天!
我无法找到一个不允许我向我的电子邮件ID发送电子邮件的错误
firebug也没有显示任何警告或错误 我检查了phpcodechecker.com可能的语法错误但没有出现
我无法从实时服务器或本地zend服务器接收邮件 在这两种情况下我都得到了“else”echo语句..
答案 0 :(得分:2)
如果您知道的事实,您的服务器上允许设置和邮件,请尝试发送测试电子邮件,以确保您的变量未创建错误。做这样的事情:
$test = mail('your@email.com', 'Test Email', 'Hope this works!');
if ( $test ) { echo 'Yay it worked!'; }
else { echo 'Oh no mail failed!'; }
如果您不知道邮件已设置并已启用,请执行以下操作:
首先,运行phpinfo();
并查看php.ini文件的路径。接下来,查找显示disabled_functions
的行,看看它是否包含单词mail
。如果是这样,只需从此行中删除mail
关键字,它将启用mail()函数。如果您无法访问php.ini,您可能希望联系您的虚拟主机并询问他们是否可以为您手动启用它。
但是,如果没有设置发送路径,那么让mail()工作将会困难得多。如果是这种情况,您可能需要考虑使用第三方邮件程序,例如SwiftMailer。就个人而言,我使用SwiftMailer,即使启用了php的mail()函数 。在我看来,它使标题和其他内容更容易。
基于失败的邮件更新()功能:
在这种情况下,运行phpinfo();
并查看第6行。应该说Configuration File (php.ini) Path
。然后使用提供的路径显示php.ini文件的内容:
echo str_replace("\n", '<br />', file_get_contents('/PATH_TO_CONFIG/php.ini'));
现在,只需将PATH_TO_CONFIG替换为phpinfo()
函数提供的路径即可。或者,您可以依赖php_ini_loaded_file()
函数返回路径并以此方式检索它。所以你也可以这样做:
echo str_replace("\n", '<br />', file_get_contents(php_ini_loaded_file()));
然后,在文档中搜索disabled_functions
并查看mail
是否在那里。如果没有,我猜你的服务器上还没有设置发送路径。
WIN64更新: 尝试将其放入您的配置中:
[mail function]
SMTP = mail.yourdomain.com
sendmail_from = admin@yourdomain.com
答案 1 :(得分:1)
首先,mail()
功能无法检查电子邮件是否到达邮箱。
但是你的脚本在mail()
上返回了一个错误,所以它在服务器端就是这样。
是的,请查看phpinfo()
两台服务器上的已禁用功能。
如果您在共享服务器上,有时您不能发送邮件。
您很可能无法将邮件从本地域发送到另一个邮件服务器,因为这可能是一个不合格或非法的域(将被标记为垃圾邮件)
最后但并非最不重要的是,下载一个phpmailer class,它更容易使用,你不必担心邮件标题
答案 2 :(得分:0)
这是用PHP发送邮件的功能:
mail(to,subject,message,headers,parameters)
to
,subject
和message
都是必需的参数。你错过了一个主题。
headers
和parameters
是可选的
有关如何使用mail()
功能的其他详细信息,请参阅:http://php.net/manual/en/function.mail.php