1

メンバーのみが自分のindex.phpページにアクセスできるようにする必要があります。したがって、ファイルの先頭にある私のphpスクリプトは、index.phpユーザー名がセッション中かどうかを確認しており、そうでない場合は、ユーザーを自動的に私のページにリダイレクトする必要がありlogin.phpます。したがって、ログイン ページは BASE_URL ページにする必要があります。私もスクリプトで行いdefine ('BASE_URL', 'mywebsite.com/login.php');ました。verify.phpしかし、インデックス ページに移動すると、(空白の画面) エラー「11 行目のスクリプト 'path/index.php' でエラーが発生しました: ヘッダー情報を変更できません - ヘッダーは既に送信されました (パス/インデックスで出力が開始されました)」のみが表示されます。 php:1)". HTML の前にスペースがありません。これが原因である可能性があります。の「base_href」を使用して BASE_URL をログインに設定しようとしましたがheadlogin.php機能しませんでした。これは、インデックス ファイルの先頭にあるスクリプトです。

<?php 
require_once ('verify.php'); 
$page_title = 'title';
ob_start();
session_start();
if (!isset($page_title)) {
$page_title = 'title';}
if (!isset($_SESSION['name'])) {    
$url = BASE_URL . ''; 
ob_end_clean();
header("Location: $url ");
exit();
}
?>
<!DOCTYPE html><html><head></head><body></body></html>
<?php
ob_end_flush();
?>

私のverify.phpコンテンツ:

<?php 
define('LIVE', TRUE);
define('EMAIL', 'my_mail');
define ('BASE_URL', 'mywebsite.com/login.php');
define ('MYSQL', 'db.php');
function my_error_handler ($e_number, $e_message, $e_file, $e_line, $e_vars) {
$message = "<p>An error occurred in script '$e_file' on line $e_line:      $e_message\n<br />"; 
$message .= "Date/Time: " . date('n-j-Y H:i:s') . "\n<br />";
$message .= "<pre>" . print_r ($e_vars, 1) . "</pre>\n</p>";
if (!LIVE) { echo '<div class="error">' . $message . '</div><br />';

} else {        
    mail(EMAIL, 'Site Error!', $message, 'From: you@youremail.com');
    if ($e_number != E_NOTICE) {
    echo '<div class="error">A system error occurred. We apologize for the inconvenience.</div><br />';
    }   }     } 
 set_error_handler ('my_error_handler');
 ?>
4

1 に答える 1

0

解決策を見つけました。答えは、BOM なしで UTF8 でエンコードすることです。

于 2013-05-01T23:40:51.780 に答える