ошибка в логине - php / ajax - PullRequest
0 голосов
/ 18 марта 2011

У меня есть простая форма, чтобы проверить, существует ли пользователь в БД, и разрешить вход на другую страницу (да, я удаляю проверку пароля, чтобы упростить код, и я тестирую без пропуска, и скрипт всегда показывает Ваш логин недействительно).

База данных: emprego, таблица: пользователи, поля: id, имя пользователя, адрес электронной почты, пароль

<script type="text/javascript" language="javascript">
$(document).ready(function () {
    $("#login_form").submit(function () {
        $("#msgbox").removeClass().addClass('messagebox').text('Validating....').fadeIn(1000);
        $.post("ajax_login.php", {
            name: $('#name').val(),
        }, function (data) {
            if (data == 'yes') {
                $("#msgbox").fadeTo(200, 0.1, function () {
                    $(this).html('Logging in.....').addClass('messageboxok').fadeTo(900, 1, function () {
                        document.location = 'secure.php';
                    });
                });
            } else {
                $("#msgbox").fadeTo(200, 0.1, function () {
                    $(this).html('Your login is not valid').addClass('messageboxerror').fadeTo(900, 1);
                });
            }
        });
        return false; 
    });
}); 
</script>
    </head>
    <body>
        <form method="post" action="" id="login_form">
                    User Name : <input name="name" type="text" id="name">
                <div class="buttondiv">
                    <input name="Submit" type="submit" id="submit" value="Login" style="margin-left:-10px; height:23px">
                    <span id="msgbox" style="display:none"></span>
                </div>
        </form>

файл: ajax_login.php

<?php 

include("includes/f_banco.php");
conecta ();


$check = mysql_query("SELECT username FROM users WHERE username ='".mysql_real_escape_string($_POST['name'])."'")or die(mysql_error());
$row=mysql_fetch_array($check);

if ($row['username'] == $_POST['name']) {
    echo "yes";
    $_SESSION['name']=$row['username'];
}else{echo "no";}

?>

РЕДАКТИРОВАТЬ: обновленный код

какова возможная причина?

Ответы [ 2 ]

1 голос
/ 18 марта 2011

я вижу много проблем

<?php  
//removed the # from the post
$name = mysql_real_escape_string($_POST['name']);
//whys this here?
$row=mysql_fetch_array($check);
//name cant be used (common mistake)
$check = mysql_query("SELECT name FROM users WHERE name ='".$name."'")or die(mysql_error());
$check2 = mysql_num_rows($check);
if ($check2 == 1) {
    echo "yes";
    $_SESSION['name']=$name;
}

else
echo "no";
?>

попробуйте что-то вроде этого

<?php  
session_start();
include("includes/f_banco.php");
conecta ();

if(isset($_SESSION['name'])){echo "yes";}else{
    $check = mysql_query("SELECT username FROM users WHERE username ='".mysql_real_escape_string($_POST['name'])."' LIMIT 1")or die(mysql_error());
    $row=mysql_fetch_array($check);

    if ($row['username'] == $_POST['name']) {
        echo "yes";
        $_SESSION['name']=$row['username'];
    }else{echo "no";}
}


?>
0 голосов
/ 18 марта 2011

Возможно использование поля имени "имя"? См. jQuery проблема с живым кликом и вводом с именем «name»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...