Форум администраторов игровых серверов

Форум администраторов игровых серверов (https://forum.zone-game.info/TT.php)
-   PHP (https://forum.zone-game.info/forumdisplay.php?f=125)
-   -   php & jquery post (https://forum.zone-game.info/showthread.php?t=40187)

ccc 21.02.2016 20:31

php & jquery post
 
Хай.

Есть форма передающая данные логин,пароль. Так же в этом скрипте происходит проверка доступных символов. Вот только с ней что то не так. Подскажите пж.

PHP код:

<form name="reg"UserID: <input type="text" id="name" name="name" size=20><br><brPassword: <input type="password" id="pass" name="pass" size=20><br><brConfirm Password: <input type="password" id="confirm" name="confirm" size=20><br><br> <button id="submit_form">Отправить</button> </form> <div id="result"></div>
<
script type="text/javascript">

$(
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;
});
});

</script> 

PHP код:

<? $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();


PROGRAMMATOR 21.02.2016 21:43

Re: php & jquery post
 
Код:

$("#submit_form").click(function()
Наверное так:

$(document).on('submit', '#submit_form', function(e) {
	e.preventDefault();
 
	$.post('account.php', $(this).serialize(), function(response) {
		$('#result').html(response);
	});
});
 
Code: Javascript
А что там с регуляркой я не знаю, не описали, как должно быть, а что получаете.

ccc 21.02.2016 22:05

Re: php & jquery post
 
Должно быть так: открывается бок - > юзер вводит данные -> жмет кнопку отправить -> в этом же боксе виден результат о ходе операции.

Если убрать проверку на вводимые символы оно работает, с проверкой нет. я хз.

PHP код:

//get username and password info from the form, protecting against SQL injection 
$user mysql_real_escape_string($_POST["name"]);
$pass mysql_real_escape_string($_POST["pass"]); 
$confirm mysql_real_escape_string($_POST["confirm"]); 

//validate user input 
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 (
'Ошибка: Пароли не совпадают.'); 

  
//make sure user doesn't already exist and if it doesn't, add new record to the database 
$result mysql_query("SELECT login FROM accounts WHERE login='$user'"); 
  
if(
mysql_num_rows($result)>0) { 
die (
'Ошибка: Имя пользователя уже существует.'); 

p.s.

Под боксом имею ввиду всплывающее окно.

PROGRAMMATOR 21.02.2016 22:11

Re: php & jquery post
 
Цитата:

Сообщение от wasd (Сообщение 407329)
Если убрать проверку на вводимые символы оно работает, с проверкой нет. я хз.

Можете описать, что разрешено для вводимого? По виду там вообще в name только email должен был быть вписан. Но она не рабочая для определения email.

ccc 21.02.2016 22:14

Re: php & jquery post
 
Цитата:

Сообщение от PROGRAMMATOR (Сообщение 407331)
Можете описать, что разрешено для вводимого? По виду там вообще в name только email должен был быть вписан. Но она не рабочая для определения email.

Проверял другие значения.

Допустим тоже самое = [a-zA-Z0-9]{5,20}

PROGRAMMATOR 21.02.2016 22:23

Re: php & jquery post
 
http://image.zone-game.info/images/2016/02/21/GFcn4.png

А вообще, если проверяете юникод, то добавьте модификатор U.
И пароли проверять можно на сложность, на длину, но не на вводимые символы. Сохранять вам все равно его хеш.

ccc 21.02.2016 23:31

Re: php & jquery post
 
Сложна ...

Dambenok 22.02.2016 17:13

Re: php & jquery post
 
Цитата:

Сообщение от wasd (Сообщение 407326)
Хай.

Есть форма передающая данные логин,пароль. Так же в этом скрипте происходит проверка доступных символов. Вот только с ней что то не так. Подскажите пж.

PHP код:

<form name="reg"UserID: <input type="text" id="name" name="name" size=20><br><brPassword: <input type="password" id="pass" name="pass" size=20><br><brConfirm Password: <input type="password" id="confirm" name="confirm" size=20><br><br> <button id="submit_form">Отправить</button> </form> <div id="result"></div>
<
script type="text/javascript">

$(
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;
});
});

</script> 


PHP код:

<form id="reg" action="action" method="post"UserID: <input type="text" id="name" name="name" size=20><br><brPassword: <input type="password" id="pass" name="pass" size=20><br><brConfirm Password: <input type="password" id="confirm" name="confirm" size=20><br><br> <button id="submit_form">Отправить</button> </form> <div id="result"></div>
<
script type="text/javascript">
$(function() {
    $(
'#reg').submit(function(e) {
        
e.preventDefault();
        var 
m_method = $(this).attr('method');
        var 
m_action = $(this).attr('action');
        var 
m_data = $(this).serialize();
        $.
ajax({
            
typem_method,
            
urlm_action,
            
datam_data,
            
success: function(result) {

                $(
'#result').html(result);
            
console.log(result);
            
            }
        });
    });
});
</script> 

попробуй так.

PROGRAMMATOR 22.02.2016 17:51

Re: php & jquery post
 
Dambenok, форма не отправится. У кнопки не проставлен тип submit.

ccc 22.02.2016 18:42

Re: php & jquery post
 
Dambenok, йоу, воркает :).


Текущее время: 05:05. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot