Domanda

Sono abbastanza nuovo in PHP e sto creando un sito Web per la mia azienda. Sto usando del codice esistente che ho ottenuto ma non riesco a farlo funzionare correttamente: qualsiasi aiuto sarebbe molto apprezzato!

Ho una variabile, $ id , che identifica il tipo di categoria di prodotto da visualizzare nella pagina. Devo prima verificare che la variabile id sia stata impostata e, in caso contrario, impostare la variabile sulla categoria 0.

Il codice che ho è il seguente:

setdefault($id, 0);

function setdefault(&$var, $default="") 
{
   if (!isset($var)) 
   {
      $var = $default;
   }
}

Quindi, con l'indirizzo www.website.com/browse.php, mi aspetto che il valore predefinito sia $ id = 0; con l'indirizzo www.website.com/browse.php?id=3, mi aspetto che imposta $ id su 3 e visualizzi i prodotti pertinenti. Tuttavia, nonostante l'impostazione di $ id, per impostazione predefinita è ancora 0. C'è qualcosa di ovviamente errato nel mio codice?

È stato utile?

Soluzione

Probabilmente ti aspetti che PHP utilizzi $ _POST e $ _GET come variabili globali. In passato PHP era configurato in questo modo, ma nel passato, ma le versioni più recenti richiedono di fare esplicito riferimento a queste variabili.

Puoi provare questo:

