1

sessions私はPHPとPHPで本当に厄介な問題を抱えていincludesます。私は、異なるページ間で関数index.phpを持っているというページを持っています:switch

<?php $p=(isset($_GET["p"])?$p=intval($_GET["p"]):$p=1); switch($p) {
case 1: $pagina = "login_and_registration.php";
break;
case 2: $pagina = "admin/registrazione.php";
break;
case 3: $pagina = "admin/login_test.php";
break;
case 4: $pagina = "logged_gym.php";
break;
case 5: $pagina = "logged_trainer.php";
break;
case 7: $pagina = "logout.php";
break;
case 8: $pagina = "admin/completa_profilo_trainer_sql.php";
break;
case 10: $pagina = "error.php";
break;
case 12: $pagina = "profilo_min.php";
break;
case 13: $pagina = "splash.php";
break;
default: $pagina = "index.php";
break;} ?>

次に、ファイルの本文にあるコードの下に、いくつかのインクルードがあります。

<header class="container_12">
    <?php include("login_errors.php")?>
    <div id="logo_container" class="grid_4 push_4"></div></header >

そしてこれ:

<section>
    <?php include_once($pagina);?>
</section>

スイッチ機能のページ 1 に対応するこのページにあるフォームに入力すると、ログイン時にこのエラーが発生します (名前を使用して新しいセッションを開始する場所):

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /Applications/MAMP/htdocs/FitnessOptimize/index.php:63) in /Applications/MAMP/htdocs/FitnessOptimize/admin/login_test.php on line 73

63行目のindex.phpには、include私があなたに投稿した最初のものがあります。このバグを回避する方法についてのアイデアはありますか? また、私のheader ("Location: "); 私は同じ理由で考えて動作しません。どんな助けでも大歓迎です!皆さんに感謝します!

4

4 に答える 4

2

ヘッダーを送信する前に出力はありません!

ヘッダーの前に何かを入力した場合、ヘッダーエラーが発生します。前に白いspaveを入力した場合でも<?php、エラーが発生します。

詳細については、stackoverfowでPHPの質問によってすでに送信されているヘッダーを確認してください。

同じドメインに2つの異なるセッションがあるへのこのリンクを確認してください

于 2012-09-17T13:14:22.913 に答える
1

使用session_start(); しているページの上部にある関数を使用$_SESSION します。前に単一のスペースがないことを確認してくださいsession_start()

PHPでは、最初にすべてのヘッダーが転送され、テキストがブラウザーに送信されます。単一のスペースが存在する場合、セッションは開始されず、使用できない$_SESSION[]ため、ページの上部にこれを書きます

于 2012-09-17T13:15:50.967 に答える
0

この問題は、コードの先頭にある印刷できない文字が原因で発生するか、ヘッダーに何らかの値を書き込んでいる可能性があります。

于 2012-09-17T13:18:40.390 に答える
0
session_start();

ページの先頭にある必要があります

于 2012-09-17T13:15:54.347 に答える