2012-01-13 1 views
-1

Этот скрипт, похоже, повесил трубку, когда он попал в серию операторов «if», проверяющих длину письма и пароля. Если я удалю эти утверждения, он правильно вставляет данные в db.У вас возникли трудности с моим скриптом регистрации PHP

<?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

Какая у нас ошибка, мы не можем побеспокоить вас без ошибок –

+0

Что не работает должным образом? – jprofitt

+0

Есть ли конкретная ошибка, которую он генерирует? Что не работает должным образом? – dm03514

ответ

5

Ваша проблема заключается в том, что вы указали пароль перед проверкой длины. Это ставит пароль на 32 символа, что превышает ваш лимит и создает ошибку.

+0

:) +1. Да, почти в то же время – a1ex07

+0

@ a1ex07 Да, я думаю, что мы были всего на 4 секунды друг от друга. lol ~ – James

+0

@ Джеймс - спасибо! новичок ошибка с моей стороны :) –

3

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

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

много писем длиннее 25 символов.

5

Вы проверяете strlen($password) > 25 и ваш пароль md5 hashsum, длина которого превышает 25 символов. Вы, наверное, хотели проверить исходное значение пароля

+0

Едва тебя избили. ; P – James

+0

@ a1ex07 спасибо! –

2

Еогеаспа с массивом ошибок Исли может быть заменен следующим кодом
echo implode('<br />', $errors);

проверка Правильной электронной почты может быть сделана с помощью функции filter_var

Функции strip_tags могут иметь нежелательные последствия для пароля, вероятно, его части будут удалены. Вспомните следующий пароль: «<my> super! Password»