2014-11-21 13 views
6

Ben bir GET parametresi için bir değişken ayarlamak için temiz, şık bir yol olsun isterim ayarlanmamış varsayılan değere ayarlanır ve 0 (veya ayarlanmamışsa diğer bazı varsayılan).php - filter_input - GET anahtar sözü parametre set (ve sayısal) ise

if (($get_id = filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT))) { 
    $opened_staff['id'] = $get_id; 
    // some database queries etc. 
} else { $opened_staff['id'] = 0; } 

Ben değeri sayısal boş olup olmadığını 0 döndüren bir geri çağırma işlevi kullanarak çalıştı, ancak GET parametresi 'id' ayarlı değilse, geri arama kazandı:

Şu anda var Hatta çağrılabilir - sadece sıfır için $get_id ayarlar.

değil başka deyimi içerecek şekilde büyük bir anlaşma

, sadece ben filter_input bazı işlevselliği üzerinde eksik düşündüm.

+0

(? Basitçe if-açıklamada '$ valid' döndürmez Neden zaten bu durumda geçerli bir değer çıkarılan beri bana biraz daha net bir açıklama –

cevap

14

filter_input işlevi options parametre kabul eder. Her filtre farklı seçenekleri kabul eder. Örneğin, FILTER_VALIDATE_INT filtre default, min_range ve max_range seçenekleri as described here kabul edebilir.

$get_id = filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT, array("options" => array(
    "default" => 0, 
    "min_range" => 0 
))); 
var_dump($get_id); 

// $get_id = 0 when id is not present in query string, not an integer or negative 
// $get_id = <that integer> otherwise 
+1

bingo. Kaybettiğim şey bu. seçenekler dizisinde varsayılan anahtar. Teşekkürler! – tangopianist

3
Sen _POST gelen okumuyor

$options = array('options' => array('default'=> 0)); 
$valid = filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT, $options); 

filter_input() aşağıda verilen varsayılan değer, örnek atamak alacak değeri ayarlı değilse, bunu başarmak için varsayılan seçeneğini kullanabilirsiniz

/_GET/_COOKIE/_SERVER/_ENV

Bunu başarmak için bazı sınıfları kullanabilirsiniz.

burada
class RequestFilter{ 
public static function get_filter_int($id){ 

    $options = array('options' => array('default'=> 0)); 
    $valid = filter_input(INPUT_GET, $id, FILTER_VALIDATE_INT, $options); 

    if($valid){ 
    return $_GET[$id]; // Value will return 
    } 

    return $valid; // Default will return 
} 
} 

$opened_staff['id'] = RequestFilter::get_filter_int('id'); 

değeri veya varsayılan dönecektir, işte burada sıfırdır -: [NOT bu sadece bir örnektir dir].

+2

ver yoksa ben eksik bir neden yoktur PHP için nispeten yeni) – Levon

+0

Eğer geçerliyse, "true" ise, eğer $ =GET [$ id] 'i döndürdüyseniz, $ = $ ile aynıdır. geçerli. Diğer durumda, '$ valid' değerini döndürürsünüz. Yani her zaman "$ valid" ile aynıdır. – PhoneixS