Ajax Php登录表单txt文件

时间:2018-03-09 14:35:28

标签: php ajax forms login passwords

如果用户/密码存在于txt文件中,我正在尝试使用php验证设置ajax登录表单。

表格:

    <form class="form login" id="log_user">

    <input id="login__username" type="text" name="username" class="form__input" placeholder="Username" required>

    <input id="login__password" type="password" name="password" class="form__input" placeholder="Password" required>

    <input type="submit" value="Log In">

</form>

javascript:

$(document).ready(function(){
$("#log_user").submit(function(){
    $.ajax({
        type:"POST", 
        data:{
            username : $("#login__username").val(),
            password : $("#login__password").val()
            }, 
        url:"log_user.php",
        success: function(data){
            if(data == 'Success'){
                alert('Login Passw correct');
                }
            else{
                alert(data);
                }
        },
         error: function(){
                alert('something went wrong');
        }
    });
    return false;
});});

PHP:

    <?php

foreach(file('passwd.txt') as $line) {

    if(empty($line)) continue;

    $lineArray = explode(':', $line);
    $username = rtrim($lineArray[0]);
    $password = rtrim($lineArray[1]);

    if( isset($_POST['username']) && isset($_POST['password']) ){

        if($_POST['username'] == $username && $_POST['password'] == $password){ 
            session_start();
            $_SESSION['user'] = $username;
            echo "Success";    
        }
        else{
            echo "Failed";
        }
    }
}

?>

passwd.txt

myname:mypassw
myname2:mypassw2

每次尝试我都有SuccessFailed或FailedFailed,不明白为什么? 一个线索?

1 个答案:

答案 0 :(得分:0)

问题在于您的foreach循环。我假设您存储了多个用户名和密码?如果你输入一个正确的联合国和pw它回声成功,但你没有告诉它在那一点停止,所以下一个条目运行与un和pw不匹配,所以它回应失败。

这里的解决方案是使用foreach之外的变量,如果找到用户名和密码,则将其切换为真值(在本例中为TRUE)。在foreach之后,我们会检查此变量的值,并echo检查相应的响应:

$success = FALSE;
foreach(file('passwd.txt') as $line) {

    if(empty($line)) continue;

    $lineArray = explode(':', $line);
    $username = rtrim($lineArray[0]);
    $password = rtrim($lineArray[1]);

    if( isset($_POST['username']) && isset($_POST['password']) ){

        if($_POST['username'] == $username && $_POST['password'] == $password){ 
            session_start();
            $_SESSION['user'] = $username;
            $success = TRUE;
            break; // stop looping through text file.
        }
    }
}
echo $success ? 'Success' : 'Failed';