2011-05-12 7 views
2

$_POST 또는 $_GET 슈퍼 전역에 저장된 양식에서 데이터를 추출하는 방법을 자동화하는 방법 (또는 적어도 일부 프로세스를 자동화하는 방법)이 있습니까?처리 양식 데이터 자동화

foreach 루프 및 다른 종류의 루프를 사용하여 각 키/값 쌍을 사용하여 배열을 반복 할 수 있다는 것을 알고 있지만 그 데이터를 필요로하는 다른 코드가있는 곳이 많지만 foreach 루프 내부에서 작업 할 때.

편집 : 다음은 내가 생각할 수있는 예입니다. 게시 된 데이터가한데 모아 데이터베이스에 삽입하려고한다고 가정 해보십시오. 또한

foreach($array as $key => $value) { 
mysql_query(INSERT INTO table (somecolumn) VALUES($value); 
} 

, 내가 정말하고 싶은 다른 일이 : 지금까지 제가보기에이 같은 일을 뭔가 내가 통해 각 루프의 다른 컬럼에 값을 삽입해야하는 것 때문에 불가능합니다 게시 된 데이터에서 모든 값을 가져 와서 각 변수를 어떻게 든 변수에 할당합니다. extract()과 비슷하지만 다른 변수를 덮어 쓰지 않는 것이 좋습니다. 때

$data = array(); 
foreach($array as $key => $value) { 
$data[$key] = $value; 
} 

내가 생각할 수있는 마지막 경우는 다음과 같습니다이 훨씬 더 효율적인 경우 내가 생각할 수있는 유일한 것은이 어떻게 든 배열에 데이터를 입력하는 것입니다 처리하는,하지만 난 모르겠어요 foreach 루프 외부에서이 데이터를 사용해야합니다. foreach 루프 내부에서 모든 것이 실행되도록 코드를 수정하면 루프 내부의 양식 데이터와 관련된 모든 것을 유지하는 것으로 제한됩니다. 변수 및/또는 상수가 루프 내부에서 정의 된 경우 변수 및/또는 상수는 외부에서 액세스 할 수 없습니다. 나는 최근에 Java로 많은 작업을 해왔으며 변수를 다루는 더 엄격한 범위와 엄격한 방법에 익숙해 져있다. :)

나는 extract() 메서드에 대해 약간 읽었지만 조금 위험 해 보인다. 사용할 것 (변수, 보안 구멍 등 덮어 쓰기).

많은 양의 데이터를 처리하는 사람 (25 개 이상의 양식 필드를 말하며)은 어떻게 처리합니까? 다른 곳에서 사용하기 위해 $data = $_POST['somedata']과 같은 변수를 할당하는 데 지겨워졌습니다 ...

감사합니다!

+0

정교하지만 "데이터를 필요로하는 다른 코드가있는 곳이 많지만 foreach 루프 내부에서는 전혀 작동하지 않습니다." 어떤 종류의 코드가 foreach 루프에서 작동하지 않을까요 ?? – mellamokb

+0

그냥 생각해 볼 수있는 몇 가지 예제를 추가했습니다 – Aaron

답변

2

난 당신이 각 키/값 쌍으로 뭔가를 할 수있는 루프의 foreach 루프 및 기타 종류와 배열을 통해 반복 할 수 알지만, 내가 필요로 다른 코드 이 많은 시간이있다 그 데이터는 단지 foreach 루프 안에있을 때 에 모두 작동하지 않을 것입니다.

사례가 있습니까?

나는 추출물() 방법 조금 대해 읽어 봤는데,하지만 위험한 것은 약간의 가 (덮어 쓰기 변수, 보안 구멍 등)를 사용하는 것 같습니다.

예, 사용하지 마십시오. 이것은 이전 버전의 PHP에서 실제로 많이 사용되어 많은 보안 문제를 야기했습니다.대량의 데이터 양을 처리하는 다른 사람들을위한

당신이 그것을 어떻게, (25 + 형태 필드 말할 수)? 나는 ... $ _POST 이 반복 에 [ 'somedata는'] 다른 곳에서 사용할 =

I 유사한 기능 그룹으로 양식 필드의 일반적 분할 많은 (이름을 $ 데이터와 같은 할당 변수의 피곤 해요 , 숫자, 날짜 등)을 처리하고 그런 식으로 처리하십시오. 솔직하게 말해서, 체크되지 않은 데이터가 내 데이터베이스에 들어가고 많은 폼 필드를 검사하는 문제가 더 많습니다.

+0

데이터 소개 그룹을 분할한다고하면 비슷한 데이터를 가져 와서 각 그룹을 나중에 사용할 배열에 배치한다는 의미입니까? – Aaron

+1

@Aaron 나는 일반적으로 어떤 종류의 데이터인지에 따라 반복되는'$ _POST' 키 값 배열을 가지고 있습니다. 예를 들어 생년월일, 월, 미국 우편 번호, 신용 카드 cvv2 등과 같은 숫자 데이터를 요청할 때이를 숫자 유효성 검사 기능으로 전달합니다. –

+0

나는 본다. 그러나 이러한 검증 기능을 실행 한 후에 데이터를 어떻게 사용합니까? 내 주요 문제 중 하나는 루프 내부의 데이터를 처리/유효성 검사/준비 만하고 실제로 루프의 다른 곳에서 사용하고 싶다는 것입니다. – Aaron

0

잡아 당기기. html 형식과 데이터베이스에 'email'요소가 있다면 테이블과 일치하는지 확인하십시오. 즉, 'user_email'이라는 db 테이블이 없는지 확인하십시오.

단순히 유효성을 검사하고 확인하고 $ _POST 배열에 다시 추가하는 항목을 격리 시키거나 그에 따라 실패하거나 중단합니다.

$_POST['web'] = {do your cleansing here, add any missing http:// kinda thing} 

$ _POST 배열로 들어간 제출 버튼 크 러프 트를 제거하십시오.

unset($_POST['submitMe']); 

는 다음에 해당하는 작업을 수행합니다

$의 DB가 자동으로 실패없이 탈출하고 데이터베이스를 보호하기 위해 준비된 문을 사용하여 PDO 위에 누워 약간의 층
$db->saveNew($_POST); 

.

$ db 클래스는 원하는 경우 각 테이블에서 예상되는 변수의 종류를 결정하는 ini 파일을 선택할 수 있습니다.