json/php/mysql登录连接错误

zd287kbt  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(292)

我对php编程还比较陌生,我正在尝试测试json和mysql旁边的登录页面。我设法使它的大部分功能,但我似乎找不到一种方法,使我验证用户名和密码的工作查询。
请帮忙。
代码如下:
登录.js:

$(document).ready(function(){
    $('#errorLogin').hide();
    $('#formLogin').submit(function(e){
        var username=$('#inputUser').val();
        var password=$('#inputPassword').val();
        $.ajax({
            type:'get',
            dataType: 'json',
            url: 'dist/php/connection-login.php',
            data: {
                user: username,
                pass: password
            },
            success: function(e){
                console.log(e);
            }
        });
    });
});

connection-login.php:

<?php 
    $con = new mysqli("localhost", "root", "root", "solucionar_manutencoes_db");

    $lg_user=$_GET['user'];
    $lg_password=$_GET['pass'];

    if (mysqli_connect_errno()) trigger_error(mysqli_connect_error());

    $qry = mysqli_query($con, "SELECT * FROM tb_login WHERE lg_user = '$lg_user' AND lg_password = '$lg_password';");    
    $result = mysqli_fetch_assoc($qry);
    $row = mysqli_fetch_assoc($result);

    if ($row != 0) {
        $response["success"] = 1;
        echo json_encode($response);
    }
    else {
        $response["failed"] = 0;
        echo json_encode($response);
    }
?>
toe95027

toe950271#

您的php应该更像:
connect.php-确保这是一个单独的安全页面

<?php 
function db(){
  return new mysqli('localhost', 'root', 'root', 'solucionar_manutencoes_db');
}
?>

我会将您的javascript ajax更改为post请求,除非您有理由这样做。
connection-login.php连接

<?php
sesson_start(); include 'connect.php';
if(isset($_POST['user'], $_POST['pass'])){
  $db = db(); $r = array();
  $prep = $db->prepare('SELECT `lg_user` FROM login WHERE `lg_user`=? && lg_user=?');
  $prep->bind_param('ss', $_POST['user'], $_POST['pass']); $prep->execute();
  if($prep->num_rows){
    $prep->bind_result($lg_user); $r['user'] = $lg_user;
    $_SESSION['logged_in'] = $lg_user;
  }
  echo json_encode($r);
}
?

现在,如果javascript ajax结果不包含 e.user 那么他们就不会登录。当然,您可能希望将原始密码存储为sha1或更高版本,并对个人信息使用aes\u或更好的加密,以及ssl。

vhipe2zx

vhipe2zx2#

我看到你的代码中有几个错误。第一个是执行mysqli\u fetch\u assoc两次:一次是对结果执行,另一次是对返回的第一个调用的数组执行。其次是从未声明$response变量。下面是固定的php脚本:

<?php 

$con = mysqli_connect("localhost", "root", "root", "solucionar_manutencoes_db");

$lg_user=$_GET['user'];
$lg_password=$_GET['pass'];

if (mysqli_connect_errno()) trigger_error(mysqli_connect_error());

$qry = mysqli_query($con, "SELECT * FROM tb_login WHERE lg_user = '$lg_user' AND lg_password = '$lg_password';");    
$results = mysqli_fetch_assoc($qry);

$response = [];

if (count($results) != 0) {
    $response["success"] = 1;
    echo json_encode($response);
}
else {
    $response["failed"] = 0;
    echo json_encode($response);
}
?>

在javascript中,确保在#formlogin的提交处理程序中使用e.preventdefault(),以防止在提交表单时重新加载页面。

相关问题