Поэтому, прежде чем я добавил этот новый if
заявление в мой код, где он проверяет длину строки, он работал отлично. Я сейчас попытался добавить дополнительный if
Это заявление о том, что длина пароля в форме соответствует условию от 6 до 32 символов, но по какой-то причине я все еще получаю сообщение об ошибке (ошибка сервера 500).
Я пытался читать код снова и снова, но не могу определить, что вызывает эту ошибку. Я не уверен, что это место, где я разместил это утверждение, может быть причиной того или иного, меньшего и более простого, чем это.
Был бы признателен за некоторые советы по этому поводу. Заранее спасибо.
<?php
ini_set('display_errors', 'On');
ini_set('html_errors', 0);
error_reporting(-1);
require 'connection.php';
$message = '';
$username = $_POST['username'];
$password = $_POST['password'];
$confirmpassword = $_POST['confirmpassword'];
if (!empty($_POST['username']) && !empty($_POST['password'])):
//var_dump($password, $confirmpassword);
if(strlen($password) < 6 || strlen($password) > 32):
if($password == $confirmpassword):$sql = "INSERT INTO users (FirstName, LastName, Role, Email, Username, Password) VALUES (:firstname, :lastname, :role, :email, :username, :password)";
$stmt = $conn->prepare($sql);
$hashPassword = password_hash($password, PASSWORD_DEFAULT);
$stmt->bindParam(':firstname', $_POST['firstname']);
$stmt->bindParam(':lastname', $_POST['lastname']);
$stmt->bindParam(':role', $_POST['role']);
$stmt->bindParam(':email', $_POST['email']);
$stmt->bindParam(':username', $_POST['username']);
$stmt->bindParam(':password', $hashPassword);
if ($stmt->execute()):
echo 'Well done! You have successfully registered with us!';
header('Location:loginPage.php');
else:
echo 'There seems to be an issue getting you registered.';
//$message = 'There seems to be an issue getting you registered.';
endif;
else:
echo 'Your password must be between 6 to 32 characters.';
else:
echo 'Your passwords do not match, please enter them correctly.';
header('Location:registerPage.php');
endif;
endif;
endif;
Быстрый взгляд на возможную причину ошибок:
else
заявление последовало другое else
на линии 30.header(Location:)
вызов после эха, который не будет работать, потому что header()
ничего не может быть выведено / напечатано до этого.Кроме того, обычно внутренняя ошибка (500) вызвана неправильной конфигурацией Apache вместо ошибки кода. Вы пытались удалить свой лишний if()
Заявление и посмотреть, если ваш код работает?
Изменить с помощью кода:
ini_set('display_errors', 'On');
ini_set('html_errors', 0);
error_reporting(-1);
require 'connection.php';
$message = '';
$username = $_POST['username'];
$password = $_POST['password'];
$confirmpassword = $_POST['confirmpassword'];
if (!empty($_POST['username']) && !empty($_POST['password'])):
//var_dump($password, $confirmpassword);
if(strlen($password) < 6 || strlen($password) > 32):
if($password == $confirmpassword):
$sql = "INSERT INTO users (FirstName, LastName, Role, Email, Username, Password) VALUES (:firstname, :lastname, :role, :email, :username, :password)";
$stmt = $conn->prepare($sql);
$hashPassword = password_hash($password, PASSWORD_DEFAULT);
$stmt->bindParam(':firstname', $_POST['firstname']);
$stmt->bindParam(':lastname', $_POST['lastname']);
$stmt->bindParam(':role', $_POST['role']);
$stmt->bindParam(':email', $_POST['email']);
$stmt->bindParam(':username', $_POST['username']);
$stmt->bindParam(':password', $hashPassword);
if ($stmt->execute()):
echo 'Well done! You have successfully registered with us!';
header('Location:loginPage.php');
else:
echo 'There seems to be an issue getting you registered.';
//$message = 'There seems to be an issue getting you registered.';
endif;
else:
echo 'Your password must be between 6 to 32 characters.';
endif;
// ========= You need to add `endif` (above) before starting another `else`
else:
echo 'Your passwords do not match, please enter them correctly.';
endif;
header('Location:registerPage.php');
endif;
Изменить 2, тот же код, но с дополнительной строкой визуального блока (предупреждение: приведет к синтаксической ошибке):
ini_set('display_errors', 'On');
ini_set('html_errors', 0);
error_reporting(-1);
require 'connection.php';
$message = '';
$username = $_POST['username'];
$password = $_POST['password'];
$confirmpassword = $_POST['confirmpassword'];
if (!empty($_POST['username']) && !empty($_POST['password'])):
//var_dump($password, $confirmpassword);
if(strlen($password) < 6 || strlen($password) > 32):
|
| if($password == $confirmpassword):
| | $sql = "INSERT INTO users (FirstName, LastName, Role, Email, Username, Password) VALUES (:firstname, :lastname, :role, :email, :username, :password)";
| | $stmt = $conn->prepare($sql);
| | $hashPassword = password_hash($password, PASSWORD_DEFAULT);
| | $stmt->bindParam(':firstname', $_POST['firstname']);
| | $stmt->bindParam(':lastname', $_POST['lastname']);
| | $stmt->bindParam(':role', $_POST['role']);
| | $stmt->bindParam(':email', $_POST['email']);
| | $stmt->bindParam(':username', $_POST['username']);
| | $stmt->bindParam(':password', $hashPassword);
| | if ($stmt->execute()):
| | echo 'Well done! You have successfully registered with us!';
| | header('Location:loginPage.php');
| | else:
| | echo 'There seems to be an issue getting you registered.';
| | //$message = 'There seems to be an issue getting you registered.';
| | endif;
| else:
| echo 'Your password must be between 6 to 32 characters.';
| endif;
|
// ========= You need to add `endif` (above) before starting another `else`
else:
echo 'Your passwords do not match, please enter them correctly.';
endif;
header('Location:registerPage.php');
endif;
Других решений пока нет …