首页 > 解决方案 > 登录表单脚本有一些错误,将登录页面再次重定向到登录页面,而不是允许它登录

问题描述

我已经尝试了许多替代此错误的方法,但它们都不起作用(所有这些都已注释) .Login form [login.php] 被定向到脚本 login.php [scripts/login.php] 。在 scripts/login.php 文件中,管理员 if 块正在工作,但从数据库中登录的提供者不起作用。

这是login.php

<?php

include_once "./msg/login.php";
?>
<!doctype html>
<html>
<head>
  <link rel="shortcut icon" type="image/png" href="imgs/favicon.png">


      <meta charset="utf-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>URBAN AMENITIES</title>
      <link rel="stylesheet" href="cssmain/bootstrap.min.css">
      <link rel="stylesheet" href="cssmain/style.css">
      <link rel="stylesheet" href="cssmain/fontawesome.min.css">
      <link href="https://fonts.googleapis.com/css?family=Open+Sans|Roboto" rel="stylesheet">
   </head>
   <body>
      <div id="header" class="header">
         <nav class="navbar navbar-expand-lg navbar-light text-capitalize">
            <div class="container">
               <a class="navbar-brand" href="#"><img src="imgs/logo.png" alt="#" /> 
             </a>
               
               <span class="navbar-toggler-icon"></span>
               </button>
               <div class="collapse navbar-collapse" id="show-menu">
                  <ul class="navbar-nav ml-auto">
                     <li class="nav-item">
                         <a class="nav-link" href="index.html">Home</a>
                     </li>
                    
                     <li class="nav-item">
                        <a class="nav-link" href="services.php">Services</a>
                     </li>
                     <li class="nav-item">
                        <a class="nav-link active" href="how.php">How it Works</a>
                     </li>
                     <li class="nav-item">
                        <a class="nav-link active" href="index.php">Instant Service</a>
                     </li>
                     
                    <li class="nav-item">
                        <a class="nav-link" href="review.php">What Clients Say</a>
                     </li>
                     <li class="nav-item">
                        <a class="nav-link" href="contact.php">Contact</a>
                     </li>
                    <li class="nav-item">
                        <a class="nav-link" href="register.php">Register</a>
                     </li>
                     <li class="nav-item">
                        <a class="nav-link" href="login.php">Login</a>
                     </li>
                     <li class="nav-item">
                        <a class="nav-link active" href="feed.php">Feedback form</a>
                     </li>
                  </ul>
               </div>
            </div>
         </nav>
      </div>

<div class="container" style="margin-top: 50px; width: 450px;">
    <div class="card">
       
        <div class="card-body">
            <div class="card-title">
                <h3 class="text-center">Login for Service Providers</h3>
            </div>
            <hr>
            <div class="contact-form">
            <form action="scripts/login.php" method="post">
                    <label for=""><strong>Contact No : </strong></label>
                    <input id="contact" name="contact" class="form-control" 
              placeholder="Enter Your Contact No." minlength="10" maxlength="10" 
               required>
                    <label for=""><strong>Password :</strong></label>
                    <input id="password" name="password" type="password" class="form- 
             control" placeholder="Enter Password." minlength="6" required><br>
                    <input type="submit" name="login" value="Login" class="btn btn- 
                  block btn-primary">
                </div>
            </form>

        </div>
    </div>
</div>

