2011-10-05 2 views
0

저는 PHP에 익숙하지 않으므로 어떻게 될지 모르겠습니다. 친구 추가 페이지가 있습니다. 그리고 데이터베이스에서 "친구"라는 테이블과 다음 행이 있다고 말할 수 있습니다 : my_id와 friend_id 및 id_request.사용자 생성 오류를 방지하는 방법은 무엇입니까?

지금은 같은 모양 PHP는 페이지가 : addfriend.php ID는 =

을 friendid 그리고 나는 데이터베이스 내 ID와 그 friendid에 삽입 링크에서 ID를 사용합니다.

누군가가 주소 표시 줄의 링크에 "kdjfkldjlfk"를 입력하면 어떻게 될까요?

답변

1

당신이 이러한 경우를 방지하고 검증 할 필요가

는 전 다음 $ _GET [ 'ID']는 isset가와 friendid 진짜, 당신은 데이터베이스를 조회 할 수

테스트는 ID를 볼 수 있습니다 존재하지 않습니다 ...

+0

. 그렇지 않다면 페이지를 404로 다시 라우팅 할 것입니다. – AAA

1

누군가가 존재하지 않는 ID에 대한 URI를 방문하면 어떻게 될까요? "라는 말은 PHP가 수행해야한다고 말한 것에 달려 있습니다.

PHP가 SQL 쿼리에서 얻은 결과의 수를 확인하지 않으면 페이지가 500 내부 서버 오류으로 빠져 나올 가능성이 큽니다.

올바르게 설계 한 경우 친구로 존재하지 않는 사용자를 추가 할 수 없다고 설명하는 문서가 반환됩니다.

사실, 제대로 설계 한 경우 POST를 사용하여 데이터를 보내야합니다. 친구를 추가하는 것은 멱등하지 않은 이벤트가 아니기 때문에 GET이 아닙니다. (HTTP specification - GET에 부작용이 없어야합니다.)

+0

저는 실제로 그 $ id를 당겨서 그 id가 사용자 밑에 있는지 확인하기 위해 다시 사용합니다. 그렇지 않다면 페이지를 404로 다시 라우팅 할 것입니다. – AAA

1

사용자 입력의 유효성을 검사해야합니다. 먼저 $_GET 값을 int 유형으로 변환하고, 0과 같으면 실수로 입력했다고 알려줍니다.

$var = (int)$_GET['id']; 

if($var == 0) 
{ 
    // Error 
} 
else 
{ 
    // The rest of your code 
} 
+0

저는 실제로 그 $ id를 당겨서 그 id가 사용자 밑에 있는지 확인하기 위해 다시 사용합니다. 그렇지 않다면 페이지를 404로 다시 라우팅 할 것입니다. – AAA

+0

신중하게 쓰여진 것을 고맙습니다. 이제, 그것은 무엇을 의미합니까? – Bojangles

1

PHP에는 멋진 필터 기능이 내장되어 있습니다. 당신이 그들을 배우고 그들을 사용한다 : 나는 실제로 지금 $ id를 당기고 그 ID가 사용자 아래에 존재하는지 다시 사용하고

if (filter_var($_GET['id'], FILTER_VALIDATE_INT) === false) { 
    // error 
} 

if (filter_var($_GET['email'], FILTER_VALIDATE_EMAIL) === false) { 
    // error 
} 

if (filter_var($_GET['ip_address'], FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) === false) { 
    // error 
} 

http://us.php.net/manual/en/function.filter-var.php

관련 문제