PHP头函数和$ _SESSION变量不起作用

时间:2014-01-09 04:05:15

标签: php session-variables

我正在两个不同的服务器上进行一个项目,我的代码在一台服务器上完美运行,并拒绝在另一台服务器上运行。

代码的目的是让用户登录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>");
    }
}

 ?>

3 个答案:

答案 0 :(得分:3)

首先,您不应该有不同的<?php?>标记。

因为它算作一个空间。

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

<?php

session_start();

应该是:

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

它在文件中添加了一个空格,因此没有重定向。

答案 1 :(得分:0)

听起来像Apache服务器或PHP配置问题。在两台服务器上,运行以下脚本:

的phpinfo();

比较他们的差异。另外,请检查.ini中的PHP版本,加载的扩展和配置。它可能是Apache httpd.conf,但我猜它是一个php.ini问题或PHP版本问题。

建议:在每个文件的第1行创建一个自动加载器作为PHP包含。在那里自动加载你的会话和数据库和常量。这将确保在输出HTML之前加载会话,这似乎是其他人看到问题的地方。

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

答案 2 :(得分:0)

session_start();进入您的页面第一行

<?php
session_start();