我正在两个不同的服务器上进行一个项目,我的代码在一台服务器上完美运行,并拒绝在另一台服务器上运行。
代码的目的是让用户登录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>");
}
}
?>
答案 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();