Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 需要弄清楚为什么单击“我的标题”时不';不要用正确的信息重定向_Php_Html_Jquery_Ajax - Fatal编程技术网

Php 需要弄清楚为什么单击“我的标题”时不';不要用正确的信息重定向

Php 需要弄清楚为什么单击“我的标题”时不';不要用正确的信息重定向,php,html,jquery,ajax,Php,Html,Jquery,Ajax,因此,我正在尝试为我的数据库编写一个用户身份验证脚本,单击按钮,我希望匹配mysql数据库中的信息,以便在正确的情况下重定向到另一个页面。但一按按钮,我就什么也没发生。我似乎不明白为什么。无论登录信息是否正确,似乎都没有发生任何事情。此外,我知道密码安全等,这是一个试运行。我知道这有风险。我应该使用准备好的语句,但这只是在实现其余语句之前的一个测试 HTML代码 <!DOCTYPE html> <html lang="en"> <head>

因此,我正在尝试为我的数据库编写一个用户身份验证脚本,单击按钮,我希望匹配mysql数据库中的信息,以便在正确的情况下重定向到另一个页面。但一按按钮,我就什么也没发生。我似乎不明白为什么。无论登录信息是否正确,似乎都没有发生任何事情。此外,我知道密码安全等,这是一个试运行。我知道这有风险。我应该使用准备好的语句,但这只是在实现其余语句之前的一个测试

HTML代码

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Local Feedbacks</title>
  <link rel="stylesheet" 
      href="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/css/bootstrap.min.css" integrity="sha384-TX8t27EcRE3e/ihU7zmQxVncDAy5uIKz4rEkgIXeMed4M0jlfIDPvg6uqKI2xXr2" crossorigin="anonymous">
  <link rel="stylesheet"
      href="https://cdnjs.cloudflare.com/ajax/libs/normalize/8.0.1/normalize.min.css">
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
  <link rel="stylesheet" href="assets/styles/styles.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
</head>
<body>
    <script>
         $(document).ready(function(){
    $('#submit').click(function(event){
      event.preventDefault();
      var username = $('#username').val();
      var pass = $('#password').val();
      $.ajax({
            url: 'login.php',
            method:'POST',
            data:
            {
                username: username,
                pass: pass,
                
            }
           
            
        });
        
    });
    
}); 
    </script>
  <!--Navigation Bar-->
    <nav class="navbar navbar-expand-sm navbar-dark bg-dark sticky-top">
        <h1 class="navbar-brand">Local Bands</h1>
        <button class="navbar-toggler" data-toggle="collapse" data-target="#navcollapse">
            <span class="navbar-toggler-icon"></span>
        </button>
        <!--Navigation Bar Options-->
        <div class="collapse navbar-collapse" id="navcollapse">
            <u1 class="navbar-nav mr-auto">
                <li class="nav-item">
                    <a class="nav-link" href="./index.html">Home</a>
                </li>
                <li class="nav-item">
                    <a class="nav-link" href="./assets/html/bands.html">Bands</a>
                </li>
                <li class="nav-item">
                    <a class="nav-link" href="./assets/html/contact.html">Contact Us</a>
                </li>
                <li class="nav-item">
                    <a class="nav-link" href="./assets/html/about.html">About</a>
                </li>
            </u1>
            <!--Search Button-->
            <form class="form-inline my-2 my-lg-0">
                <input class="form-control mr-sm-2" type="search" placeholder="Search" aria-label="Search">
                <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
            </form>
            <!--Login section-->
            <u2 class="navbar-nav">
                <li class="nav-item">
                    <a class="nav-link" href="./assets/html/login.html">Login</a>
                </li>
            </u2>
        </div>
    </nav>

    <!--Title of the page-->
    <header class="main-header text-center text-black">
      <h1 class="login-text">Please Login</h1>
    </header>
    
    <main class="container">
      <div class="row">
          <!-- Form -->
          <form class="col-md-7" method="POST">
            
              <!-- Name -->
              <label for="name" class="mb-0 mt-1">Name</label>
              <input type="text" id="username" placeholder="Username" class="form-control" method="POST">
              <!-- Email -->
              <label for="password" class="mb-0 mt-1" method="POST">Password</label>
              <input type="text" id="password" placeholder="Password" class="form-control">
              <!-- Submit -->
              <input class="mt-1" type="submit" value="Log in" id="submit" target="_blank"> </input>
          </form>
          
      </div>
  </main>


