Проверка того, соответствует ли пароль условию длины

Поэтому, прежде чем я добавил этот новый 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;

-1

Решение

Быстрый взгляд на возможную причину ошибок:

  • Линия 28 имеет else заявление последовало другое else на линии 30.
  • Строка 32 имеет 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;
1

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

Других решений пока нет …

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