【问题标题】:How can I make this email confirmation work?我怎样才能使这个电子邮件确认工作?
【发布时间】:2013-04-01 22:16:02
【问题描述】:

我尝试过使用邮件功能发送简单的电子邮件,它可以正常工作。但是当我尝试将它插入我的程序时它不会。谁能告诉我哪一部分是错的,因为我很确定这与 xampp/sendmail 配置无关 - 我已经尝试了 2 个简单的邮件程序,除了这个之外它们都可以工作。

我尽我所能把(...) 代替不必要的行。我认为问题在于,它无法进入prog读取电子邮件功能部分的部分?

这是我的 register.php:

<?
session_start();
if(isset($_POST['register']))
{
    include('/class.register.php');

    $register = new Register();
if($register->process()) {
    header('location: login.php');
}
else  {
    $register->show_errors();
}
}


?>

<form method= "POST" action="<?=$_SERVER['PHP_SELF'];?>">
<table>
<tr><td>Username:</td><td><input type="text" name="ruser" required="required" /></td></tr>
<tr><td>Email:</td><td><input type="text" name="remail" required="required" /></td></tr>
<tr><td>Password:</td><td><input type="password" name="rpass" required="required" /></td></tr>
<tr><td>Title:</td><td><input type="text" name="rtitle" required="required" /></td></tr>
<tr><td>First Name:</td><td><input type="text" name="rfname" required="required" /></td></tr>
<tr><td>Last Name:</td><td><input type="text" name="rlname" required="required" /></td></tr>
<tr><td>Mobile Number:</td><td><input type="text" name="rmobile" required="required" /></td></tr>


</table>

<input type="submit" name="register" value="Sign Up" />

</form>

这是我的 class.register.php:

<?

class Register
{

...

private $errors;  

public function __construct()
{
    $this->errors = array();

    ...;

    $this->token = $_POST['token'];
    $this->passmd5 = md5($this->password);

}

public function process()
  {
  if($this->valid_data() && $this->send_email())
$this->register();

return count($this->errors)? 0: 1;

}

public function filter($var)
{
    return preg_replace('/[^a-zA-z0-9@.]/','',$var);
}
public function user_exists()
{
    ...
} 

public function email_exists()
 ...

public function register()
{
    ...

}

public function show_errors()
 echo "<h3>Errors</h3>";

    foreach($this->errors as $key=>$value)
    echo $value."<br>";

public function valid_data()
...


public function send_email()
{

$from = 'jeremiah@citydelivery.ph';
$to = $_POST['remail'];
$subject = 'Registration confirmation';
$message = 'Please click the following link or copy and paste it
into your browser to complete the registration process: ';
$message .= 'http://example.com/confirm.php?u=';
$message .= urlencode($_POST['ruser']);
$message .= '&amp;t=';
$message .= urlencode($_POST['token']);

return mail($to, $subject, $message, $from);

}


}
?>

【问题讨论】:

  • 您检查过您的邮件日志,看看是否有任何有用的信息?
  • 我有点不知道在哪里检查。呵呵
  • 我不使用 Xampp,但它应该在 \xampp\php\logs 中 - 查找 mail.log 或 php_mail.log 之类的内容并检查这些文件是否有错误消息
  • 我确实检查了mail.php的日志。这些就像代码或其他东西。我没有得到。呵呵

标签: php email sendmail registration confirmation


【解决方案1】:

我要感谢所有做出贡献的人。我通过创建另一个文件 sendmail.php 解决了这个问题,然后将它包含在我的 register.php 中。

【讨论】:

  • 没有足够的反对票将其标记为 LQ,但我认为应该删除它,因为它不包含任何实质性细节。如果将来证明可行,我会 DV 并要求有人将其删除。
【解决方案2】:

$this-&gt;send_email 必须是 $this-&gt;send_email()

它是一个函数而不是一个变量;)​​

你也可以在语句中使用它,但是send_mail() 没有返回任何内容,所以它返回 null,最终结果为 false。

return mail($to, $subject, $message, $from); 也可以解决这个问题

if 语句按顺序执行,直到遇到 false,仅使用 && (and) 时

你有

if($this->valid_token() && $this->valid_data() && $this->send_email())

所以它可能永远不会命中send_mail(),因为valid_data() 是例如错误的。

要检查这个使用var_dump($this-&gt;valid_token(), $this-&gt;valid_data(), $this-&gt;send_email()第一个命中错误的是你要解决的问题,所以一个。

使用下面的处理函数,它会检查哪一个是问题所在。我建议在它工作后删除die() 函数

public function process()
  {
if($this->valid_token()) { die('token is the problem'); }
if($this->valid_data()) { die('valid data is the problem'); }
if($this->send_email()) { die('send email is the problem'); }

 if($this->valid_token() && $this->valid_data() && $this->send_email)
    $this->register();

return count($this->errors)? 0: 1;

}

【讨论】:

  • 哦,谢谢。仍然没有发送电子邮件确认:(
  • 检查您的过滤功能。如果它应该发送到的电子邮件也是有效的,还要查看 (die($to))
  • 我确实在邮件后立即返回。仍然没有运气。你认为我的过程函数()是正确的。我有点怀疑那里有两个 &&。感谢耐心的人。
  • 我确实有一个 valid_email 功能,它确实检查电子邮件是否有效
  • 我试过了。我认为 if($this->valid_token() && $this->valid_data() && $this->send_email()) 不会将我的输入注册到我的数据库中。删除它会注册 em。但我会用回信再试一次($$$) :) 谢谢
猜你喜欢
  • 2011-06-30
  • 2012-08-21
  • 1970-01-01
  • 1970-01-01
  • 2018-01-21
  • 2023-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多