2010-07-07 6 views
2

사용자 ($ uid)가 지난 1 시간 동안 항목을 제출 한 경우 아래 코드는 사용자를 인덱스 파일로 리디렉션해야합니다. 작동하지 않습니다.리디렉트 쿼리가 작동하지 않습니다.

어떤 아이디어가 좋을까요? 사전에

감사합니다,

$queryuidcount = "select loginid from submission where datesubmitted > (NOW() - INTERVAL 1 hours) AND loginid = '$uid'"; 
$uidresult = mysql_query($queryuidcount); 

if (mysql_num_rows($uidresult) >= 1) 
{ 

    session_write_close(); 
    header("Location:http://www.domain.com/sample/index.php"); 
    exit; 

} 
+0

리디렉션이 괜찮은 것 같습니다. $ uidresult의 결과는 무엇입니까? – fabrik

+0

'error_reporting (E_ALL);을 설정하고'header()'를 호출하기 전에 공백을 검사 해 보셨습니까? 'headers_sent()'를 검사하는 것도 도움이 될 수 있습니다. – Pete

답변

0

코드 심지어는 경우 문 내부의 코드에 도달 하는가? 시도해보십시오. var_dump("foo"); 헤더가 잘 보입니다. 출구 일 수 있습니다. 그래도 리디렉션을 방해합니다. 행운을 빈다!

Location: http://someurl 

둘째, 점점 : 모든

4

첫째, 그렇지 않으면 그것은 제대로 형성 HTTP 헤더 (일부 브라우저 대처할 수있는, 거기에 약간의 초크) 아니에요, Location:http://someurl 사이에 공간이 있어야한다 "헤더가 이미 전송되었습니다"라는 경고 메시지가 표시됩니까? 즉,이 줄 앞에서 이미 출력을 시작했음을 의미합니다 (예 : 파일 시작 부분의 공백, UTF BOM 표시 등)

2

아래의 sessio 관련 함수를 사용하고 있으므로 스크립트 상단에 session_start()을 넣는 것을 잊은 것처럼 보입니다. . 또한, 필요가 전체 도메인 경로를 지정하지 않는 경우, 파일 이름 만 괜찮을해야 오류가있는 경우

header("Location: index.php"); 

, 당신은 그것에 대해 알 수있는 스크립트의 상단에 다음 줄을 넣어 :

ini_set('display_errors', true); 
error_reporting(E_ALL); 

또한 일부 레코드가 반환되었는지 확인 :

if (mysql_num_rows($uidresult) >= 1) 
{ 
    exit('found rows !!'); 
} 
+0

'또한 전체 도메인 경로를 지정할 필요가 없으며 파일 이름 만 잘되어야합니다.'이것은 잘못되었습니다. 대부분의 브라우저가이를 받아들이고 의도 한대로 작동하지만 이것은 RFC2616에 대한 것입니다. – Pete

0

SQL 코드가 정확하지 않는 것 같습니다. 대신 시간을 시간으로 변경하십시오.

(NOW() - INTERVAL 1 hour) 

아마도 TIMEDIFF를 사용할 수 있습니까?

mysql> select TIMEDIFF('2010-07-07 09:38:28',NOW()); 
+---------------------------------------+ 
| TIMEDIFF('2010-07-07 09:38:28',NOW()) | 
+---------------------------------------+ 
| -01:03:38        | 
+---------------------------------------+ 
1 row in set (0.00 sec) 
관련 문제