当我在我的本地服务器上工作时,它不会引发任何问题,但在线它不会在登录后重定向用户,
我是初学者,并寻找任何可能的原因使其无法正常工作,可能有人已经以正确的方式回答了这个问题......
的login.php
<?php
require_once 'header.php';
$error = $user = $pass = "";
if (isset($_POST['user']))
{
$user = sanitizeString($_POST['user']);
$pass = sanitizeString($_POST['pass']);
if ($user == "" || $pass == "")
$error = "<span class='melding'>Iets vergeten?</span><br>";
else
{
$result = queryMySQL("SELECT user,pass FROM members
WHERE user='$user' AND pass='$pass'");
if ($result->num_rows == 0)
{
$error = "<span class='melding'>Gebruikersnaam/Wachtwoord
is niet correct.</span><br><br>";
}
else
{
$_SESSION['user'] = $user;
$_SESSION['pass'] = $pass;
header ('Location: /index.php');
}
}
}
和header.php
<?php
session_start();
echo "<!DOCTYPE html><html><head>";
require_once 'functions.php';
if (isset($_SESSION['user']))
{
$user = $_SESSION['user'];
$loggedin = TRUE;
$userstr = " ($user)";
}
else $loggedin = FALSE;
echo "<title>$appname</title><link rel='stylesheet' " .
"href='css/styles.css' type='text/css'>" .
"<link rel='shortcut icon' type='image/png' href='img/favicon.png'
sizes='110x100'>" .
"<link href='photouploadjquery/fileinput.css' media='all'
rel='stylesheet' type='text/css' />" .
"<script
src='http://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js'>
</script>" .
"<script src='photouploadjquery/fileinput.js' type='text/javascript'>
</script>" .
"<script
src='https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js'
type='text/javascript'></script>" .
"<script src='javascript.js'></script>" .
"</head><body>" ;
if ($loggedin)
{
echo showUserSmall($user);
}
else
{
echo
file_get_contents ("includes/header.php" );
}
提前感谢您的任何建议和帮助,
答案 0 :(得分:3)
除了“vergeten in te vullen”消息之外,你开始在header.php中输出很多html。
你不应该这样做,因为它迫使你的服务器将标题(contenttype = html等)发送到浏览器。
标头已发送的错误非常突出
所以将include行移到login.php的最后一行
Session_start()可能必须转到login.php 或者更好地区分php的header.php文件和用于启动html页面的header.php。
- 你可能会抑制实际的错误信息,但在这里:How to fix "Headers already sent" error in PHP解释了它。
发送“内容类型标题”后,再也无法发送其他标题。将浏览器重定向到任何页面是一个标题,所以你去..