2011-12-30 6 views
0

나는 이것을 작성하고 모든 사람의 의견을 듣고 싶었다. 나는 FORM 제출에서 변수를 기대할 때 이것을 사용한다. 즉 :게시물 처리 요청

<form method="post" action="index.php"> 
Username: <input type="text" name="username"> 
</form> 


$username = get_request('username'); 

function get_request($name) { 
    if(isset($_REQUEST[$name])) { 
     //return mysql_real_escape_string(htmlentities($_REQUEST[$name])); 
     return mysql_real_escape_string($_REQUEST[$name]); 
    } else { 
     return ""; 
    } 
} 
+0

데이터가 POST 변수로 전달 될 것으로 예상되는 경우 $ _POST 배열을 사용할 수 있습니다. – Yaniro

+0

나에게 잘 어울립니다. –

+0

'$ _REQUEST' 대신'$ _POST' 또는'$ _GET'을 사용할 것을 제안합니다. –

답변

1

는 mysql_real_escape_string 동안은() 좋은 일이, 당신은 당신이 돌아 사항에 엄격 할 수도 있습니다 않습니다. 예 : 5.2 이상

return preg_replace('/[^a-z0-9]/', '', $_REQUEST[$name]); 

을 아니면 PHP를 실행하는 경우도 filter_var를 사용하면 영숫자가 필요한 경우는 안전 (그리고 아마도 더 빠른)를 수행하는 것입니다.

또한 위에서 설명한 것처럼 POST 데이터 만 처리하는 경우 $ _REQUEST 대신 $ _POST를 쉽게 사용할 수 있습니다.

그 외의 다른 작업은 계속 진행하십시오! :)

1

니스,하지만은 $ _REQUEST가 실패 할 경우 빈 문자열 대신 오류를 반환하고 싶지해야합니까? 그렇지 않으면 좋은!

1

특정 SQL 주입에 대해 도움이되지 않는다는 점만 제외하면 괜찮아 보입니다. 유형에 따라 입력을 위생 처리하는 또 다른 인수를 추가해야합니다 (예 : 반환 값이 정수 또는 부동 소수점 숫자인지 확인).

예를 들어 쿼리 번호가 SELECT * FROM tbl LIMIT 10, $page 인 페이지 매김 메커니즘이있는 경우 $page = like 1; DROP TABLE tbl --이고 기능이 get_request() 인 경우 아무 도움이되지 않습니다.

존재하지 않는 경우 빈 문자열 ("") 대신 null을 반환해야합니다. 이 $x = null를 false 반환하는 반면

예를 들어 당신이 변수 $x = ""이있는 경우

다음 isset($x)true를 반환합니다.

다른 사람들이 지적한대로 GETPOST을 구별해야합니다.