</body>
</html>
<?php
 ob_start();
 session_start();
  
$message="";
$dbname = 'project info';
$dbuser = 'root';
$dbpass = '';
$dbhost = 'localhost';


if(isset($_POST['username'])){
  $username = $_POST['username'];
}
if(isset($_POST['pass'])){
  $password = $_POST['pass'];
}



$conn= mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);

if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
  } 

  if(count($_POST)>0) {
    $result = mysqli_query($conn,"SELECT Username, pass FROM registration WHERE Username = '" . $_POST['username'] ."' AND pass = '" . $_POST['pass'] ."'");
    $count  = mysqli_num_rows($result);
    if($count==0) {
     $_SESSION['user'] = $_POST['username'];
     header("Location: http://localhost/index.html");
     
  }
  else{
    echo "Wrong info";
  }

  }
  
 $conn->close();
 ob_end_flush();
?>

局部反馈
$(文档).ready(函数(){
$(“#提交”)。单击(函数(事件){
event.preventDefault();
var username=$('#username').val();
var pass=$('#password').val();
$.ajax({
url:'login.php',
方法:'POST',
数据:
{
用户名:用户名,
通过:通过,,
}
});
});
}); 
本地乐队
  • 搜寻
  • 请登录 名称 密码
    PHP代码

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Local Feedbacks</title>
      <link rel="stylesheet" 
          href="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/css/bootstrap.min.css" integrity="sha384-TX8t27EcRE3e/ihU7zmQxVncDAy5uIKz4rEkgIXeMed4M0jlfIDPvg6uqKI2xXr2" crossorigin="anonymous">
      <link rel="stylesheet"
          href="https://cdnjs.cloudflare.com/ajax/libs/normalize/8.0.1/normalize.min.css">
      <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
      <link rel="stylesheet" href="assets/styles/styles.css">
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
    </head>
    <body>
        <script>
             $(document).ready(function(){
        $('#submit').click(function(event){
          event.preventDefault();
          var username = $('#username').val();
          var pass = $('#password').val();
          $.ajax({
                url: 'login.php',
                method:'POST',
                data:
                {
                    username: username,
                    pass: pass,
                    
                }
               
                
            });
            
        });
        
    }); 
        </script>
      <!--Navigation Bar-->
        <nav class="navbar navbar-expand-sm navbar-dark bg-dark sticky-top">
            <h1 class="navbar-brand">Local Bands</h1>
            <button class="navbar-toggler" data-toggle="collapse" data-target="#navcollapse">
                <span class="navbar-toggler-icon"></span>
            </button>
            <!--Navigation Bar Options-->
            <div class="collapse navbar-collapse" id="navcollapse">
                <u1 class="navbar-nav mr-auto">
                    <li class="nav-item">
                        <a class="nav-link" href="./index.html">Home</a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link" href="./assets/html/bands.html">Bands</a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link" href="./assets/html/contact.html">Contact Us</a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link" href="./assets/html/about.html">About</a>
                    </li>
                </u1>
                <!--Search Button-->
                <form class="form-inline my-2 my-lg-0">
                    <input class="form-control mr-sm-2" type="search" placeholder="Search" aria-label="Search">
                    <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
                </form>
                <!--Login section-->
                <u2 class="navbar-nav">
                    <li class="nav-item">
                        <a class="nav-link" href="./assets/html/login.html">Login</a>
                    </li>
                </u2>
            </div>
        </nav>
    
        <!--Title of the page-->
        <header class="main-header text-center text-black">
          <h1 class="login-text">Please Login</h1>
        </header>
        
        <main class="container">
          <div class="row">
              <!-- Form -->
              <form class="col-md-7" method="POST">
                
                  <!-- Name -->
                  <label for="name" class="mb-0 mt-1">Name</label>
                  <input type="text" id="username" placeholder="Username" class="form-control" method="POST">
                  <!-- Email -->
                  <label for="password" class="mb-0 mt-1" method="POST">Password</label>
                  <input type="text" id="password" placeholder="Password" class="form-control">
                  <!-- Submit -->
                  <input class="mt-1" type="submit" value="Log in" id="submit" target="_blank"> </input>
              </form>
              
          </div>
      </main>
    
    
    </body>
    </html>
    
    <?php
     ob_start();
     session_start();
      
    $message="";
    $dbname = 'project info';
    $dbuser = 'root';
    $dbpass = '';
    $dbhost = 'localhost';
    
    
    if(isset($_POST['username'])){
      $username = $_POST['username'];
    }
    if(isset($_POST['pass'])){
      $password = $_POST['pass'];
    }
    
    
    
    $conn= mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);
    
    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
      } 
    
      if(count($_POST)>0) {
        $result = mysqli_query($conn,"SELECT Username, pass FROM registration WHERE Username = '" . $_POST['username'] ."' AND pass = '" . $_POST['pass'] ."'");
        $count  = mysqli_num_rows($result);
        if($count==0) {
         $_SESSION['user'] = $_POST['username'];
         header("Location: http://localhost/index.html");
         
      }
      else{
        echo "Wrong info";
      }
    
      }
      
     $conn->close();
     ob_end_flush();
    ?>
    
    对我来说很好

    你看过devtool吗?键入F12,您将在“网络”选项卡中看到,请求已发送到“login.php”

    您应该在jquery中使用submit()而不是单击

    注意:您有许多语法是不正确的

    在ajax脚本上

    $("#loginForm").submit(function(e) {
    
        e.preventDefault() // avoid to execute the actual submit of the form.
    
        const form = $(this)
        const url = form.attr('action')
        const method form.attr('method')
        
        $.ajax({
            type: method,
            url: url,
            data: form.serialize(), 
            success: function(response) {
               if(response.status) {
                  location.href = '/index.html'
               }
            }
    
        })
        
    })
    
    然后在表单html上

     <form id="loginForm" class="col-md-7" method="POST" action="login.php">
        <!-- Name -->
        <label for="name" class="mb-0 mt-1">Name</label>
        <input type="text" id="username" name="username" placeholder="Username" class="form-control">
        <!-- Email -->
        <label for="password" class="mb-0 mt-1">Password</label>
        <input type="password" id="password" name="password" placeholder="Password" class="form-control">
        <!-- Submit -->
        <input class="mt-1" type="submit" value="Log in" id="submit">
    </form>
    
    
    名称
    密码
    
    然后在login.php中

    <?php
    
            session_start();
            
            $message="";
            $dbname = 'project info';
            $dbuser = 'root';
            $dbpass = '';
            $dbhost = 'localhost';
    
    
            if(isset($_POST['username']) && isset($_POST['password']) ){
                $username = $_POST['username'];
                $password = $_POST['password'];
            } else {
                die("Form is not defined");
            }
    
            $conn= mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);
    
            if ($conn->connect_error) {
                die("Connection failed: " . $conn->connect_error);
            } 
    
            $username =  mysqli_real_escape_string($conn, $_POST['username']);
            $password =  mysqli_real_escape_string($conn, $_POST['password']);
    
            $result = mysqli_query($conn,"SELECT username FROM registration WHERE username = '" . $username ."' AND pass = '" . $password ."'");
            $count  = mysqli_num_rows($result);
    
            $status = false;
    
            if($count > 0 ) {
                $_SESSION['user'] = $username;
                $status = true;
            }
    
            echo json_encode(['status' => $status]);
            
            
            $conn->close();
     ?>
    

    您的ajax代码没有成功、错误或完成回调。为了查看php脚本的输出,您需要添加这些内容。基本上就是这样,但我的问题是当if语句执行时,它不会链接到index.html,而是如果它为true,它会回显为true,如果为false,它会回显为false。我编辑了它,所以如果它为false,它将发布一个警告响应,指出密码是错误的,如果它为true,它将转到URL,但它只是继续转到URL,即使它为false。在尝试了一些事情之后。ajax中的if语句是导致出错的原因。如果我添加else语句,它将始终执行If或else,具体取决于状态。基本上,$count==0是错误的,您必须使用$count>0,因为$count==0意味着找不到任何用户,那么它将回显FALSE,也就是为什么要比较$\u POST>0?你已经检查了上面的$\u帖子,不需要检查代码是否冗余。好吧,我已经把它解决了。我用的是你发的密码别担心。问题是response.status返回时未定义。所以我做了一个JSON.parse()以便从中获取数据,然后我做了if语句。谢谢你的帮助!