Итак, сегодня я отредактировал этот код, который должен сделать так, чтобы пользователи могли изменять свои адреса электронной почты. После того, как они изменят свои адреса электронной почты, он отправит пользователю электронное письмо с подтверждением. Однако вместо этого я перенаправляюсь на внутреннюю страницу с ошибкой 500. :\ любая помощь? Я не вижу ничего плохого с кодом ..Что случилось с кодом моей электронной почты?
<?php
include("session.php");
//Create game account
$mysqli = new mysqli("localhost", "root", "password", "data");
if(mysqli_connect_errno()){
echo("Sorry, the server is 'Under Maintainance'");
exit();
}
$newemail = $mysqli->real_escape_string($_POST['email']);
$newemail = strtolower($newemail);
$password = $mysqli->real_escape_string($_POST['password']);
$hash = sha1(strtolower($name) . $password);
if(!isset($name)){
header("Location:index");
}else if($password == null || $password == "" || (strlen($password)) < 4 || strpos($password, '<') !== false || strpos($password, '>') !== false){
header("Location:cemail?error=6");//Invalid password
}else if($newemail == null || $newemail == "" || (strlen($newemail) <= 6 || strpos($newemail, '<') !== false || strpos($newemail, '>') !== false) || strpos($newemail, '@') == false || strpos($newemail, ".com") == false){
header("Location:cemail?error=7");//Invalid Email address
}else if($email == $newemail){
header("Location:cemail?error=7");//Invalid Email address
}else{
$result = $mysqli->query("SELECT * FROM characters WHERE email='$newemail' && name!='$name");
$row_cnt = $result->num_rows;
$result->free();
if($row_cnt != 0){
header("Location:cemail?error=3");//Email already taken
}else{
$result = $mysqli->query("SELECT * FROM characters WHERE originemail='$newemail' && name!='$name'");
$row_cnt = $result->num_rows;
$result->free();
if($row_cnt != 0){
header("Location:cemail?error=3");//Email already taken
}else{
$result = $mysqli->query("SELECT * FROM characters WHERE name='$name'");
/* fetch associative array */
while($row = $result->fetch_assoc()){
$pass = $row['pass'];
$originemail = $row['originemail'];
}
/* free result set */
$result->free();
if($hash != $pass){
header("Location:cemail?error=6");//Invalid Password Match
}else{
$mysqli->query("UPDATE characters SET email='$newemail' WHERE name='$name'");
//Send Email to confirm
$to = $newemail . ", " . $originemail;
$subject = "Your email address has now been successfully changed!";
$body = "This is a notification regarding the recent change(s) made to your Legion Online account: " . $username . "
\n\n
Your email address has recently been modified through the Legion Online website. If you made this email address change, please disregard this notification. If you did not change your email address, please visit the account recovery page to ensure your account is secure.\n\nEmail addresses connected to this account: \n" . $originemail . "(primary)\n" . $newemail;
$headers = "From: [email protected]" . "\r\n";
if(mail($to, $subject, $body, $headers)){
header("Location:accountsettings");
}else{
echo "Email request failed.";
}
}
}
}
}
$mysqli->close();
?>
Посмотрите в журналах ошибок и увидеть, что ошибка. – JJJ
Или если вы не можете найти журналы ошибок, добавьте 'ini_set ('display_errors', 1);' временно в верхнюю часть файла (прямо под ' Php'). После этого обязательно удалите его. – Brilliand
Обратите внимание, что пароль, который вы отредактировали, все еще находится в истории изменений. – Brilliand