Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Undefined variable

  1. #1

    Undefined variable

    se mi trova una variabile non definita con e_all mi riporta l'errore.

    Ma a me va bene anche se è vuota...dovrei mettere allinizio delle pagine:

    $var1='';
    $var2='';
    $var3='';

    definendo così tutte le variabili che potrebbero essere causa di errore?

    Grazie.
    GdR Online - http://lenar.it/
    Yesterday is history. Tomorrow is mystery.
    Today is a gift. That's why it's called the present

  2. #2
    Sì, devi definire una variabile prima di usarla.
    Se sai che la variabile verrà usata senza avere un valore allora è sufficiente inizializzarla ad un valore di default prima.

  3. #3
    perfetto, grazie.
    GdR Online - http://lenar.it/
    Yesterday is history. Tomorrow is mystery.
    Today is a gift. That's why it's called the present

  4. #4
    Originariamente inviato da weppos
    Sì, devi definire una variabile prima di usarla.
    Se sai che la variabile verrà usata senza avere un valore allora è sufficiente inizializzarla ad un valore di default prima.
    Fatto cosi' rischi di sovrascrivere una variabile in arrivo valorizzata....

    bisognerebbe usare isset() oppure empty()..
    codice:
    if(!isset($var) ) { $var = '';  }

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Fatto cosi' rischi di sovrascrivere una variabile in arrivo valorizzata....
    In parte hai ragione, in parte dipende da come uno è abituato a lavorare.
    Con C 89 ad esempio devi dichiarare sempre e comunque un valore o le var sono indefinite.

    Dipende molto da come uno è abituato a lavorare.
    Se gestisci correttamente lo scope delle variabili difficilmente rientri nella casistica di incontrare problemi.

    Ovviamente la tua soluzione è estremamente valida, la mia è solo una considerazione aggiuntiva.

  6. #6
    Originariamente inviato da weppos
    In parte hai ragione, in parte dipende da come uno è abituato a lavorare.
    Con C 89 ad esempio devi dichiarare sempre e comunque un valore o le var sono indefinite.
    La mia e' una considerazione per php. Poiche' alcune variabili tipo _GET _POST provengono dall'esterno dello script, il problema non e' dato tanto dalla variabile che "nasce" all'interno della pagina (e' dato pure da queste ovvio) ma da variabili attese dall'esterno che non sono state valorizzate, per qualunque motivo. Questa e' la ragione prima dell'uso di ISSET()

    Hei VAR ... ci sei? bene allora sei "quel che sei", altrimenti VAR sei pippo.

    Il caso di uno script che usa una variabile interna allo script, senza averla settata/dichiarata in precedenza sarebbe da ricovero informatico.

    Nel caso di Vre aggiungerei pero' che forse lui si aspetta la variabile dall'esterno e questa non c'e' perche' ha register_globals in OFF e quindi la dovrebbe cercare (sempre con lo stesso modo) in $_POST['var'] oppure GET.

    Ma sarebbe stato precorrere la domanda.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #7
    register_globals => ON

    cmq quale sarebbe la differenza tra utilizzare !isset o empty?
    GdR Online - http://lenar.it/
    Yesterday is history. Tomorrow is mystery.
    Today is a gift. That's why it's called the present

  8. #8
    Originariamente inviato da Vre
    register_globals => ON

    cmq quale sarebbe la differenza tra utilizzare !isset o empty?
    isset() verifica che la variabile o l'indice di un array esista. Anche se vuoto.

    empty() non verifica se esiste, ma rende TRUE se la variabile e' vuota oppure non la trova. Il problema e' che rende TRUE (cioe' vuota) anche se ci fosse un valore zero. prova questo esempio:
    codice:
    $_POST['pippo'] = 0;
    
    if(isset($_POST['pippo']) )  echo "valore di pippo $_POST[pippo]
    ";
    else echo "pippo non esiste
    " ;
    
    if(!empty($_POST['pippo']) ) echo "valore di pippo $_POST[pippo]
    ";
    else echo "pippo non esiste
    " ;
    Quindi non e' proprio la stessa cosa come taluni affermano, ma va ponderato l'utilizzo in base alla necessita'.

    Per esempio:

    if(isset($_POST) oppure $_GET serve a nulla perche' POST e GET ci sono sempre. ma non c'e sempre $_POST['pippo']


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.