1

index.php に login.php ファイルと login.php ファイルを含めました。

login.php と index.php の両方に session_start() がありません。login.php だけに session_start(); があります。初期化。

それでも、index.php を開くと次のエラーが表示されます。

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /home/content/98/10855698/html/symp13/index.php:110) in /home/content/98/10855698/html/symp13/loggedin.php on line 2

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/content/98/10855698/html/symp13/index.php:110) in /home/content/98/10855698/html/symp13/loggedin.php on line 2

login.php は次のとおりです。

<?php
session_start();
if (isset($_SESSION['username'])) {
echo 'you are logged in as'.' '.$_SESSION["username"];
echo '<form action="upload.php" method="post" enctype="multipart/form-data" name="upload">'.'<input type="file" name="file" /><input type="submit" name="submit" />'.'</form>'; }
else {
echo 'You need to login in with your account for submitting abstract or for applying for tutorials!';
echo 'Click here to'.' '.'<a href="login.php">login</a>';
}
?>

login.php には、アクションが session_start(); を含む login_check.php に設定されたフォームが含まれています。しかし、それが問題だとは思いません..フォームが送信されるまで実行できないためです。

そして、別のファイルでloggedin.phpのみを実行した場合。エラーは表示されていません。

私は混乱しています。解決方法と原因を教えてください。

ここに画像の説明を入力

4

2 に答える 2

2

ドキュメントが言うように:

Cookie ベースのセッションを使用するには、ブラウザーに何かを出力する前に session_start() を呼び出す必要があります。

これは、 への呼び出しの前に、空白であっても、空白があってはならないことを意味しsession_start()ます。したがって、index.php ファイルは次のようになります。

<?php

  include 'loggedin.php'; //containing session start
  include 'login.php';

  echo 'other output';
?>
more output here
于 2013-05-14T13:04:45.923 に答える