我的PHP注册脚本有困难

时间:2012-01-13 21:05:15

标签: php mysql registration

这个脚本在点击检查电子邮件和密码长度的一系列“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 />";
    }
}
}

?>

4 个答案:

答案 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»

相关问题