так что у меня есть этот код.
Для сайта, когда администратор утверждает, что вы являетесь пользователем, он щелкает по этой ссылке. Он установит активную учетную запись, но я также хочу отправить электронное письмо.
<?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.";
}
}
?>
Это сработало до того, как я поместил материал электронной почты, теперь он просто переходит на пустую страницу. Кто-нибудь знает, как я могу это исправить и позволить ему отправить подтверждение по электронной почте?
Вы перенаправляете страницу до запуска кода электронной почты, поэтому
переехать header('Location: login.php?action=active');
вниз и поместите его перед exit;
header('Location: login.php?action=active');
exit;
измените ваше заявление if, как это
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.";
}
Нет ошибки 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
[...]
));
Разве вы не должны проверить ответ и отправить электронное письмо из программы?
Существует множество причин, по которым ваш сценарий не отправляет электронные письма. Это трудно диагностировать, если нет явной синтаксической ошибки. Без такового вам нужно пройти через контрольный список ниже, чтобы найти любые возможные ловушки, с которыми вы можете столкнуться.