Qualcuno potrebbe dirmi perchè questo codice mi fa diventare page sempre 1 qualsiasi valore io metta?
Codice PHP:
if(empty($_GET['page']) || $_GET['page'] <= 0 || !is_nan($_GET['page'])) {
$page = 1;
} else {
$page = $_GET['page'];
}
Qualcuno potrebbe dirmi perchè questo codice mi fa diventare page sempre 1 qualsiasi valore io metta?
Codice PHP:
if(empty($_GET['page']) || $_GET['page'] <= 0 || !is_nan($_GET['page'])) {
$page = 1;
} else {
$page = $_GET['page'];
}
Semplicemente perché all'operatore logico OR ( || ) basta che un singolo controllo sia vero per rendere vero tutto l'if. Per esempio:Il problema principale è la funziona empty, se $_GET['page'] non è vuota l'if è reso vero e quindi il resto del controllo è inutile. Usa isset al suo posto.Codice PHP:
if(true || false || false) { echo 'vero'; }
Anche se nel tuo caso io avrei fatto:Codice PHP:
$page = isset($_GET['page']) && is_numeric($_GET['page']) && $_GET['page'] > 0 ? $_GET['page'] : 1;
Grazie! Funziona perfettamente!
p.s. devo imparare php più approfondito.... tu con una rifga fai tutto quello che io faccio con un if e un else :O
Nessuno ti vieta di usare if/else; però è più pratico usare l'operatore ternario per operazioni così semplici.