我在我的网站上创建了一个简单的“订阅我的简报”字段。
在数据库中我有
如果用户是新用户并注册,则会将其重定向到感谢页面。
如果出现问题,他们会被重定向到失败的尝试页面。
如果电子邮件已经在数据库表格中,我需要的是一个页面,上面写着“此电子邮件已在使用中”。
我想我可以简单地让失败的尝试页面电子邮件已经在使用页面,因为我没有看到什么可能出错,因为电子邮件在数据库中设置为唯一,但我不确定我是否应该这样做与否......?
这是我正在使用的代码。如果有人可以帮我检查重复的电子邮件,那么我可以显示正确的重定向,我会很感激。
<?php
include_once($_SERVER['DOCUMENT_ROOT'] . "/core/database.php");
try {
$emails = Input::get('emails');
$creation = date('Y-m-d H:i:s');
$email_id = Input::get('email_id');
$insertemail = DB::getInstance()->insert('subscriptions', array(
'emails' => $emails,
'creation' => $creation,
'email_id' => $email_id,
));
if(!$insertemail) {
header("Location:failed-sub.php");
} else {
header("Location:successful-sub.php");
}
} catch(Exception $e) {
?><div class="add-errors"><?php die($e->getMessage()); ?></div><?php
}
?>
答案 0 :(得分:0)
从用户体验的角度来看,我只是重新加载注册页面会尝试失败,并在表单上方显示一条警告,解释失败的原因(在这种情况下,电子邮件已在使用中)。
$errors = array();
try {
$user = User::where('email', Input::get('emails'))->first();
if ($user) {
throw new Exception('Email already exists.');
} else {
// carry on and create the user
// redirect to success page
}
catch (Exception $e) {
$errors[] = $e->getMessage();
}
if (count($errors)) { ?>
<div class="alert alert-danger">
The form failed because:
<ul>
<?php
foreach($errors as $errorMessage) {
echo "<li>$errorMessage</li>";
} ?>
</ul>
</div>
<?php } ?>
<!-- the rest of your form page -->
注意:此示例使用带有Eloquent ORM的引导主题作为数据库内容。