Относительно HTTP ERROR 500 после нажатия кнопки и ошибки электронной почты PhpMailer

<?php require('includes/config.php');

//if logged in redirect to members page
if( $user->is_logged_in() ){ header('Location: memberpage.php'); }

//if form has been submitted process it
if(isset($_POST['submit'])){

//very basic validation
if(strlen($_POST['username']) < 3){
$error[] = 'Username is too short.';
} else {
$stmt = $db->prepare('SELECT username FROM members WHERE username = :username');
$stmt->execute(array(':username' => $_POST['username']));
$row = $stmt->fetch(PDO::FETCH_ASSOC);

if(!empty($row['username'])){
$error[] = 'Username provided is already in use.';
}

}

if(strlen($_POST['password']) < 3){
$error[] = 'Password is too short.';
}

if(strlen($_POST['passwordConfirm']) < 3){
$error[] = 'Confirm password is too short.';
}

if($_POST['password'] != $_POST['passwordConfirm']){
$error[] = 'Passwords do not match.';
}

//email validation
if(!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)){
$error[] = 'Please enter a valid email address';
} else {
$stmt = $db->prepare('SELECT email FROM members WHERE email = :email');
$stmt->execute(array(':email' => $_POST['email']));
$row = $stmt->fetch(PDO::FETCH_ASSOC);

if(!empty($row['email'])){
$error[] = 'Email provided is already in use.';
}

}//if no errors have been created carry on
if(!isset($error)){

//hash the password
$hashedpassword = $user->password_hash($_POST['password'], PASSWORD_BCRYPT);

//create the activasion code
$activasion = md5(uniqid(rand(),true));

try {

//insert into database with a prepared statement
$stmt = $db->prepare('INSERT INTO members (username,password,email,active) VALUES (:username, :password, :email, :active)');
$stmt->execute(array(
':username' => $_POST['username'],
':password' => $hashedpassword,
':email' => $_POST['email'],
':active' => $activasion
));
$id = $db->lastInseratId('memberID');

//send email
$to = $_POST['email'];
$subject = "Registration Confirmation";
$body = "<p>Thank you for registering at demo site.</p>
<p>To activate your account, please click on this link: <a href='".DIR."activate.php?x=$id&y=$activasion'>".DIR."activate.php?x=$id&y=$activasion</a></p>
<p>Regards Site Admin</p>";

$mail = new Mail();
$mail->setFrom(SITEEMAIL);
$mail->addAddress($to);
$mail->subject($subject);
$mail->body($body);
$mail->send();

//redirect to index page
header('Location: index.php?action=joined');
exit;

//else catch the exception and show the error.
} catch(PDOException $e) {
$error[] = $e->getMessage();
}

}

}

?>

<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<meta charset="utf-8" />
<title>New User Registration</title>

<meta name="description" content="User login page" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" />

<!-- bootstrap & fontawesome -->
<link rel="stylesheet" href="assets/css/bootstrap.min.css" />
<link rel="stylesheet" href="assets/font-awesome/4.2.0/css/font-awesome.min.css" />

<!-- text fonts -->
<link rel="stylesheet" href="assets/fonts/fonts.googleapis.com.css" />

<!-- ace styles -->
<link rel="stylesheet" href="assets/css/ace.min.css" />

<!--[if lte IE 9]>
<link rel="stylesheet" href="assets/css/ace-part2.min.css" />
<![endif]-->
<link rel="stylesheet" href="assets/css/ace-rtl.min.css" />

<!--[if lte IE 9]>
<link rel="stylesheet" href="assets/css/ace-ie.min.css" />
<![endif]-->

<!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->

<!--[if lt IE 9]>
<script src="assets/js/html5shiv.min.js"></script>
<script src="assets/js/respond.min.js"></script>
<![endif]-->
</head>
<body class="login-layout">
<div class="main-container">
<div class="main-content">
<div class="row">
<div class="col-sm-10 col-sm-offset-1">
<div class="login-container">
<div class="center">
<h1>
<i class="ace-icon fa fa-leaf green"></i>
<span class="red">Ace</span>
<span class="white" id="id-text2">Application</span>
</h1>
<h4 class="blue" id="id-company-text">&copy; Company Name</h4>
</div>

<div class="space-6"></div>

<div class="position-relative">

<div id="signup-box" class="signup-box widget-box no-border visible">
<div class="widget-body">
<div class="widget-main">
<h4 class="header green lighter bigger">
<i class="ace-icon fa fa-users blue"></i>
New User Registration
</h4>

<div class="space-6"></div>
<p> Enter your details to begin: </p>

<form role="form" method="post" action="" autocomplete="off">
<?php
//check for any errors
if(isset($error)){
foreach($error as $error){
echo '<p class="bg-danger">'.$error.'</p>';
}
}

//if action is joined show sucess
if(isset($_GET['action']) && $_GET['action'] == 'joined'){
echo "<h2 class='bg-success'>Registration successful, please check your email to activate your account.</h2>";
}
?>
<fieldset>
<label class="block clearfix">
<span class="block input-icon input-icon-right">
<input type="email" name="email" id="email" class="form-control" placeholder="Email" value="<?php if(isset($error)){ echo $_POST['email']; } ?>" tabindex="1">
<i class="ace-icon fa fa-envelope"></i>
</span>
</label>

