私のPHPWebサイトは明らかにローカルホストで機能しています。サーバーページへのリダイレクトをホストすると機能しません(すべてのエコーを削除してテスト済み)。ただし、JavaScriptリダイレクトを使用すると機能しますが、次のページにセッション変数がありません。
次に、echo session_id();をテストしました。両方のページで異なる番号が表示されます。この問題を解決するにはどうすればよいですか?set_include_path();メソッドを使用してサーバー上のパスを処理します。
<!DOCTYPE html>
<?php
session_start();
ob_start();
set_include_path(".:/home/user/data");
echo session_id();
//echo ini_get('session.cookie_domain');
if($id == 'Login failed'){ header("Location: login.php?msg=Invalid Username or Password"); }
?>
あなたは使用することはできませんsession_start()
か、header()
コンテンツの後(ブラウザに送信されてきた<!DOCTYPE html>
あなたの場合)。
ここではob_start()
、出力のバッファリングに使用している場合でも、前に送信されたものはバッファリングされずにブラウザに送信されるため、機能しなくheader()
なりsession_start()
ます。
PHPドキュメントから:
Cookieベースのセッションを使用するには、ブラウザに何かを出力する前にsession_start()を呼び出す必要があります。
通常のHTMLタグ、ファイル内の空白行、またはPHPのいずれかによって、実際の出力を送信する前に、header()を呼び出す必要があることに注意してください。
ローカルコンピューターでは機能するが、Webホスティングプロバイダーのサーバーでは機能しないという事実は、PHPまたはWebサーバーの構成の違いが原因である可能性があります。たとえば、出力バッファリングは、ローカルインストールではデフォルトで有効になっている場合があり(output_buffering = 4096
たとえば)、Webホスティングでは無効になっている場合があります(output_buffering = Off
)。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加