我正在开发一个新项目www.merapalwal.com
。我为此项目创建了一个用户登录面板,用户可以使用他们的电子邮件ID和密码登录。一切正常,用户正确创建和更新。我在标题页中使用了登录表单,该页面包含在所有其他页面中。
我创建了两个db文件, db-user.php (对于db config)和 db-sess.php (对于带有session_start的db config)。但是如果我在 header-top.php 中的登录表单上使用 db-sess.php ,它会给我错误:
警告:session_start():无法发送会话缓存限制器 - 已经发送的标头(在/home/mypalwal/public_html/index.php:16中开始输出)/home/mypalwal/public_html/includes/db-sess.php在第3行
当我使用 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';}
}
?>
db-user.php:
<?php
$dbhost = 'localhost';
$dbuser = '######';
$dbpass = '######';
$db = '#######';
$conn = mysql_connect($dbhost, $dbuser, $dbpass );
mysql_select_db($db);
?>
如果我将上述代码用于db config,它允许登录并重定向到下一页但不显示用户详细信息,但是当我使用 db-sess.php 时{{1}在其中,登录表单允许我登录并显示用户名。
如果我使用 db-sess.php ,则会在 index.php 页面上显示错误:
警告:session_start():无法发送会话缓存限制器 - 已经发送的标头(在/home/mypalwal/public_html/index.php:16中开始输出)/home/mypalwal/public_html/includes/db-sess.php在第3行
答案 0 :(得分:0)
之前在3个文件中的一个文件中有一些空格,这会导致页面输出启动并发送标题。删除空格,特别是删除?&gt;
P.S。:您的代码中有2个令人惊讶的安全问题:SQL注入可能性和明文密码。