2014-02-07 3 views
0

가변 변수를 사용하여 줄이기 위해 유효한 코드인지 확인하고 싶었습니다.{변수 변수를 선언 할 때 사용할 수 있습니까?

원래 코드 :

$town = ($_POST['town']) ; 
$county = ($_POST['county']) ; 

// Update town user meta 
if (!empty($town)) 
    update_user_meta($user_id, 'town', $town); 

// Delete town user meta 
else 
    delete_user_meta($user_id, 'town'); 

//Update county user meta 
if (!empty($county)) 
    update_user_meta($user_id, 'county', $county); 

// Delete county user meta 
else 
    delete_user_meta($user_id, 'county'); 

단축 코드 : 단축 코드없이

$fields = array("town","county"); 
foreach ($fields as $field) { 
${$field} = $_POST[$field]; 
    if (!empty($field)) { update_user_meta($user_id, "$field", ${$field}); } else { delete_user_meta($user_id, "$field"); } 
} 

, 우리는 목표 이상의 변수를 수용 할 수 있습니다.

감사합니다.

EDIT 모든 부정적인 유권자

특별 감사를. 내 마지막 게시물 여기에 7 부정적인 투표를, 여기에 2 단지 지금까지. 컴온들, 내 마지막 기록을 깨뜨려.

더 심각한 점은 부정 투표에 관한 Stackoverflow의 엄격한 정책이 있어야하며 다른 사람들의 투표에 대한 조사가 있어야한다는 것입니다. 이러한 무작위적인 대량 부정 투표는 매우 사기성이있을 수 있습니다. 이미 배열이

+3

힌트를 할 수 있습니다 : * 배열을 사용 *] (http://oreilly.com/catalog/progphp/chapter/ ch05.html) - $ _POST가 배열 인 것처럼 컬렉션을 활용하십시오. – user2864740

+2

변수 설정을 신경 쓸 필요가 없습니다! 루프에서'$ _POST [$ field]'를 사용하십시오. –

답변

1

당신은 아마 같은 뭔가를 찾고있다 SQL 주입을 방지 있는지 확인해야합니다

foreach($_POST as $key => $value){ 
    if (!empty($value)) { update_user_meta($user_id, $key, $value); } 
    else { delete_user_meta($user_id, $key); } 
} 

또는 그 라인을 따라 무엇인가.

편집 :하지만 당신은 정말 필드의 목록을 정의해야하는 경우가

$fields = array("town","county"); 

foreach($fields as $field){ 
     if (!empty($_POST[$field])) { update_user_meta($user_id, $field, $_POST[$field]); } 
     else { delete_user_meta($user_id, $field); } 
} 
1

당신은 사용할 수 있습니다

foreach($_POST as $field => $value){ 
    if (!empty($value)) update_user_meta($user_id, $field, $value); 
} 

을하지만, 당신은 POST 데이터 유효성 검사를 실행하고

+2

이상적으로 update_user_meta를 제공하는 프레임 워크는 이미 SQL 삽입으로부터 안전하도록 설계되었습니다. – Andrejovich

관련 문제