2015-03-02 3 views
-2

Невозможно изменить информацию заголовка - заголовки, уже отправленные (вывод начинается с C: \ xampp \ htdocs \ d \ login.php: 15) в C: \ xampp \ htdocs \ d \ login.php в строке 41
Я получаю эту ошибку при входе в форму Что такое проблема On Line 41?Невозможно изменить информацию заголовка - заголовки уже отправлены

<!doctype html> 
 
<html> 
 
<head> 
 
<title>Login</title> 
 
</head> 
 
<body> 
 

 
<p><a href="register.php">Register</a> | <a href="login.php">Login</a></p> 
 
<h3>Login Form</h3> 
 
<form action="" method="POST"> 
 
    Username: <input type="text" name="user"><br /> 
 
    Password: <input type="password" name="pass"><br /> \t 
 
    <input type="submit" value="Login" name="submit" /> 
 
</form> 
 
<?php 
 
if(isset($_POST["submit"])){ 
 
    if(!empty($_POST['user']) && !empty($_POST['pass'])) { 
 
     $user=$_POST['user']; 
 
     $pass=$_POST['pass']; 
 

 
     $con=mysql_connect('localhost','yoyo','glappyhunt') or die(mysql_error()); 
 
     mysql_select_db('user_registration') or die("cannot select DB"); 
 

 
     $query=mysql_query("SELECT * FROM login WHERE username='".$user."' AND password='".$pass."'"); 
 
     $numrows=mysql_num_rows($query); 
 
     
 
     if($numrows!=0) { 
 
      while($row=mysql_fetch_assoc($query)) { 
 
       $dbusername=$row['username']; 
 
       $dbpassword=$row['password']; 
 
      } 
 

 
      if($user == $dbusername && $pass == $dbpassword0 { 
 
       (ob_start()); 
 
       $_SESSION['sess_user']=$user; 
 

 
       /* Redirect browser */ 
 
       header("Location: member.php"); 
 
      } 
 
     } else { 
 
      echo "Invalid username or password!"; 
 
     } 
 
    } else { 
 
     echo "All fields are required!"; 
 
    } 
 
} 
 
?> 
 

 
</body> 
 
</html>

+1

Возможный дубликат [Как исправить ошибку «Заголовки уже отправлены» в PHP] (http://stackoverflow.com/questions/8028957/how-to-fix-headers-already-sent-error-in-php) – Rizier123

ответ

0

Header должен быть перед всем выходом, переместите PHP скрипт в верхней части страницы.

<?php 
    ... 
?> 

<!doctype> 
<html> 
    ... 
+0

Спасибо, это сработало :) –

0

Введите условие, если оно есть в верхней части страницы.

Вы не должны отправлять какие-либо данные перед отправкой заголовка, даже не html. В вашем коде html-теги отправляются как выходные данные перед вызовом заголовка. В соответствии с информацией о php.net для заголовков.

Помните, что заголовок header() должен быть вызван до отправки любого фактического вывода либо с помощью обычных тегов HTML, либо пустых строк в файле, либо из PHP.

Обычно заголовок содержит информацию о контенте, который должен быть отправлен, например, тип контента, размер, статус ресурса. Если вы сначала отправляете исходный вывод, а затем отправляете заголовки, заголовки не имеют значения, поэтому ошибка.

0

В дополнение к ответу пантеры, есть некоторые ситуации, когда нам нужно перенаправить после отображения html. Тем не менее, это не может считаться хорошей практикой (и я буду загружать представление после того, как все будет сделано в любом случае), но мы можем немного его взломать с помощью javascript redirect.

Для этого примера, мы могли бы сделать следующее:

if($user == $dbusername && $pass == $dbpassword0 { 

     $_SESSION['sess_user']=$user; 
     /* Redirect browser */ 
     echo '<script>document.location.href="members.php";</script>'; 
     die(); 
      } 

Опять же, это на самом деле не лучшая практика, но может пригодиться иногда.

Смежные вопросы