我的PHP注册脚本有问题吗

我的PHP注册脚本有问题吗,php,mysql,registration,Php,Mysql,Registration,当这个脚本点击一系列检查电子邮件和密码长度的“if”语句时,它似乎挂断了。如果我删除这些语句,它会正确地将数据插入数据库 <?php ob_start(); session_start(); if (!empty($_POST['email']) && !empty($_POST['password']) && !empty($_POST['confirmpassword'])) { $email = strip_tags($_POST['email

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

?>

<代码> 我不知道你的代码有什么问题,但是对于你的电子邮件,你可能会考虑使用这样的东西:

if(!preg_match('/^[^@]+@[a-zA-Z0-9._-]+\.[a-zA-Z]+$/', $email)){
    $errors[] = "Email is not valid.";
}

许多电子邮件长度超过25个字符。

您的问题是,在检查长度之前,您正在
md5
输入密码。这会将密码设置为32个字符,超过您的限制并产生错误。

您正在检查
strlen($password)>25
,您的密码是
md5
hashsum,长度超过25个符号。您可能想检查密码的原始值

带有错误数组的foreach可以很容易地替换为以下代码
echo内爆(“
”,$errors)

可以使用该功能进行适当的电子邮件验证


strip_tags功能可能会对密码产生不希望的影响,可能会删除部分密码。考虑以下密码:«超级!密码»

发生了什么错误,没有错误我们无法帮助您它是否产生了特定的错误?什么工作不正常?有什么问题?如果你说它不能正常工作,你就会被否决,这个线程也会被关闭。解释更多。你能发布
bah_register
create table script吗?顺便说一句…这个问题不是一个问题,而是一个陈述,因为这个广告。,!或者什么都没有,而不是?:)+1。是的,差不多time@Matt没问题。我有很多这样的想法。哈哈~