2014-12-04 170 views
0

所以我有这段代码。 这是一个网站,当管理员批准你是一个用户,他点击此链接。它将设置帐户激活,但我也想发送电子邮件。确认电子邮件不发送

<?php 
error_reporting(-1); 
ini_set('display_errors', 'On'); 
require('includes/config.php'); 

//collect values from the url 
$memberID = trim($_GET['x']); 
$active = trim($_GET['y']); 

//if id is number and the active token is not empty carry on 
if(is_numeric($memberID) && !empty($active)){ 

//update users record set the active column to Yes where the memberID and active value match the ones provided in the array 
$stmt = $db->prepare("UPDATE members SET active = 'Yes' WHERE memberID = :memberID AND active = :active"); 
$stmt->execute(array(
    ':memberID' => $memberID, 
    ':active' => $active, 
)); 

//if the row was updated redirect the user 
if($stmt->rowCount() == 1){ 
//redirect to login page 
$stmt = $db->prepare("SELECT email FROM members WHERE memberID = :memberID"); 
$stmt->bindparam(':memberID', $memberID); 
$stmt->execute(); 
$result = $stmt->fetch(PDO::FETCH_OBJ); 
//send email 
    $to = $result->email; 
    $subject = "account actief"; 
    $body = "Uw account op http://www.nol-groningen.nl is actief \n\n 
    Met Vriendelijke groet,\n\n 
    Website Admin"; 
    $additionalheaders = "From: <".SITEEMAIL.">\r\n"; 
    $additionalheaders .= "Reply-To: $".SITEEMAIL.""; 
    mail($to, $subject, $body, $additionalheaders); 

header('Location: login.php?action=active'); 
exit; 

} else { 
echo "Your account could not be activated."; 
} 

} 
?> 

它在我把电子邮件放进去之前做了工作,现在它只是进入一个空白页面。有谁知道我可以修复它,让它发送确认电子邮件?

+0

看起来像一个黑名单事 – roullie 2014-12-04 10:19:48

+0

尝试回声$电子邮件;检查天气有一些邮件或不在变量中。 – 2014-12-04 10:23:47

回答

2

电子邮件代码运行之前,所以

移动header('Location: login.php?action=active');下来之前exit;

header('Location: login.php?action=active'); 
exit; 

变化放置你重定向页面,如果你喜欢这个

if($stmt->rowCount() == 1){ 
    //redirect to login page 
    $stmt = $db->prepare("SELECT email FROM members WHERE memberID = :memberID"); 
    $stmt->bindparam(':memberID', $memberID); 
    $stmt->execute(); 
    $result = $stmt->fetch(PDO::FETCH_OBJ); 
    //send email 
     $to = $result->email; 
     $subject = "account actief"; 
     $body = "Uw account op http://www.nol-groningen.nl is actief \n\n 
     Met Vriendelijke groet,\n\n 
     Website Admin"; 
     $additionalheaders = "From: <".SITEEMAIL.">\r\n"; 
     $additionalheaders .= "Reply-To: $".SITEEMAIL.""; 
     mail($to, $subject, $body, $additionalheaders); 

    header('Location: login.php?action=active'); 
    exit; 

} else { 
    echo "Your account could not be activated."; 
} 
+0

没有工作。什么都不发生 – 2014-12-04 10:22:44

+0

你现在可以分享你的更新代码吗? – 2014-12-04 11:19:28

+0

检查上面的代码,我更新了它 – 2014-12-04 11:21:10

0

说法是不是有一个PHP错误:

$stmt->execute(array(
':email' => $email, 

//send email 
    $to = $email; 
    $subject = "account actief"; 
    $body = "Uw account op http://www.nol-groningen.nl is actief \n\n 
    [...] 
)); 

难道你不应该检查答案,并发送电子邮件的执行?

+0

我看到它没有工作。它通过可以工作的beta文件夹发送给我。所以这段代码实际上并不工作 – 2014-12-04 10:30:34

+0

好的,因为我测试了代码,它分别在我的服务器上工作。应该是邮件服务器配置。 – 2014-12-04 10:33:52

+0

我能做什么?我真的需要它来工作 – 2014-12-04 10:34:17

0

您的脚本似乎有多种原因不会发送电子邮件。除非存在明显的语法错误,否则很难诊断这些东西。没有人,你需要通过下面的清单来找出你可能遇到的任何潜在的陷阱。

answered Jul 9 at 2:21 by John Conde