douyan3478 2017-09-14 00: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 00: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";
          }
       }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部