2011-12-31 2 views
8

나는 프로젝트 작업을하고 있고 다른 사람의 웹 서버에서 프로그램을 실행해야합니다. 내가 문제가있는 아주 간단한 로그인 페이지입니다. WAMP를 통해 로컬 호스트를 통해 프로그램을 실행하면 프로그램이 올바르게 작동합니다. 내가 겪고있는 문제는 리디렉션 부분이 올바르게 작동하지 않아 사용자의 유효성을 검사하고 세션을 시작하지만 리디렉션이 발생하면 아무 일도 일어나지 않는다는 것입니다.PHP에서 리디렉션하는 "헤더"대신

내 로컬 호스트를 통해 올바르게 작동하므로 내 구문에 문제가있는 것으로 생각됩니다. 또는 대안으로 서버가 그 기능을 가지고 있지 않다고 생각하고 있습니다. 서버가 지원하는 모듈을 선택하고 선택할 수 있는지는 확실하지 않지만 가능한지 확실합니다.)

중요한지는 모르지만 파일에 액세스 할 수있는 "cpanel"을 사용하고 있기 때문에 동일한 디렉토리에 모든 사람이있어 내가 잘못 생각하거나 대안을 제안 할 수 있다면 "헤더"를 통해 리디렉션하면 도움이 될 것입니다. 나는 주변을 둘러 보았지만 "머리말"은 표준 작업 말인 것 같습니다.

가 Heres는 코드 내가 가진 :

if((!empty($_POST['username'])) && (!empty($_POST['password']))) 
{ 
// username and password sent from Form 
$myusername = $_POST['username']; 
$mypassword = $_POST['password']; 


$sql="SELECT UserName FROM User WHERE UserName='$myusername' and  Password='$mypassword'"; 

$result=mysql_query($sql); 

$row=mysql_fetch_array($result); 
//$active=$row['active']; 
$count=mysql_num_rows($result); 

// If result matched $myusername and $mypassword, table row must be 1 row 
if($count==1) 
{ 
    echo "we made if to the if"; 
    session_start(); 
    session_register("myusername"); 
    $_SESSION['login_user']=$myusername; 
    echo "right b4 the re-direct"; 
    header("location: UI.php"); 
      exit; 
} 
else 
    echo "Your user name/password was not correct pleast TRY AGAIN!!!"; 

} 

업데이트를 다음 에코에 대한 진술에 대응하여 내가 그하여 가능한 문제 동일한 파일에 내 양식을 처리하고 에코 $의 _SERVER를 사용하고 것 [ 'PHP_SELF ']

+1

는 당신이 오류보고를 활성화 함 페이지를 리디렉션? 조건이 충족되고 헤더가 전송되었는지 100 % 확신합니까? –

+0

헤더 호출 전에는 페이지 출력을 할 수 없습니다. 디버깅 문으로 인해 리디렉션이 작동하지 않습니다. – JJJ

+0

그래도 제거하려고 시도했지만 여전히 제대로 리디렉션되지 않습니다 – cpowel2

답변

1

:

실제 출력이 전송되기 전에 header() 정상 HTML 태그에 의해 중 하나라고해야 기억, 파일에, 또는 PHP에서 빈 줄.

귀하의 echo은 다른 출력이 헤더 앞에 전송 된 것처럼 리디렉션이 실패하게 만듭니다.

0

헤더를 통해 리디렉션하는 것은 내용이 잘못되어 있으면 불법입니다. echo을 모두 꺼내면 제대로 작동합니다. 일 경우 리디렉션 전에 사용자에게 메시지가 표시되도록하려면 location.href을 통해 자바 스크립트를 사용해야 할 수 있습니다. the docs에서

1

일부 텍스트를 출력 한 후에는 헤더를 설정할 수 없으므로 echo 문 (사례에 적합)보다 먼저 header 호출을 이동하거나 output buffering을 사용하십시오.

37

나는 당신은 아마 이미 헤더 sent..or도 사용할 수 없습니다 자바 스크립트 사용중인 경우 모든 situations..even에서 작동 리디렉션이 기능 ...

..

function redirect($url) 
{ 
    if (!headers_sent()) 
    {  
     header('Location: '.$url); 
     exit; 
     } 
    else 
     { 
     echo '<script type="text/javascript">'; 
     echo 'window.location.href="'.$url.'";'; 
     echo '</script>'; 
     echo '<noscript>'; 
     echo '<meta http-equiv="refresh" content="0;url='.$url.'" />'; 
     echo '</noscript>'; exit; 
    } 
} 
+2

이것은 좋은 물건입니다 .. – Laurent

+0

완벽하게 작동 thx !!! –

+0

좋습니다. 매력처럼 작동합니다. – amilaishere

0

를 사용 PHP 헤더를 보내기 전에 브라우저에 컨텐츠를 보냈습니다. 닫는 PHP 태그 (?>) 다음에 \ n 일 수 있습니다.

더 큰 프로젝트 나 서로 길게 늘어나는 클래스의 긴 행에서 원하지 않는 출력이 생성되는 곳을 찾으십시오.

error_reporting(E_ALL); 
ini_set("display_errors", 1); 
header("Location: https://mydomain.com/myLoginAdress/"); 
die(); 

엄격한 오류보고가 출력 라인과 파일을 던질 것이다 : 은 당신이 할 수있는 문제를 찾을 수 있습니다.아래의 코드를 사용하여

2

우리는

$page = $_SERVER['REQUEST_URI']; 
echo '<script type="text/javascript">'; 
echo 'window.location.href="'.$page.'";'; 
echo '</script>'; 
0
echo "<script>window.location.href='yourPage.php'</script>"; 
관련 문제