【发布时间】:2016-02-16 17:16:21
【问题描述】:
所以在我将这个新的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;
【问题讨论】:
-
检查您的日志,
error_reporting(E_ALL);ini_set('display_errors', 1);- 它会告诉您出了什么问题。 -
允许用户使用他们想要的passwords / phrases 并且[不限制密码] (jayblanchard.net/security_fail_passwords.html)。
-
错过了@Qirel,感谢您的提醒!
-
@user3453342 快速计数(我可能错了),但似乎你有一个
endif放错了位置(你有两个elses 连续) -
错误报告应该在这里给您带来了一些东西,但您没有与我们分享。
标签: php passwords string-length