簡體   English   中英

PHP標頭功能和$ _SESSION變量不起作用

[英]PHP Header function and $_SESSION variables not working

我在兩個不同的服務器上執行一個項目,我的代碼在一個服務器上完美運行,而拒絕在另一個服務器上運行。

該代碼的目的是讓用戶在login.php頁面上登錄,如果他們的登錄憑據正確,則將其重定向到dashboard.php頁面。 header.php文件僅包含用於不同用戶登錄的導航欄的信息。

請讓我知道錯誤可能在哪里。

我不確定這是否是兩個不同的問題,但是Header重定向都無法正常工作,會話變量也都沒有存儲。 我確保在標題重定向之前沒有回顯任何內容。

Login.php

<?php include('header.php');?>

<?php

session_start();
$dbusername = $_SESSION['username'];
$dbfName = $_SESSION['fName'];
$dblName = $_SESSION['lName'];
$sessiontype = $_SESSION['type'];

if($dbusername && $dbfName && $dblName && $sessiontype){
    header('Location: ./dashboard.php');
}

if(isset($_POST['login_button'])){

    session_start();

    $getuser = $_POST['username'];
    $getpass = $_POST['password'];
    $getpassmd5 = md5(md5($getpass));

    if($getuser && $getpass){

        require('connect.php');

        $query1 = "SELECT * FROM students WHERE StudentNum='$getuser'";
        $exequery1 = mysql_query($query1);

        if(mysql_num_rows($exequery1) > 0){

            while ($row = mysql_fetch_assoc($exequery1)){
                $dbusername = $row['StudentNum'];
                $dbpass = $row['password'];
                $dbDOB = $row['DOB'];
                $dbfName = $row['FirstName'];
                $dblName = $row['LastName'];
            }

            if($dbpass){

                if($getuser === $dbusername && $dbpass === $getpassmd5){

                    $_SESSION['username'] = $dbusername;
                    $_SESSION['fName'] = $dbfName;
                    $_SESSION['lName'] = $dblName;
                    $_SESSION['type'] = "student";
                    header('Location: ./dashboard.php');

                }
                else{
                    echo("<h4><center>You have entered incorrect login credentials</h4></center>");
                }

            }
            else{

                if($getuser === $dbusername && $getpass === $dbDOB){

                    $_SESSION['username'] = $dbusername;
                    $_SESSION['fName'] = $dbfName;
                    $_SESSION['lName'] = $dblName;
                    $_SESSION['type'] = "student";
                    header('Location: ./dashboard.php');

                }
                else{
                    echo("<h4><center>You have entered incorrect login credentials</h4></center>");
                }

            }

        }
        else{
            $query2 = "SELECT * FROM teachers WHERE username='$getuser'";
            $exequery2 = mysql_query($query2);

            if(mysql_num_rows($exequery2) > 0){

                while ($row = mysql_fetch_assoc($exequery2)){
                $dbusername = $row['username'];
                $dbpass = $row['password'];
                $dbfName = $row['FirstName'];
                $dblName = $row['LastName'];
                $dbtype = $row['type'];

            }
                if($getuser === $dbusername && $dbpass === $getpassmd5){

                    $_SESSION['username'] = $dbusername;
                    $_SESSION['fName'] = $dbfName;
                    $_SESSION['lName'] = $dblName;
                    $_SESSION['type'] = $dbtype;
                    header('Location: ./dashboard.php');

                }
                else{
                    echo("<h4><center>You have entered incorrect login credentials</h4></center>");
                }

            }
            else{
                echo("<h4><center>You have entered login credentials that do not exist</center></h4>");
            }

        }


    }

    else{
        echo("<h4><center>Please enter both a username and password</center></h4>");
    }
}

 ?>

首先,您不應使用不同的<?php?>標記。

作為其空間。

<?php include('header.php');?>

<?php

session_start();

應該:

<?php
session_start();
include('header.php');

它在文件中添加了一個空格,因此不會發生重定向。

聽起來像Apache服務器或PHP配置問題。 在兩台服務器上,使用以下命令運行腳本:

phpinfo();

比較它們之間的差異。 另外,請檢查.ini中的PHP版本,已加載的擴展名和配置。 可能是Apache httpd.conf,但我猜測它是php.ini問題還是PHP版本問題。

建議:在每個文件的第1行上創建一個自動裝載程序,使其成為PHP包含的文件。 在其中自動加載會話,數據庫和常量。 這將確保在輸出HTML之前加載會話,這似乎是其他人看到問題的地方。

第1行:require_once('config.php');

session_start(); 進入頁面的第一行

<?php
session_start();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM