-2

我正在做一个新项目www.merapalwal.com。我为这个项目创建了一个用户登录面板,用户可以使用他们的电子邮件 ID 和密码登录。一切正常,用户创建和更新正确。我在标题页中使用了登录表单,该表单包含在所有其他页面中。

我创建了两个数据库文件,db-user.php(用于数据库配置)和db-sess.php(用于带有 session_start 的数据库配置)。但是如果我在header-top.php的登录表单上使用db- sess.php ,它会给我错误:

警告:session_start():无法发送会话缓存限制器 - 第 3 行 /home/mypalwal/public_html/includes/db-sess.php 中的标头已发送(输出开始于 /home/mypalwal/public_html/index.php:16)

当我使用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';}

}
?>

数据库用户.php:

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

如果我将上面的代码用于 db config,它允许登录并重定向到下一页但不显示用户详细信息,但是当我使用其中包含的db-sess.phpsession_start时,登录表单允许我登录并显示用户名.

如果我使用db-sess.php ,它会在index.php页面上显示错误:

警告:session_start():无法发送会话缓存限制器 - 第 3 行 /home/mypalwal/public_html/includes/db-sess.php 中的标头已发送(输出开始于 /home/mypalwal/public_html/index.php:16)

4

1 回答 1

0

There is some space before in one of the 3 files, which causes the page output to be started and headers to be sent. Remove the space and especially remove the ?>

P.S.: You have 2 astonishing security issues in your code: SQL Injection possibilities and clear text passwords.

于 2013-11-07T16:45:10.563 回答