douyan3478 2017-09-14 08:40
浏览 40
已采纳

会话使用不当?

So im having problem with code in php, it drives me crazy.. The thing is, i am making login page, and i have index.php, login.php and dashboard.php. Login form is in index.php, in login.php it checks if user is in database, and if it is redirect user to dashboard.php, but when i type right user and pass, it redirects me to index.php instead of dashboard.php??

login.php

<?php
session_start();
include($_SERVER['DOCUMENT_ROOT'] . "/new_cms/includes/db.php");

$username = $_POST['username'];
$password = $_POST['password'];
$btn = $_POST['submit'];

if(isset($btn)){
  if(empty($username) || empty($password)){
      echo "You must fill all fields";
  }else{
      $sql = "SELECT * FROM admins WHERE username = '$username' AND password = '$password'";
      $query = mysqli_query($dbconn, $sql);
      $rows = mysqli_num_rows($query);

      if($rows > 0){
           $_SESSION['usr'] = $rows['password'];
           header("Location: dashboard.php");
      }else{
           echo "Invalid login";
      }
   }
}
?>

dashboad.php

<?php 
session_start();
include($_SERVER["DOCUMENT_ROOT"] . "/new_cms/includes/db.php");
include($_SERVER["DOCUMENT_ROOT"] . "/new_cms/admin/login.php");

if(!isset($_SESSION['usr'])){
    header("Location: index.php");
}else{
    echo "Welcome";
}
?>

What am i doing wrong?

  • 写回答

1条回答 默认 最新

  • duanli8391 2017-09-14 08:49
    关注

    $rows is just a number, not an array, since you used mysqli_num_rows. Still you try to get $rows['password'].

    instead, fetch the first row of the result and use this to assign to the session variable.

    if(isset($btn)){
      if(empty($username) || empty($password)){
          echo "You must fill all fields";
      }else{
          $sql = "SELECT * FROM admins WHERE username = '$username' AND password = '$password'";
          $query = mysqli_query($dbconn, $sql);
          $rows = mysqli_num_rows($query);
    
          if($rows > 0){
               $user = mysqli_fetch_assoc($query);
               $_SESSION['usr'] = $user['password'];
               header("Location: dashboard.php");
          }else{
               echo "Invalid login";
          }
       }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 基于单片机数字电压表电路组成及框图
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 unity第一人称射击小游戏,有demo,在原脚本的基础上进行修改以达到要求
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line