2011-11-05 3 views
0

나는 사용자가 계정을 만든 다음 로그인 할 수있는 웹 사이트를 만들고 있습니다. 로그인하면 사용자는 등록 된 정보를 변경할 수 있습니다.PHP에 대한 Critera 전달

사용자 이름의 사용자가 로그인 아래와 같이 URL에 전달 될 때 :

header("Location: loggedon.php?$username"); 

이제 내 loggedon.php 페이지에 내가 추가 한이 :

<?php 
$username = $_GET["username"]; 
$query="SELECT * FROM customer WHERE username=['$username']"; 
$result = mysql_query ($query) or die ("error in query"); 

while ($row = mysql_fetch_array($result)) 
{ 
// Print one row of results 
print "<tr>" . 
"<td>" . $row["CustomerID"] . "</td>" . 
"<td>" . $row["Firstnames"] . "</td>" . 
"<td>" . $row["Surname"] . "</td>" . 
"<td>" . $row["Username"] . "</td>" . 
"<td>" . $row["Email"] . "</td>" . 
"<td>" . $row["Password"] . "</td>" . 
//print a change/delete link at the end of each row 
       "<td><a href=customerChangeDelete.php?id=".$row['CustomerID'].">Change/Delete</a></td>";      
print "</tr>"; 
} 
// Then, finish the table 
print "</table>"; 
} 
?> 

내가 실행하면 페이지 및 로그인 다음 오류가 발생합니다.

알림 : 정의되지 않은 색인 : J : \ xampp \ htdocs \ loggedon.php on line 60

쿼리에서 오류가 발생했습니다.

URL (?)에서 사용자 이름을 추출 할 때 실수를 저지른 것으로 생각합니다. 누구든지 제게 정확한 방향으로 밀어 주면 놀라운 일이 될 수 있습니다. 감사.

+0

응용 프로그램의 모양은 모르겠지만 보안 관련 일에 대해 생각하고 싶을 것입니다. GET 및 POST 매개 변수는 사용자가 조작 할 수 있기 때문에 매우 안전하지 않습니다. 누군가는 loggedon.php? username = administrator를 호출하고 보지 말아야 할 것을 볼 수 있습니다. 어쩌면 당신이 축소 된 예제를 게시했을 수도 있지만, 사용자가 로그인하면 아무런 검증이 표시되지 않습니다. – hacksteak25

답변

1

mysql_real_escape_string으로 시도해 보지 않겠습니까? 더 안전 할 것입니다. 이 같은 URL을 얻어야한다 $ _GET을 위해

loggedon.php

하지만, "? : loggedon.php $ 사용자 이름 위치"당신이 좋아하는 URL을 얻고있다

다른 손에서

?

loggedon.php? 이름 난 추천

이 변경 = 존

header("Location: loggedon.php?$username"); 

포함 :

header("Location: loggedon.php?username=".$username); 
0

헤더 리디렉션에서 username-Parameter의 이름을 지정하지 않았습니다. 대신

header("Location: loggedon.php?username=$username");
을 사용하십시오.

+0

팁 주셔서 감사합니다. 불행히도 나는 여전히 'Query in Error'메시지와 DB로부터의 데이터를 얻지 못했다. – user1008749

+0

죄송합니다. 그 메시지를 놓치 셨습니다. Galled는 mysql_real_esacape_string에 대한 답변을 게시했습니다. 이것 좀보세요. 연결된 매뉴얼에는 좋은 예가 있습니다. 기본적으로 대괄호 때문에 구문 오류가 있습니다. "SELECT * FROM customer where username = '$ username'"은 작동하지만, 매우 불안합니다. – hacksteak25

+0

고마워, 아프 지금 봐! 지금 기초/기초에 대한 작업을하려는 순간에 보안 문제를 몇 주 만에보고있을 것입니다. =) – user1008749