2013-07-10 348 views
-4

嘿所以在这里,我正在给它另一个尝试,我会尝试发布整个代码,看看我是否可以得到一些我可以使用的帮助。所以我有一个3阶段的页面,在这里分解,主代码假设位于/ root /文件夹下的registration.php页面。这封电子邮件为什么不发送电子邮件?

registration.php的(位置:/根/)

<?php 
/* 
UserCake Version: 2.0.2 
http://usercake.com 
*/ 

require_once("models/config.php"); 
if (!securePage($_SERVER['PHP_SELF'])){die();} 

//Prevent the user visiting the logged in page if he/she is already logged in 
if(isUserLoggedIn()) { header("Location: account.php"); die(); } 

//Forms posted 
if(!empty($_POST)) 
{ 
$errors = array(); 
$email = trim($_POST["email"]); 
$username = trim($_POST["username"]); 
$displayname = trim($_POST["displayname"]); 
$password = trim($_POST["password"]); 
$confirm_pass = trim($_POST["passwordc"]); 
$captcha = md5($_POST["captcha"]); 

if ($captcha != $_SESSION['captcha']) 
{ 
$errors[] = lang("CAPTCHA_FAIL"); 
} 
if(minMaxRange(5,25,$username)) 
{ 
$errors[] = lang("ACCOUNT_USER_CHAR_LIMIT",array(5,25)); 
} 
if(minMaxRange(5,25,$displayname)) 
{ 
$errors[] = lang("ACCOUNT_DISPLAY_CHAR_LIMIT",array(5,25)); 
} 
if(!ctype_alnum($displayname)){ 
$errors[] = lang("ACCOUNT_DISPLAY_INVALID_CHARACTERS"); 
} 
if(minMaxRange(8,50,$password) && minMaxRange(8,50,$confirm_pass)) 
{ 
$errors[] = lang("ACCOUNT_PASS_CHAR_LIMIT",array(8,50)); 
} 
else if($password != $confirm_pass) 
{ 
$errors[] = lang("ACCOUNT_PASS_MISMATCH"); 
} 
if(!isValidEmail($email)) 
{ 
$errors[] = lang("ACCOUNT_INVALID_EMAIL"); 
} 
//End data validation 
if(count($errors) == 0) 
{ 
//Construct a user object 
$user = new User($username,$displayname,$password,$email); 

//Checking this flag tells us whether there were any errors such as possible data duplication occured 
if(!$user->status) 
{ 
if($user->username_taken) $errors[] = lang("ACCOUNT_USERNAME_IN_USE",array($username)); 
if($user->displayname_taken) $errors[] =   lang("ACCOUNT_DISPLAYNAME_IN_USE",array($displayname)); 
if($user->email_taken) $errors[] = lang("ACCOUNT_EMAIL_IN_USE",array($email));  
} 
else 
{ 
//Attempt to add the user to the database, carry out finishing tasks like emailing the user (if required) 
if(!$user->userCakeAddUser()) 
{ 
if($user->mail_failure) $errors[] = lang("MAIL_ERROR"); 
if($user->sql_failure) $errors[] = lang("SQL_ERROR"); 
} 
} 
} 
if(count($errors) == 0) { 
$successes[] = $user->success; 
} 
} 

require_once("$template/head.php"); 

//Links Guide Web Design1 

putenv('DORUMENT_ROOT='); 
$docroot=''; 

putenv('DORUMENT_ROOT='); 
$dir_home_web_design1='../'; 

putenv('DORUMENT_ROOT='); 
$class_home_web_design1=''; 

putenv('DORUMENT_ROOT='); 
$dir_login_web_design1=''; 

putenv('DORUMENT_ROOT='); 
$class_login_web_design1='current'; 

//Links Guide Web Design1 

echo " 

<body > 

<!-- header --> 
<div>"; 
include "$template/header.php"; 
echo " 

</div> 
<!-- header --> 

<!-- register --> 
<div>"; 
include "$template/register.php"; 
echo " 

</div> 
<!-- register --> 

