这个脚本在点击检查电子邮件和密码长度的一系列“if”语句时似乎挂断了。如果我删除这些语句,它会正确地将数据插入到数据库中。
<?php
ob_start();
session_start();
if (!empty($_POST['email']) && !empty($_POST['password']) && !empty($_POST['confirmpassword'])) {
$email = strip_tags($_POST['email']);
$password = md5(strip_tags($_POST['password']));
$confirmpassword = md5(strip_tags($_POST['confirmpassword']));
$errors = array();
if (strlen($email) < 6) {
$errors[] = "Email too short.";
}
if (strlen($email) > 25) {
$errors[] = "Email too long.";
}
if (strlen($password) < 2) {
$errors[] = "Password too short.";
}
if (strlen($password) > 25) {
$errors[] = "Password too short.";
}
if ($password !== $confirmpassword) {
$errors[] = "Passwords do not match.";
}
if (count($errors) == 0) {
// Include database config file then connect to database
require('db_config.php');
$connection = mysql_connect(DB_HOST,DB_USERNAME,DB_PASSWORD) or die("Database Connection Error");
$database = mysql_select_db(DB_NAME) or die("No Database");
// Create query
$query = "INSERT INTO bah_register VALUES ('','$email','$password')";
// Query database and
mysql_query($query);
// Success message
echo "Thanks for signing up!";
} else {
foreach ($errors as $error) {
echo $error . "<br />";
}
}
}
?>
答案 0 :(得分:5)
您的问题是,在检查长度之前,您md5
密码。这会将密码设置为32个字符,这大于您的限制并产生错误。
答案 1 :(得分:5)
您正在检查strlen($password) > 25
,密码为md5
,其长度超过25个符号。您可能想要检查密码的原始值
答案 2 :(得分:3)
我不知道您的代码有什么问题,但对于您的电子邮件,您可能会考虑使用以下内容:
if(!preg_match('/^[^@]+@[a-zA-Z0-9._-]+\.[a-zA-Z]+$/', $email)){
$errors[] = "Email is not valid.";
}
许多电子邮件超过25个字符。
答案 3 :(得分:2)
带有错误数组的foreach可以很容易地用以下代码替换
echo implode('<br />', $errors);
可以使用filter_var功能
完成正确的电子邮件验证strip_tags函数可能会对密码产生不良影响,可能会删除部分密码。请考虑以下密码:«&lt; my&gt; super!password»