2010-04-22 2 views
0
<?php 
include 'lib/db_conn.php'; 
$uid=$_REQUEST['uid']; 
$pass=$_REQUEST['pass']; 
if(($uid==NULL && $pass==NULL) ||($uid==NULL) ||($pass==NULL)) 
{ 
    header("location:index.php?msg=Fields can't be left blank.."); 
} 

$pass=md5($pass); 
$sql1="SELECT * FROM `tb_user` WHERE `email`='$uid' AND `pass`='$pass'"; 
$rs1=mysql_query($sql1) or die (mysql_error()); 
$row1=mysql_fetch_array($rs1) or die (mysql_error()); 
$email=$row1['email']; 
if($uid==$email) 
{ 
     session_start(); 
     $_SESSION['id']=$row1['id']; 
     header("location:home.php"); 
} 
else 
{ 
header("location:index.php?msg=Wrong Credentials.."); 
} 
?> 
+0

'경우 (($의 UID == NULL && $ 패스 == NULL) || ($의 UID == NULL을 따라야합니다 $ pass == NULL))'... 과도하다. OR 케이스는 AND 케이스가 필요 없음을 의미한다. – dnagirl

+1

'Location :'헤더 다음에는 프로토콜을 포함하여 absoluteURI가 와야한다. http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html – TRiG

답변

0

는 주소 표시 줄에 메시지를 작성하지 않는 것이 좋습니다하지만 그냥 토큰 화, 즉 :

header("location:index.php?msg=wcred"); 

과의 index.php에서 :

if ($_GET['msg'] == "wcred") echo "Wrong Credentials.."; 

그리고, 카이 언급 한 바와 같이, $uid=$_REQUEST['uid'];는 dnagirl가 언급 한 바와 같이, 필드 공허함 검사가 잘못된 것입니다, 또한

$uid=mysql_real_escape_string($_REQUEST['uid']); 

해야합니다. 내가 언급 나처럼
또한, exit은 (||) 어떤 위치 헤더

<?php 
if((empty($_REQUEST['uid']) OR empty($_REQUEST['pass'])) { 
    header("location:index.php?msg=fempty"); 
    exit; 
} 
include 'lib/db_conn.php'; 

$pass=md5($_REQUEST['pass']); 
$pass=mysql_real_escape_string($pass); 
$uid=mysql_real_escape_string($_REQUEST['uid']); 

$sql1="SELECT * FROM `tb_user` WHERE `email`='$uid' AND `pass`='$pass'"; 
$rs1=mysql_query($sql1) or die (mysql_error()); 
$row1=mysql_fetch_array($rs1) or trigger_error(mysql_error()); 
if($row1) { 
    session_start(); 
    $_SESSION['id']=$row1['id']; 
    header("location:home.php"); 
    exit; 
} else { 
    header("location:index.php?msg=wcred"); 
    exit; 
} 
?> 
0

코드 태그를 사용해야합니다. 읽을 때보기가 어렵습니다.

나는 "잘못된 자격증 명 ..."을 입력해서는 안되며 문자 그대로 URL을 인코딩해야한다고 생각합니다. 또한, header() -calls를 보낸 후에 실행을 exit()해야합니다.

그건 그렇고, 당신은 $ uid를 벗어나야합니다. 그렇지 않으면 SQL 인젝션에 문제가 생길 수 있습니다.

+0

탈출의 좋은 시점 –

관련 문제