1

重複の可能性:
PHP によって既に送信されたヘッダー

Web サイトのログイン フォームに問題があります。login.phpフォームの上部にこれがあります

<?php 
if (isset($_SESSION['username'])){
header("Location: http://myurl/"); die;}?>
<?php require 'includes/dbconnect.php' ; 
?> 
<?php require 'includes/header.php';  ?>

ログインが成功すると、それらをリダイレクトします

header('Location: http://myrul/');

header.phpもっている

<?php session_start(); ?>

頂点で。

ログインしようとすると、次のエラー メッセージが表示されます。

警告: ヘッダー情報を変更できません - 39 行目の /path/to/file/login.php の (/path/to/file/login.php:7 で出力が開始された) によって既に送信されたヘッダー。

login.php:7 ==><?php require 'includes/header.php'; ?>

その間

login.php の 39 行目 ==>header('Location: http://myrul/');

どこに問題があるかお願いします

更新require 'includes/header.phpファイルの先頭に移動しました。

<?php require 'includes/header.php';?>
if (isset($_SESSION['username'])){
header("Location: http://murl"); die;}?>
<?php require 'includes/dbconnect.php' ; ?> 

更新 2

<?php require 'includes/header.php';?>
<?php if (isset($_SESSION['username'])){
header("Location: http://myurl/"); die;}?>
<?php require 'includes/dbconnect.php' ; ?> 

                $username = trim ($_POST['username']);

$username = trim ($_POST['username']);として 指すoutput started at /path/to/file/header.php:11

アップデート

header.php

<?php session_start(); ?>
<!DOCTYPE html>
<html>
<head>
<link rel="shortcut icon" type="image/x-icon" href="favicon.ico">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="description" content="Your description goes here" />
<meta name="keywords" content="your,keywords,goes,here" />
<meta name="author" content="Your Name" />
<link rel='stylesheet' type='text/css' href='css/theme.css' />
<link rel='stylesheet' type='text/css' href='css/fullcalendar.css' />
<link rel='stylesheet' type='text/css' href='css/fullcalendar.print.css' media='print' />
<link rel="stylesheet" href="css/jquery.tagbox.css" />
4

2 に答える 2

2

header.php に session_start() 呼び出しがある場合、それはファイルの一番上にある必要があります。現状では、dbconnect インクルードの後に​​コードに改行があるため、「ヘッダーは既に送信されました」というメッセージが表示されると思います。

session_start を使用するときは、それを使用するすべてのファイルの先頭に配置するのが最善です。これにより、セッションを開始する前にヘッダーが送信されないようにすることができます。

于 2012-09-19T03:44:34.863 に答える
0

これをページの上部に配置してみてください。

<? ob_start(); ?>

次に、ページの下部に次のコード行を配置します。

<? ob_flush(); ?>
于 2012-09-19T04:06:06.197 に答える