2009-09-04 3 views
2

db_connect 파일 :도움말 : 헤더 정보를 수정할 수 없습니다 - 이미 (출력에 의해 전송 헤더는 C에서 시작 : ## 오류

<?php 
//connects to the database 
    $username = "username"; 
    $password = "password"; 
    $hostname = "host"; 
    $database="database"; 
    $link=mysql_connect($hostname, $username, $password) or die("Unable to connect to MySQL".mysql_error()); 
    mysql_select_db($database, $link) or die("Could not select the database".mysql_error()); 
    ?> 

과정-로그인 파일 :

<?php session_start(); 
include "DB_connect.php"; 
    if(!isset($_SESSION)) 
    $username=$_POST["UserName"]; 
    $password=$_POST["Password"]; 
    $errormessage = ""; 

    $sql="SELECT * FROM members where UserName='$username' and Password='$password'"; 
    $result = mysql_query($sql, $link) or exit('$sql failed: '.mysql_error()); 
    $num_rows = mysql_num_rows($result); 
    if($num_rows==0){header("Location:login.php");} 
    else { 
    header("Location:MyPage.php"); 
    exit; 
    }?> 

답변

1

header() 함수로 헤더를 다시 정의하기 전에 HTTP 본문에 문자를 보내면 안됩니다. 즉, 응답의 본문 부분을 시작하지 않아야합니다.

포함 된 파일의 시작 부분이나 끝 부분에 blanck 행이 있는지 확인하고 header()를 호출하기 전에 에코가 없는지 확인하십시오.

이 문제는 항상 header()를 호출하기 전에 chars가 전송 될 때 발생합니다.

1

게시 한 코드 앞부분에 공백 행이 있거나 더 실제 콘텐츠가 전송되었을 가능성이 큽니다. PHP가 페이지 콘텐츠를 보내기 시작하면 더 이상 헤더를 업데이트 할 수 없습니다 (페이지 콘텐츠 전에 전송되므로).

6

코드 파일에서 PHP 끝 태그 (?>)를 제거하는 것이 좋습니다. 이들은 파서에 의해 요구되지 않으며, ?> 뒤에 공백 문자가 있으면 브라우저에 결과가 출력되고 setcookie()header() 호출을 방해합니다. <?php 태그를 열기 전에 파일 상단에도 공백이 없어야합니다. 내 생각 엔 db_connect 파일 끝에 공백이 있습니다.

변수를 위생적으로 쿼리하지 않고 직접 입력하기 때문에 눈에 띄는 SQL 주입 취약점이 있습니다. 당신은이 작업을 수행해야합니다

$sql="SELECT * FROM members where UserName='". 
    mysql_real_escape_string($username)."' and 
    Password='".mysql_real_escape_string($password)."'"; 
1

헤더 오류를 방지하기 위해 세션과 로그인과 같은, 당신이 사용해야 출력 버퍼링을 다루는. 다음과 같은 내용 :

//Start the output buffer so we don't create any errors with headers 
ob_start(); 

//Check to see if it has been started 
if(session_started()){ 
    echo 'The session has been started.<br />'; 
}else{ 
    echo 'The session has not been started.<br />'; 
} 

//Start the session 
echo 'Starting Session...<br />'; 
session_start(); 
관련 문제