2014-11-21 4 views
0

Как решить эту ошибку (session_start(): Не удается отправить ограничитель кеша сеанса - уже отправленные заголовки (вывод запущен в/opt/lampp/htdocs/HRMS/header.php: 140))? Это страница входа.Как решить: session_start(): Не удается отправить ограничитель кеша сеанса - уже отправлены заголовки

Журналы:

PHP Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /opt/lampp/htdocs/hrms/header.php:140) in /opt/lampp/htdocs/hrms/index.php on line 74 

PHP Warning: Cannot modify header information - headers already sent by (output started at /opt/lampp/htdocs/hrms/header.php:140) in /opt/lampp/htdocs/hrms/index.php on line 82 

линии 74:

session_start(); 

линия 82:

header('location:home.php'); 

Па GE:

<?php include('dbcon.php');include('header.php');?> 
<body> 
<?php include('nav-top1.php'); ?> 
<div class="wrapper"> 

</br> 
</br> 
</br> 
</br> 
</br> 
</br> 
</br> 
<div id="element" class="hero-body-index"> 
    <div class="alert alert-info"> 
    <p><font color=""><h2>Login</h2></font></p> 
    Enter the details to login your account 
    </div> 

    <hr> 
    <form method="POST" > 
    <table> 
    <tr><td><font color="">UserName:</font>&nbsp;&nbsp;</td><td><input type="text" name="UserName" class="UserName_hover"></td></tr> 
    <tr><td>...<td></tr> 
    <tr><td><font color="">Password:</font>&nbsp;&nbsp;</td><td><input type="Password" name="Password" class="Password_hover"></td></tr> 
    <tr><td>...<td></tr> 
    <tr><td></td><td> <button class="btn btn-primary btn-large" name="Login"><i class="icon-ok-sign icon-large"></i>&nbsp;Login</button></td></tr> 
    <tr><td> 
    </td><tr> 
    </form> 
    </table> 

    </br> 
    <div class="error"> 
    <?php 

if (isset($_POST['Login'])){ 

$UserName=$_POST['UserName']; 
$Password=$_POST['Password']; 

$login_query=mysql_query("select * from user where UserName='$UserName' and Password='$Password' and User_Type='Admin'"); 
$count=mysql_num_rows($login_query); 

$login_query1=mysql_query("select * from user where UserName='$UserName' and Password='$Password' and User_Type='User'"); 
$count1=mysql_num_rows($login_query1); 



$row1=mysql_fetch_array($login_query1); 
$f=$row1['FirstName']; 
$l=$row1['LastName']; 

$row=mysql_fetch_array($login_query); 
$f=$row['FirstName']; 
$l=$row['LastName']; 





if ($count1 == 1){ 
session_start(); 
$_SESSION['id']=$row1['User_id']; 
$_SESSION['User_Type']=$row1['User_Type']; 
$type=$row1['User_Type']; 

mysql_query("INSERT INTO history (data,action,date,user)VALUES('$f $l', 'Login', NOW(),'$type')")or die(mysql_error()); 


header('location:home_user.php'); 
} 

if ($count > 0){ 
session_start(); 
$_SESSION['id']=$row['User_id']; 
$_SESSION['User_Type']=$row['User_Type']; 
$type=$row['User_Type']; 

mysql_query("INSERT INTO history (data,action,date,user)VALUES('$f $l', 'Login', NOW(),'$type')")or die(mysql_error()); 


header('location:home.php'); 
}else{ 
?> 
    <div class="alert alert-error"> 
    <button class="close" data-dismiss="alert">Ч</button> 
    Please check your UserName and Password 
    </div> 
<?php } 

} 

?> 
</div> 
</div> 
</br> 
</br> 
</br> 
</br> 
</br> 
</br> 
</br> 
<?php include('footer.php');?> 


</div> 
</body> 
</html> 

ответ

1

В точке, которую вы называете session_start() ваш скрипт уже послал заголовки HTTP, что делает его поздно для вас, чтобы изменить их. session_start() необходимо вызвать, прежде чем делать какой-либо вывод в браузере. То же самое касается header(). Чтобы решить эту проблему, просто поместите вызовы функций перед выводом любого HTML, то есть в верхней части файла.

