-2

私は新しいプロジェクトに取り組んでいますwww.merapalwal.com。ユーザーが電子メール ID とパスワードでログインできるこのプロジェクトのユーザー ログイン パネルを作成しました。すべてが正常に機能しており、ユーザーが正しく作成および更新しています。他のすべてのページに含まれるヘッダー ページでログイン フォームを使用しました。

db-user.php (db config 用) とdb-sess.php (session_start を使用した db config 用) の2 つの db ファイルを作成しました。しかし、 header-top.phpのログイン フォームでdb-sess.phpを使用すると、次のエラーが表示されます。

警告: session_start(): セッション キャッシュ リミッターを送信できません - ヘッダーは既に送信されています (出力は /home/mypalwal/public_html/index.php:16 で開始されています) 3 行目の /home/mypalwal/public_html/includes/db-sess.php にあります

db-user.phpを使用すると、ユーザーはログインできますが、ようこそ後にユーザー名が表示されません。次のコードを教えてください。

header.php:

<?php

ini_set('session.bug_compat_42',0);
ini_set('session.bug_compat_warn',0);

include('includes/db-sess.php');

$error = '';

$form = $_POST['login'];

$lemail = $_POST['lemail'];

$pass = $_POST['pass'];
$_SESSION['lemail'] = $_POST['lemail'];

if( isset($form) ) {

if( isset($lemail) && isset($pass) && $lemail !== '' && $pass !== '' ) {

$sql = mysql_query("SELECT * FROM `userdata` WHERE email='$lemail' and pass='$pass' and type='Normal User';");

if( mysql_num_rows($sql) != 0 ) { //success

$_SESSION['logged-in'] = true;

print "<script type=\"text/javascript\">";
print "window.location.href = \"users/index.php\"";
print "</script>";
exit;

} 

else { $error = "Login Detail Incorrect"; }

} else { $error = 'Login Detail Missing';}

}
?>

デシベル-user.php:

<?php
$dbhost = 'localhost';
$dbuser = '######';
$dbpass = '######';
$db = '#######';
$conn = mysql_connect($dbhost, $dbuser, $dbpass );
mysql_select_db($db);
?>

上記のコードを db config に使用すると、ログインが許可され、次のページにリダイレクトされますが、ユーザーの詳細は表示されませんが、そこにあるdb-sess.phpを使用session_startすると、ログインフォームでログインでき、ユーザー名が表示されます.

db-sess.phpを使用すると、 index.phpページにエラーが表示されます。

警告: session_start(): セッション キャッシュ リミッターを送信できません - ヘッダーは既に送信されています (出力は /home/mypalwal/public_html/index.php:16 で開始されています) 3 行目の /home/mypalwal/public_html/includes/db-sess.php にあります

4

1 に答える 1

0

3 つのファイルのいずれかの前にスペースがあるため、ページ出力が開始され、ヘッダーが送信されます。スペースを削除し、特に ?> を削除します

PS: あなたのコードには 2 つの驚くべきセキュリティ問題があります: SQL インジェクションの可能性と平文のパスワードです。

于 2013-11-07T16:45:10.563 に答える