2011-05-14 3 views
6

Este es el código ....¿Hay algunas manos cortas para hacer esta lógica?

if(!(isset($_POST["email"]) && isset($_POST["sessionKey"]) && isset($_POST["page"]) && isset($_POST["ipp"]))){ 
     return; 
}else{ 
    $email  = htmlspecialchars($_POST["email"]);   
    $sessionKey = htmlspecialchars($_POST["sessionKey"]);   
    $page  = htmlspecialchars($_POST["page"]);   
    $ipp   = htmlspecialchars($_POST["ipp"]);   
} 

bien, la idea es que debe asignar el parámetro con las mismas variables. Por ejemplo, si publico un parámetro "prueba", debo asignar esto a una variable ... prueba ... ... ¿Hay algún atajo para hacer algo como esto? Gracias.

Respuesta

2
$data=array_map('htmlspecialchars',$_POST); 
extract($data); 

tener cuidado con este extract puede anular las variables existentes con el mismo nombre pero se puede cambiar este comportamiento mediante el paso parámetro adicional para extraer función.

+0

¿Qué pasa si $ _POST contiene una matriz? :-) –

+2

@Denis: ese caso no está en la lista en cuestión. Si eso es así, actualizaré mi respuesta en consecuencia –

+0

$ _POST no contiene una matriz. (¿Cómo podría ser?) – awm

1

Aquí es otra posibilidad para la parte de extracción:

foreach (array('email','sessionKey','page','ipp') as $v) { 
    $$v = htmlspecialchars($_POST[$v]); 
} 
1

de ampliar la respuesta extract, se puede cortar a cabo únicamente las entradas $ _POST que usted necesita con:

$vars = array_intersect_key($_POST, 
    array_flip(array("email", "sessionKey", "page", "ipp"))); 

// and then this replaces the isset() check and the extraction 
if (count($vars) == 4) { 
    extract(array_map("htmlspecialchars", $vars)); 
} 
Cuestiones relacionadas