<!-- footer --> 
<div>"; 
include "$template/footer.php"; 
echo " 

</div> 
<!-- footer --> 

<!-- Javascript - jQuery --> 
<script src='http://code.jquery.com/jquery.min.js'></script> 
<script>window.jQuery || document.write('<script src='js/jquery-1.7.2.min.js'> <\/script>')</script> 

</body> 
</html>"; 

?> 

链接到位于/根/模型/模板/选择器/另一注册页面,其具有电子邮件的形式:

登记(位置:/根/模型/模板/选择器/)

<?php 

echo " 

<!-- register --> 

<div class='whiteattire' 

<div id='regbox'> 

<div id='wrap'> 
<div class='container3'> 
<div class='row'> 
<div class='span3 hidden-phone'></div> 
<div class='span6' id='form-login'> 
<form name='htmlform' action='$template/email.php' method='post' class='form-horizontal well' > 
<fieldset> 
<legend>Register for an account</legend>"; 

echo resultBlock($errors,$successes); 

echo " 

<br> 
<div class='control-group'> 
<div class='control-label'> 
<label>Name</label> 
</div> 
<div class='controls'> 
<input type='text' placeholder='Type name' name='name' class='input-large'> 
</div> 
</div> 

<div class='control-group'> 
<div class='control-label'> 
<label>E-mail</label> 
</div> 
<div class='controls'> 
<input type='text' placeholder='Type e-mail' name='email' class='input-large'> 

</div> 
</div> 

<div class='control-group'> 
<div class='control-label'> 
<label>Telephone</label> 
</div> 
<div class='controls'> 
<input type='text' placeholder='Type telephone' name='telephone' class='input-large'> 

</div> 
</div>  

<div class='control-group'> 
<div class='control-label'> 
<label>Password</label> 
</div> 
<div class='controls'> 
<input type='text' placeholder='Type password' name='password' class='input-large'> 

</div> 
</div>  

<div class='control-group'> 
<div class='control-label'> 
<label>Security Code:</label> 
</div> 
<div class='controls'> 
<img src='models/captcha.php'> 

</div> 
</div> 

<div class='control-group'> 
<div class='control-label'> 
<label>Enter Security Code:</label> 
</div> 
<div class='controls'> 
<input type='text' placeholder='Type code' name=captcha' class='input-large'> 

</div> 
</div>                   

<div class='control-group'> 
<div class='controls'> 

<button type='submit' id='submit' class='btn btn-primary button-loading' data-loading-text='Loading...'>&nbsp;&nbsp;&nbsp;&nbsp;Submit&nbsp;&nbsp;&nbsp;&nbsp;</button> 

<br></br> 

<button type='button' class='btn btn-secondary button-loading' data-loading-text='Loading...'><a href='forgot-password.php'>Forgot Password</a></button> 

<button type='button' class='btn btn-secondary button-loading' data-loading-text='Loading...'>&nbsp;&nbsp;<a href='login.php'>Log in</a>&nbsp;&nbsp;</button>       

</div> 
</div> 
</fieldset> 
</form> 

</div> 
<div class='span3 hidden-phone'></div> 
</div> 
</div> 
<div id='push'></div> 
</div> 

</div> 

</div> 

<!-- register --> 
<!-- register --> 
<!-- register --> 

"; 

?> 

链接到另一个email.php页面,它假设创建电子邮件并发送它。我在回复主注册页面的电子邮件表单时遇到麻烦。我想我可能会错误地设置电子邮件代码,这就是为什么我收到500错误,说有问题的第18行。这里是电子邮件代码,希望你们可以帮助:

email.php(位置:/根/模型/模板/选择器/)

