Не понимаю в чем дело. Если убрать проверку вводимых символов - все ок. С ней же - нет. В чем косяк ?
<form name="reg">
UserID: <input type="text" id="name" name="name" size=20><br><br>
Password: <input type="password" id="pass" name="pass" size=20><br><br>
Confirm Password: <input type="password" id="confirm" name="confirm" size=20><br><br>
<button id="submit_form">Отправить</button>
</form>
<div id="result"></div>
$(document).ready(function(){
$("#submit_form").click(function(){ //при клике на кнопку <button id="submit_form">Отправить</button> выполняем функцию
$.post("/account.php", $("#name","#pass","#confirm").serialize(), function(response) { //здесь #form_id - это ID формы, которая будет отправляться
$("#result").html(response); //вывод ответа от php-скрипта в <div id="result"></div>
});
return false;
});
});
<?
$dbselect = mysql_select_db("$dbname")
or die ('Could not select database');
$user = mysql_real_escape_string($_POST["name"]);
$pass = mysql_real_escape_string($_POST["pass"]);
$confirm = mysql_real_escape_string($_POST["confirm"]);
if(!preg_match("/^[\.A-z0-9_\-\+]+[@][A-z0-9_\-]+([.][A-z0-9_\-]+)+[A-z]{1,4}$/",$user)) {
die ('Ошибка: Имя пользователя может содержать только алфавитно-цифровые символы и должны быть между 5 и 20 символов в длину.');
}
if(!preg_match('/^[a-zA-Z0-9]{5,20}$/',$pass)) {
die ('Ошибка: Пароль пользователя может содержать только алфавитно-цифровые символы и должны быть между 5 и 20 символов в длину.');
}
if($pass != $confirm) {
die ('Ошибка: Пароли не совпадают.');
}
$result = mysql_query("SELECT login FROM accounts WHERE login='$user'");
if(mysql_num_rows($result)>0) {
die ('Ошибка: Имя пользователя уже существует.');
}else{
mysql_query("INSERT INTO accounts (login, password, accessLevel) VALUES ('".$_POST['name']."', '".base64_encode(pack('H*', sha1($_POST['pass'])))."', 0)")
or die ('Error: ' . mysql_error());
}
echo "Account created successfully.";
mysql_close();
?>