2010-12-03 16 views
1

PHPでアプリケーションを作成しました。それは含まれています
1:ログインフォーム
2:ウェルカムページ
3:ログインフォームにリダイレクトされるログアウトフォーム。

私のregister_global = php.iniのOnです。PHPタグの前のスペース

私のアプリケーションはLAMPとWAMPで正しく動作しています。しかし、それはライブサーバー上でセッションを設定していません。

ただし、行単位で確認した後、セッション設定ファイルでは、開始する前に単一のスペースがありました'<?PHP ...... ?>'。そのスペースを削除した後、私のアプリケーションはライブサーバー上で正常に動作しています。

セッションが設定されていない‘<?PHP ...... ?>'の前に、そのスペースの背後にある理由は何ですか?

+0

この問題の回避策(着陸点以外のファイル)は、出力バッファリングを有効にすることに注意してください。参照:http://www.php.net/manual/en/function.ob-start.php –

答えて

5

スペースはつまり、ブラウザに送信され、出力されるべきです。セッションを開くには、いわゆるHTTPヘッダーを送信する必要があります。これは、何かが出力される前に行う必要があります。それがうまくいかない理由です。あなたのエラーメッセージはおそらく "ヘッダがすでに送信されました"でした。

1

応答ヘッダーを送信する前にコンテンツを送信することはできません。セッションは応答ヘッダーで送信されます。事前にスペースを送ったので、セッションを開始できません。

session_startのドキュメントから、「cookieベースのセッションを使用するには、ブラウザに何かを出力する前にsession_start()を呼び出す必要があります。」これには最初のスペースが含まれます。

基本的には、任意のスクリプトの最初のものは、常に<?php