-1

ログイン中に別のページに移動すると、このエラーが発生し続けます。

Warning: session_start() [function.session-start]: Cannot send session cache limiter -      headers already sent (output started at     /home/content/63/10400363/html/SeniorProject/update.php:5) in      /home/content/63/10400363/html/SeniorProject/update.php on line 6

また、(ログインしていないときに) update.php を直接呼び出すと、フォームが表示されず、ログイン ページに戻るようになっています。私はこれに何時間も費やしましたが、何が間違っているのかわかりません。どんな助けでも感謝されます。

これが私のコードです:LOGIN.PHP

<?php 
session_start(); 
require("passwords.php");
?>
<?php
function redirect(){    
    echo '<META HTTP-EQUIV="Refresh" Content="0; URL=update.php">';    
    exit;    
};
if ($_POST["ac"]=="log") { /// do after login form is submitted  
     if ($USERS[$_POST["username"]]==$_POST["password"]) { /// check if submitted 
    // username and password exist in $USERS array 
          $_SESSION["logged"]=$_POST["username"]; 
     } else { 
          echo 'Incorrect username/password. Please, try again.'; 
     }; 
}; 
if (array_key_exists($_SESSION["logged"],$USERS)) { //// check if user is logged or not  
     echo '<center><font color="red">You are logged in.</font></center>';
     echo '<center><font color="red">You will be redirected to the correct page in     3 seconds.</font></center>';
     echo "Your session is running " . $_SESSION["logged"];



} else { //// if not logged show login form 
     echo '<form action="login.php" method="post"><input type="hidden" name="ac"     value="log"> '; 
     echo 'Username: <input type="text" name="username" />'; 
     echo 'Password: <input type="password" name="password" />'; 
     echo '<input type="submit" value="Login" />'; 
     echo '</form>'; 
 }; 
?>

UPDATE.PHP

<?php
session_start();  
require("passwords.php");
check_logged();
?>
<?php


'<p align="center">
<h1>UPDATE RECORDS</h1>
<form method="post" action="doupdate.php">
    <fieldset>
    <legend> Update Form: </legend>
    <font color="red">PROF. ID*</font> <br>
    <input name="id" type="text" size="50" /><br>
    <font color="red">BUILDING* </font> <br>
    <input name="building" type="text" size="50" /><br>
    <font color="red">ROOM NUM* </font> <br>
    <input name="roomNum" type="text" size="50" /><br>
    <font color="red">OFFICE HR* </font> <br>
    <input name="officeHr" type="text" size="50" /><br>
    <font color="red">SPECIAL REMARKS </font> <br>
    <input name="special" type="text" size="50" /><br><br>
    <input name="submit" type="submit" value="submit" />

    </fieldset><br><br>
</form>
<font color="red">* REQUIRED FIELDS<br>
OFFICE HOURS UPDATED IN FOLLOWING FORMAT:<br>
M/TH 00:00-11:11</font><br>

</html>';
echo "Your session is running " . $_SESSION["logged"];
?>

パスワード.PHP

 //OMITTED PASSWORDS ARRAY HERE
 //OMITTED PASSWORDS ARRAY HERE
 //OMITTED PASSWORDS ARRAY HERE
 //OMITTED PASSWORDS ARRAY HERE


function check_logged(){ 
     global $_SESSION, $USERS; 
     if (!array_key_exists($_SESSION["logged"],$USERS)) { 
          header("Location: login.php"); 

      }; 
}; 
4

2 に答える 2

0

insert session_start(); を試してください。PASSWORDS.PHP に追加し、他のファイルで削除します。私はそれがうまくいくと思います。

于 2013-02-25T20:06:21.403 に答える
0

セッションの開始前にユーザーに何も出力することはできません。update.php ファイルも、フォームをユーザーにエコーしません。

于 2013-02-25T20:10:18.097 に答える