Дальнейшее чтение: https://stackoverflow.com/a/8028987/4261029

+0

Помогите мне пожалуйста. Где я могу вставить эту строку? Дай мне код, пожалуйста. – CatUser

+0

@CatUser Как я писал в своем ответе, поставьте его перед выводом любого HTML (перед тэгом ). – piers

+0

Я понимаю, но это не работает. Я делаю что-то неправильно. Помоги мне. Какую часть моего кода я поставил перед тегом тега? – CatUser

0

пут session_start(); в первой строке перед любым выходом HTML

избегает вызова session_start в ваших управления.

ли ваша страница использует сеансы, то вы размещаете ее сначала в своем коде или ваша страница не использует сеансы.

попробовать это

<?php 

/** 
* your dbcon.php must contain only fonctions 
* no oupout 
*/ 
include('dbcon.php'); 

?> 

<body> 

<?php include('header.php'); ?> 
<?php include('nav-top1.php'); ?> 
<div class="wrapper"> 


</br> 
</br> 
</br> 
</br> 
</br> 
</br> 
</br> 
<div id="element" class="hero-body-index"> 
    <div class="alert alert-info"> 
    <p><font color=""><h2>Login</h2></font></p> 
    Enter the details to login your account 
    </div> 

    <hr> 
    <form method="POST" > 
    <table> 
    <tr><td><font color="">UserName:</font>&nbsp;&nbsp;</td><td><input type="text" name="UserName" class="UserName_hover"></td></tr> 
    <tr><td>...<td></tr> 
    <tr><td><font color="">Password:</font>&nbsp;&nbsp;</td><td><input type="Password" name="Password" class="Password_hover"></td></tr> 
    <tr><td>...<td></tr> 
    <tr><td></td><td> <button class="btn btn-primary btn-large" name="Login"><i class="icon-ok-sign icon-large"></i>&nbsp;Login</button></td></tr> 
    <tr><td> 
    </td><tr> 
    </form> 
    </table> 

    </br> 
    <div class="error"> 
    <?php 

if (isset($_POST['Login'])){ 

$UserName=$_POST['UserName']; 
$Password=$_POST['Password']; 

$login_query=mysql_query("select * from user where UserName='$UserName' and Password='$Password' and User_Type='Admin'"); 
$count=mysql_num_rows($login_query); 

$login_query1=mysql_query("select * from user where UserName='$UserName' and Password='$Password' and User_Type='User'"); 
$count1=mysql_num_rows($login_query1); 



$row1=mysql_fetch_array($login_query1); 
$f=$row1['FirstName']; 
$l=$row1['LastName']; 

$row=mysql_fetch_array($login_query); 
$f=$row['FirstName']; 
$l=$row['LastName']; 





if ($count1 == 1){ 
// put this in another file 
session_start(); 
$_SESSION['id']=$row1['User_id']; 
$_SESSION['User_Type']=$row1['User_Type']; 
$type=$row1['User_Type']; 

mysql_query("INSERT INTO history (data,action,date,user)VALUES('$f $l', 'Login', NOW(),'$type')")or die(mysql_error()); 

header('location:home_user.php'); 
} 

if ($count > 0){ 
// put this in another file 
session_start(); 
$_SESSION['id']=$row['User_id']; 
$_SESSION['User_Type']=$row['User_Type']; 
$type=$row['User_Type']; 

mysql_query("INSERT INTO history (data,action,date,user)VALUES('$f $l', 'Login', NOW(),'$type')")or die(mysql_error()); 


header('location:home.php'); 
}else{ 
?> 
    <div class="alert alert-error"> 
    <button class="close" data-dismiss="alert">Ч</button> 
    Please check your UserName and Password 
    </div> 
<?php } 

} 

?> 
</div> 
</div> 
</br> 
</br> 
</br> 
</br> 
</br> 
</br> 
</br> 
<?php include('footer.php');?> 


</div> 
</body>