-1

重複の可能性:
PHP によって既に送信されたヘッダー

警告: session_start() [function.session-start]: セッション Cookie を送信できません - D:\USBWebserver_v8_en\root\pages の (D:\USBWebserver_v8_en\root\pages\login.php:1 で出力が開始された) によって既に送信されたヘッダー\login.php 行 0

HTMLコードでログインフォームを作成しました.すべての設定とそのすべてでサーバーをすべてセットアップしました.データベース フィールドなどをリンクするために、dream weaver のログイン検証フィールド機能を使用して、成功または失敗のいずれかの場所にページが移動するようにしました。

サーバーで開くと、何も入力する前に次のエラーが表示されます

警告: session_start() [function.session-start]: セッション Cookie を送信できません - D:\USBWebserver_v8_en\root\pages の (D:\USBWebserver_v8_en\root\pages\login.php:1 で出力が開始された) によって既に送信されたヘッダー\login.php 行 0

警告: session_start() [function.session-start]: セッション キャッシュ リミッターを送信できません - ヘッダーは既に送信されています (出力は D:\USBWebserver_v8_en\root\pages\login.php:1 で開始されています) D:\USBWebserver_v8_en\root\pages \login.php 行 0

警告: session_regenerate_id() [function.session-regenerate-id]: セッション ID を再生成できません - 62 行目の D:\USBWebserver_v8_en\root\pages\login.php でヘッダーが既に送信されています

何か入力しても検証が行われず、別のメッセージも表示されます警告: ヘッダー情報を変更できません - ヘッダーは既に送信されています (出力は D:\USBWebserver_v8_en\root\pages\login.php:1 で開始) in D:\USBWebserver_v8_en\ root\pages\login.php 行 70

これは私のフォームのコードです

<form METHOD="POST" action="<?php echo $loginFormAction; ?>" id="form2">
<p>&nbsp;</p>
<p><span class="letter">Username:</span>
<input type="text"name="username""username id="username"">
</p>
<p><span class="letter">Password: </span>
<input type="password"name="password"/>
</p>
<p>
<input name="submit" type="submit" class="content1" value="Login" />
</p>
<p>&nbsp;</p>
<!-- end .content -->
</form>

これは私のphpコードです

<?php virtual('/Connections/reuben1.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "",  $theNotDefinedValue = "") 
{
if (PHP_VERSION < 6) {
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
}

$theValue = function_exists("mysql_real_escape_string") ?  mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;    
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
}
?>
<?php
//*** Validate request to login to this site.
if (!isset($_SESSION)) {
session_start();
}

$loginFormAction = $_SERVER['PHP_SELF'];
if(isset($_GET['accesscheck'])) {
$_SESSION['PrevUrl'] = $_GET['accesscheck'];
}

if(isset($_POST['username'])) {
$loginUsername=$_POST['username'];
$password=$_POST['password'];
$MM_fldUserAuthorization = "";
$MM_redirectLoginSuccess = "/Pages/Home.html";
$MM_redirectLoginFailed = "/Pages/Help.html";
$MM_redirecttoReferrer = false;
mysql_select_db($database_reuben1, $reuben1);

$LoginRS__query=sprintf("SELECT username, passwowrd FROM users WHERE username=%s AND   passwowrd=%s",
GetSQLValueString($loginUsername, "text"), GetSQLValueString($password, "text")); 

$LoginRS = mysql_query($LoginRS__query, $reuben1) or die(mysql_error());
$loginFoundUser = mysql_num_rows($LoginRS);
if ($loginFoundUser) {
$loginStrGroup = "";
if (PHP_VERSION >= 5.1) {session_regenerate_id(true);} else {session_regenerate_id();}
//declare two session variables and assign them
$_SESSION['MM_Username'] = $loginUsername;
$_SESSION['MM_UserGroup'] = $loginStrGroup;       

if (isset($_SESSION['PrevUrl']) && false) {
$MM_redirectLoginSuccess = $_SESSION['PrevUrl'];    
}
header("Location: " . $MM_redirectLoginSuccess );
}
else {
header("Location: ". $MM_redirectLoginFailed );
}
}
?>

なぜそれが機能しないのか、私には手がかりがありません:(

4

2 に答える 2

0
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent

これが意味するのは、PHPがすでにブラウザにデータを出力しているということです。つまり、ヘッダー(HTMLが送信される前に設定されたもの)を設定することはできません。この場合、通常、最初にPHPタグを開く前にコードがあることを意味します。login.phpで、最初にPHPタグを開く前に、空白(スペース、新しい行など)も含めて何もないことを確認します。同じルールが適用されます-先頭にも空白がないことを確認してください。/Connections/reuben1.php

于 2012-05-03T19:33:32.767 に答える
0

D:\USBWebserver_v8_en\root\pages\login.php の 1 行目を見てください。

セッションの開始を停止している何かを出力しています。これは、開始phpタグの前の空の行またはスペースである可能性があります

于 2012-05-03T19:30:23.470 に答える