setdefault(

Probabilmente ti aspetti che PHP utilizzi $ _POST e $ _GET come variabili globali. In passato PHP era configurato in questo modo, ma nel passato, ma le versioni più recenti richiedono di fare esplicito riferimento a queste variabili.

Puoi provare questo:

$id = array_key_exists('id', 

Probabilmente ti aspetti che PHP utilizzi $ _POST e $ _GET come variabili globali. In passato PHP era configurato in questo modo, ma nel passato, ma le versioni più recenti richiedono di fare esplicito riferimento a queste variabili.

Puoi provare questo:

setdefault(

Probabilmente ti aspetti che PHP utilizzi $ _POST e $ _GET come variabili globali. In passato PHP era configurato in questo modo, ma nel passato, ma le versioni più recenti richiedono di fare esplicito riferimento a queste variabili.

Puoi provare questo:

<*>

o ancora più semplicemente (usando l'operatore ternario):

<*>GET['id'], 0); function setdefault(&$var, $default="") { if (!isset($var)) { $var = $default; } }

o ancora più semplicemente (usando l'operatore ternario):

<*>GET) ?

Probabilmente ti aspetti che PHP utilizzi $ _POST e $ _GET come variabili globali. In passato PHP era configurato in questo modo, ma nel passato, ma le versioni più recenti richiedono di fare esplicito riferimento a queste variabili.

Puoi provare questo:

setdefault(

Probabilmente ti aspetti che PHP utilizzi $ _POST e $ _GET come variabili globali. In passato PHP era configurato in questo modo, ma nel passato, ma le versioni più recenti richiedono di fare esplicito riferimento a queste variabili.

Puoi provare questo:

<*>

o ancora più semplicemente (usando l'operatore ternario):

<*>GET['id'], 0); function setdefault(&$var, $default="") { if (!isset($var)) { $var = $default; } }

o ancora più semplicemente (usando l'operatore ternario):

<*>GET['id'] : 0;

o ancora più semplicemente (usando l'operatore ternario):

<*>GET['id'], 0); function setdefault(&$var, $default="") { if (!isset($var)) { $var = $default; } }

o ancora più semplicemente (usando l'operatore ternario):

<*>

Altri suggerimenti

Prima di tutto, se questo è PHP 5.X ti consiglio vivamente di non passare le variabili per riferimento usando & amp ;. Detto ciò. la chiamata alla funzione isset sarà sempre vera all'interno della funzione. Ma riceverai un avviso variabile non definito su setdefault ($ id, 0);

Prova invece.

$id = isset($id) ? $id : 0;

Se $ id non è impostato, la chiamata a setdefault ($ id, 0) genererà un avviso. Una funzione come setdefault non funziona in PHP. Usa questo invece.

if (!isset($id)) $id = 0;

Se lo stai facendo per variabili array, come $ _GET e $ _POST, puoi farlo:

function getuservar($A, $index, $default = '') {
    if (!isset($A[$index])) return $default;
    if (get_magic_quote_gpc()) return stripslashes($A[$index]);
    return $A[$index];
}

$clean_id = getuservar(

Se $ id non è impostato, la chiamata a setdefault ($ id, 0) genererà un avviso. Una funzione come setdefault non funziona in PHP. Usa questo invece.

if (!isset($id)) $id = 0;

Se lo stai facendo per variabili array, come $ _GET e $ _POST, puoi farlo:

<*>

Questo modulo di restituzione è migliore perché smetti immediatamente di usare l'array $ _GET e usi solo le variabili che vengono ripulite nel resto del codice. Pulisci le variabili esterne una volta e non tocchi mai più le variabili esterne nel tuo codice. $ A può essere $ _GET, $ _POST, $ _REQUEST o $ _COOKIE.

Gestisce anche le fastidiose cose di magic_quote per te, quindi sai che i dati nella variabile sono il testo inviato dall'utente. Ricordati di ripulirlo di nuovo quando lo rispedisci all'utente o al database.

GET, 'id', 0);

Questo modulo di restituzione è migliore perché smetti immediatamente di usare l'array $ _GET e usi solo le variabili che vengono ripulite nel resto del codice. Pulisci le variabili esterne una volta e non tocchi mai più le variabili esterne nel tuo codice. $ A può essere $ _GET, $ _POST, $ _REQUEST o $ _COOKIE.

Gestisce anche le fastidiose cose di magic_quote per te, quindi sai che i dati nella variabile sono il testo inviato dall'utente. Ricordati di ripulirlo di nuovo quando lo rispedisci all'utente o al database.

Come viene impostato $ id ? Se register_globals è disattivato (ed è disattivato per impostazione predefinita in PHP 4.2 e versioni successive), devi guardare $ _GET ['id'] o $ _POST [ 'id'] invece (o $ _REQUEST ['id'] , ma ci sono ragioni per evitarlo).

Dovrebbe essere incluso anche il codice per impostare $ id a volte dalla stringa di query ( browse.php? id = 3 ). Potresti pensare alle impostazioni register_globals di PHP che creeranno automaticamente variabili quando incluse nella stringa di query. NON riattivare quella funzione, ormai da diversi anni si è dimostrata una pessima idea.

Ogni variabile che stai estraendo dalla stringa di query deve essere verificata per tipo / sicurezza prima di usarla. Quindi, ad esempio, potresti estrarre la variabile dal supercategoria $ _GET , controlla se è numerica, se non è impostata quindi l'impostazione predefinita:

if (!is_numeric(

Dovrebbe essere incluso anche il codice per impostare $ id a volte dalla stringa di query ( browse.php? id = 3 ). Potresti pensare alle impostazioni register_globals di PHP che creeranno automaticamente variabili quando incluse nella stringa di query. NON riattivare quella funzione, ormai da diversi anni si è dimostrata una pessima idea.

Ogni variabile che stai estraendo dalla stringa di query deve essere verificata per tipo / sicurezza prima di usarla. Quindi, ad esempio, potresti estrarre la variabile dal supercategoria $ _GET , controlla se è numerica, se non è impostata quindi l'impostazione predefinita:

<*>GET['id']) { setdefault(

Dovrebbe essere incluso anche il codice per impostare $ id a volte dalla stringa di query ( browse.php? id = 3 ). Potresti pensare alle impostazioni register_globals di PHP che creeranno automaticamente variabili quando incluse nella stringa di query. NON riattivare quella funzione, ormai da diversi anni si è dimostrata una pessima idea.

Ogni variabile che stai estraendo dalla stringa di query deve essere verificata per tipo / sicurezza prima di usarla. Quindi, ad esempio, potresti estrarre la variabile dal supercategoria $ _GET , controlla se è numerica, se non è impostata quindi l'impostazione predefinita:

<*>GET['id'], 0); }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top