2010-01-21 2 views
0

나는 다음과 같은 생성자가 :위생적으로는 PHP 생성자를 통해 데이터를 GET

public function __construct(){ 
    foreach($_GET as $key=>$value){ 
     $_GET[$key] = addslashes($value); 
    } 
    $this->get = $_GET; 
} 

를하고과 같이 사용되는 :

'ID'는 URL을 통해 전달되는 매개 변수가
$app->get['id'] 

.
생성자를 통해 모든 데이터를 살균하는 좋은 방법이 있습니까?

+2

다른 언어/컨텍스트를 캐스팅 할 수 기다리고있어 변수의 유형을 알고있는 경우 다른 특수 문자를 가지고 있으므로 다른 처리가 필요합니다. 나는 모든 데이터를 동일한 기능을 통해 보내는 것이 좋은 생각이라고 생각하지 않습니다. – Gumbo

+0

아마도 좋은 생각은 아니지만, 만약 당신이 않았다면, 나는 $ _GET을 매개 변수로 명시 적으로 전달할 것입니다. 수업 내에서 글로벌 데이터를 사용하지 않는 것이 좋습니다. – jonstjohn

+1

@Gumbo에 동의해야합니다. 데이터 위생에 대한 '한 가지 방법'이 없습니다. –

답변

1

이 작업을 수행하는 약간 짧은 방법 :

public function __construct(){ 
    $this->get = array_map('mysql_real_escape_string', $_GET); 
} 
+0

그것은 꽤 산뜻합니다! – kylex

0

왜이 작업을 수행하고 있습니까? SQL 삽입을 방지하려면?

예방 접종은 쿼리 작성 수준에서 수행해야하며 대부분의 경우 정확히 mysql_real_escape_string과 같은 관련 함수를 사용해야합니다. 이는 인용 부호가 아닌 모든 이상한 경우를 잡아냅니다. 여기에서 여러분이하고있는 일은 PHP에서 삭제 된 악명 높은 마술 따옴표 기능보다 낫지 않습니다.

0

당신은 당신이 원하는 유형과 같은

$this->id = (int)$app->get['id']; //forces type to be integer