<label class="block clearfix">
<span class="block input-icon input-icon-right">
<input type="text" name="username" id="username" class="form-control" placeholder="Username" value="<?php if(isset($error)){ echo $_POST['username']; } ?>" tabindex="2">
<i class="ace-icon fa fa-user"></i>
</span>
</label>

<label class="block clearfix">
<span class="block input-icon input-icon-right">
<input type="password" name="password" id="password" class="form-control" placeholder="Password" tabindex="3">
<i class="ace-icon fa fa-lock"></i>
</span>
</label>

<label class="block clearfix">
<span class="block input-icon input-icon-right">
<input type="password" name="passwordConfirm" id="passwordConfirm" class="form-control" placeholder="Confirm password" tabindex="4">
<i class="ace-icon fa fa-retweet"></i>
</span>
</label>

<label class="block">
<input type="checkbox" class="ace">
<span class="lbl">
I accept the
<a href="#">User Agreement</a>
</span>
</label>

<div class="space-24"></div>

<div class="clearfix">
<button type="reset" class="width-30 pull-left btn btn-sm">
<i class="ace-icon fa fa-refresh"></i>
<span class="bigger-110">Reset</span>
</button>

<button type="submit" name="submit" class="width-65 pull-right btn btn-sm btn-success" tabindex="5">
<span class="bigger-110">Register</span>

<i class="ace-icon fa fa-arrow-right icon-on-right"></i>
</button>
</div>
</fieldset>
</form>
</div>

<div class="toolbar center">
<a href="login.html" class="back-to-login-link">
<i class="ace-icon fa fa-arrow-left"></i>
Back to login
</a>
</div>
</div><!-- /.widget-body -->
</div><!-- /.signup-box -->
</div><!-- /.position-relative -->

</div>
</div><!-- /.col -->
</div><!-- /.row -->
</div><!-- /.main-content -->
</div><!-- /.main-container -->

<!-- basic scripts -->

<!--[if !IE]> -->
<script src="assets/js/jquery.2.1.1.min.js"></script>

<!-- <![endif]-->

<!--[if IE]>
<script src="assets/js/jquery.1.11.1.min.js"></script>
<![endif]-->

<!--[if !IE]> -->
<script type="text/javascript">
window.jQuery || document.write("<script src='assets/js/jquery.min.js'>"+"<"+"/script>");
</script>

<!-- <![endif]-->

<!--[if IE]>
<script type="text/javascript">
window.jQuery || document.write("<script src='assets/js/jquery1x.min.js'>"+"<"+"/script>");
</script>
<![endif]-->
<script type="text/javascript">
if('ontouchstart' in document.documentElement) document.write("<script src='assets/js/jquery.mobile.custom.min.js'>"+"<"+"/script>");
</script>

</body>
</html>

****----------------Here is my Mail.php file-------------------****
<?php
include('phpmailer.php');
class Mail extends PhpMailer
{
// Set default variables for all new objects
public $From     = '[email protected]';
public $FromName = SITETITLE;
public $Host     = 'smtp.gmail.com';
public $Mailer   = 'isSMTP';
public $SMTPAuth = true;
public $Username = '[email protected]';
public $Password = 'password';
public $SMTPSecure = 'ssl';
public $WordWrap = 75;

public function subject($subject)
{
$this->Subject = $subject;
}

public function body($body)
{
$this->Body = $body;
}

public function send()
{
$this->AltBody = strip_tags(stripslashes($this->Body))."\n\n";
$this->AltBody = str_replace("&nbsp;", "\n\n", $this->AltBody);
return parent::send();
}
}

**** Когда я отправляю кнопку регистрации на http://monthlyreport.ultimatefreehost.in Я всегда вижу ошибку HTTP500, но запрос Sql регистрации сохраняет данные. Но перенаправление на заголовок страницы индекса («Location: index.php? Action = join»); Может быть, не делать работу !!!!#Solved

Также почта не всегда отправляется для активации, пожалуйста, помогите мне решить эту ошибку !!
Я получаю электронную почту в свой почтовый ящик, как вложение. Вот скриншот электронной почты и скриншот файла вложения — [Скриншот электронной почты] [1] Скриншот вложения электронной почты

[1]: http://i.stack.imgur.com/MUOEy.png Email Inbox Screenshot

0

Решение

Вы получаете lastinsertid от объекта PDO, а не от объекта результатов.

Не могли бы вы заменить $id = $db->lastInsertId('memberID');' with$ id = $ db-> lastInseratId (‘memberID’); ‘?

Если вы хотите перенаправить с помощью pah, используйте следующий код.
header("Location: index.php?action=joined", true, 302);

Вы также можете перенаправить с помощью Javascript.
echo "<script>window.location = 'index.php?action=joined';</script>";

Не могли бы вы попробовать это?

0

Другие решения

Пытаться

header('Location:index.php?action=joined');
0

По вопросам рекламы [email protected]