<footer >
         <div class="container">
            <div class="row">
               <div class="col-lg-3 col-md-6 col-12">
                  <div class="footer_blog_section">
                     <img src="imgs/logo.png" alt="#" /><br><br>
                     <p style="margin-top: 3px; font-size: 15px">URBAN AMENITIES</p>
                  </div>
               </div>
               <div class="col-lg-2 col-md-6 col-12">
                  <div class="item">
                     <h4 class="text-uppercase">Navigation</h4>
                     <ul>
                        <li><a href="#">Home</a></li>
                        <li><a href="#">About</a></li>
                        <li><a href="#">Location</a></li>
                        <li><a href="#">Service</a></li>
                        <li><a href="#">Features</a></li>
                     </ul>
                  </div>
               </div>
               <div class="col-lg-4 col-md-6 col-12">
                  <div class="item">
                     <h4 class="text-uppercase">Contact Info</h4>
                     <p><strong>Corporate Office Address:</strong></p>
                     <p><img src="imgs/phone_icon.png" alt="#" />+91 </p>
                     <p><strong>Customer Service:</strong></p>
                     <p><img src="imgs/location.png" alt="#" /> .</p>
                  </div>
               </div>
               <div class="col-lg-3 col-md-6 col-12">
                     <div class="item">
                     <h4 class="text-uppercase">Follow </h4>
                     <ul>
                        <li><img src="imgs/icon1.jpg"><a href="http://localhost/homeservices/index.html"> Website</a></li>
                        <li><img src="imgs/icon2.jpg"><a href=""> Gmail</a></li>
                        <li><img src="imgs/icon3.jpg"><a href="https://"> Instagrm</a></li>
                        <li><img src="imgs/icon4.jpg"><a href="https://"> Facebook</a></li>
                        <li><img src="imgs/icon5.jpg"><a href="www.youtube.in"> Youtube</a></li>
                        <li><img src="imgs/icon6.jpg"><a href="https://"> LinkedIn</a></li>
                     </ul>
                  </div>

               </div>


            </div>

         </div>
         <div class="copyright text-center">
            <p> URBAN AMENTIES &copy; <?= date("Y") ?>All Rights Reserved.</p>
         </div>
      </footer>

这是脚本/login.php

<?php

require_once 'session.php';
require_once 'helpers.php';

if (isset($_POST['login'])) {
    $contact = test_input($_POST["contact"]);
    $pass =test_input($_POST["password"]);
    if ($contact == "**" && $pass == "******") {
        $s = new stdClass();
        $s->name = "admin";
        $_SESSION['user'] = $s;
        header('Location: ../admin.php');
        exit();
    } else {
            $servername ="localhost";
            $username ="root";
            
            $dbname="services";
            
            try {
                $conn = new PDO('mysql:host=localhost;dbname=services; charset=utf8','***','******');
                $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
                $sql = "SELECT * FROM providers WHERE contact = '$contact' AND password = '$pass'";
                $statement = $conn->prepare($sql);  
                $statement->execute();  
                $providers = $statement->fetchAll();
                  // var_export($providers);
                
                /*if(isset($providers)){
                    header('Location: /msg/login.php?msg=success');
                    header('Location: /homeservices/provider.php'); 
                    
                    exit();

                }
                else{
                    header('Location: scripts/login.php?msg=failed');
                    exit();

                }*/

                foreach($providers as $provide=>$values) { 

                    if(($provide['contact'] =="$contact") &&  ($provide['password'] == "$pass")) { 
                        header('Location: ../login.php?msg=success');
                        header('Location: ../provider.php'); 
                        $_SESSION['user']=$provide;
                        exit();
                    }else { 
                        header('Location: ../login.php?msg=failed');
                        exit();
                    }
                }
            }
            catch(PDOException $e) {
                echo "Connection failed: " . $e->getMessage();
            }
                $conn = null;
            }
        }
?>

标签: php

解决方案


好吧,来自代码的提供者“块”;您正在重定向两次。

调用两次时重定向;

header('Location: ../login.php?msg=success');
header('Location: ../provider.php'); 

只有第一个会生效。

要解决此问题,请删除第一个标头并仅保留此标头;

header('Location: ../provider.php'); 

否则,删除第二个标题。然后在登录表单所在的表单页面上,执行此操作;

if($_GET['msg'] == "success")
{
    header('Location: ../provider.php'); 
} 

这将做的是检查msg返回的,如果success,它将重定向到provider.php

同时删除该foreach声明。我在您的代码中看不到它的相关性。

把这个出来让我们看看。


推荐阅读