1

使おうとしています

header("Location: index.php")

ログインスクリプトにありますが、ライブサーバーでは機能せず、ローカルでのみ機能します。なぜ問題があるのか​​わかりません。

私もいくつかのテストを行いました:

error_reporting(E_ALL);
ini_set('display_errors', 1);

// header('Location: test.php');

require_once 'class/functions.php';
$func = new Functions();
//$error = "";
if(isset($_POST['loginSubmitted'])) {
    $user = $func->loginUser($_POST);
    if($user == true) {
        session_start();
        $_SESSION['loggedin'] = true;
        header("Location: index.php");
        die('test');
    }
    else {
        $error = 'Login nicht erfolgreich.';
    }
}

die()関数の「テスト」が表示されているので、ヘッダーも送信されていないようです。

(いいえ、ヘッダー関数の前に出力はありません)

編集3:

ポストワークの代わりにgetを使用します。私は本当に混乱しています。

編集2:

テスト用に縮小版を作成しましたが、以下でも機能しません。サーバーの問題のようです($ _POST ?!と組み合わせて):

<?php 
if(isset($_POST['submitted'])) {
    header('Location: index2.php');
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Login</title>
</head>
<body>
    <form action="" method="post">
        <input type="text" name="name" />
        <input type="submit" name="submitted" value="senden" />
    </form>
</body>
</html>

編集:コード例を更新しました。

4

1 に答える 1

0

新しいヘッダーを設定しようとする前に、何らかの出力が送信されている可能性があります。実際の出力が送信される前に、すべてのヘッダーを設定する必要があります。

これを試みると、PHP は警告をトリガーしますが、エラー報告の設定がそれをブロックしている可能性があります。一時的に最大値に設定して、出力がどこに送信されているかを確認します。

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);


echo 'Output!';

header('X-Test: Test');

プロデュース:

Warning: Cannot modify header information - headers already sent by (output started at /test.php:6) in /test.php on line 8
于 2012-12-03T09:20:14.400 に答える