<?php 
if(isset($_POST['email'])) { 
// CHANGE THE TWO LINES BELOW 
      $email_to = "[email protected]"; 
      $email_subject = "Registering to blanky-store.net web design account."; 

      //Forms posted 
      if(!empty($_POST)) 
      { 
      $errors = array(); 
      $email = trim($_POST["email"]); 
      $name = trim($_POST["name"]); 
      $telephone = trim($_POST["telephone"]); 
      $password = trim($_POST["password"]); 
      $captcha = md5($_POST["captcha"]); 

      if ($captcha != $_SESSION['captcha']) 
      $errors[] = lang("CAPTCHA_FAIL"); 

      if(minMaxRange($name)) 
      $errors[] = lang("CONFIG_NAME_CHAR_LIMIT"); 

      if(!ctype_alnum($name)) 
      $errors[] = lang("ACCOUNT_DISPLAY_INVALID_CHARACTERS"); 

      if(!isValidEmail($telephone)) 
      $errors[] = lang("ACCOUNT_DISPLAY_CHAR_LIMIT"); 

      if(minMaxRange(8,50,$password) && minMaxRange(8,50,$confirm_pass)) 
      $errors[] = lang("ACCOUNT_PASS_CHAR_LIMIT",array(8,50)); 

      if(!isValidEmail($email)) 
      $errors[] = lang("ACCOUNT_INVALID_EMAIL"); 


      //End data validation 
      if(strlen($error_message) > 0) { 
      echo($error_message); 
      }    
      $email_message = "Form details below.\n\n"; 

      function clean_string($mystring) 
      { 
      $bad = array("content-type","bcc:","to:","cc:","href"); 
      return str_replace($bad,"",$mystring); 
      } 

      $email_message .= "Name: ".clean_string($name)."\n"; 
      $email_message .= "Email: ".clean_string($email_from)."\n"; 
      $email_message .= "Telephone: ".clean_string($telephone)."\n"; 
      $email_message .= "Password: ".clean_string($password)."\n"; 

      // create email headers 
      $headers = 'From: '.$email_from."\r\n". 
            'Reply-To: '.$email_from."\r\n" . 
            'X-Mailer: PHP/' . phpversion(); 
      @mail($email_to, $email_subject, $email_message, $headers); 

      if (mail($email_to, $email_subject, $email_message, $headers)) 
      header("Location: http://blanky-store.net/index.php"); 
      } 
    }  
die(); 
?> 

我的问题是可以发布整个代码来正确地修复此电子邮件表单?为什么此电子邮件表格不发送电子邮件?

+0

“不起作用”是什么意思? – andrewsi

+0

为什么我的电子邮件表格不发送电子邮件? – user2566655

+0

这没有任何帮助。它在做什么?不让你提交它?验证失败了吗?是否有来自PHP的错误消息?你从'mail()'返回一个错误吗? – andrewsi

回答

0

你被validemail function验证telephone看到这个代码

if(!isValidEmail($telephone)) 
    $errors[] = lang("ACCOUNT_DISPLAY_CHAR_LIMIT"); 

而且通过

//End data validation 
if(count($errors) > 0) { 
    echo($error_message); 
} 
+0

我将代码添加到电话if(!minMaxRange($ telephone)) $ errors [] = lang(“ACCOUNT_DISPLAY_CHAR_LIMIT”); – user2566655

1

代码替换

//End data validation 
if(strlen($error_message) > 0) { 
    echo($error_message); 
} 

我相信你需要把require_once("models/config.php");在email.php顶部

<?php 
if(isset($_POST['email'])) { 
    require_once("models/config.php"); 

为线#18 email.php

$errors[] = lang("CAPTCHA_FAIL"); 

,因为我没有看到function lang()在你的代码的任何地方我想这是在models/config.php,所以你的页面做一个致命错误的功能未定义。


调试代码时,它有助于把PHP错误报告的 - 错误

<?php 
ini_set('display_errors', 1); 
error_reporting(E_ALL); 

if(isset($_POST['email'])) { 
    require_once("models/config.php"); 

这将输出到网页,让您可以调试自己。

+0

否不工作... :( – user2566655

+0

你能提供完整的错误信息。到目前为止,你只有说'500内部服务器错误说,有问题的第18行的代码'两次,所以我们很难帮助,如果我们不知道实际的错误信息是什么意思。 – Sean

+0

它的工作确定ILL POST以后感谢! – user2566655