Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    Le Notice, sono trascurabili se nascoste?

    Salve a tutti,
    creo moltissimi script in PHP e da tempo non ho tenuto conto delle "Notice", nascondendole tramite una modifica all'error_reporting.

    Mi chiedo come sia possibile evitare la loro apparizione, visto che ciò accade solo se x esempio faccio un if(empty($_GET['dunar'])) ...
    Il 90% dei problemi di un pc si trova
    tra la tastiera e la sedia.

  2. #2
    Utente di HTML.it L'avatar di dalang
    Registrato dal
    May 2003
    Messaggi
    252
    creo moltissimi script in PHP e da tempo non ho tenuto conto delle "Notice", nascondendole tramite una modifica all'error_reporting.
    In linea di pricipio è sbagliato, i Notice non sono errori che impediscono il funzionamento dello script, ma sono comunque errori di programmazione!
    un codice pulito e funzionale non deve avere nessun tipo di segnalazione (ne notice ne warning) anche perche significherebbe che in alcune situazioni lo script potrebbe NON comportarsi come ci si aspetta...

    E poi la soluzione per eliminare i notice, di solito, è semplicissima...

    esempio:
    if( (isset($_GET['dunar']) and (empty($_GET['dunar'])))
    non dovrebbe più dare i notice...

    Riassumendo, avere dei notice significa che lo script è fatto o pensato male.


  3. #3
    Approvo e aggiungo.... un domani un NOTICE in altra versione di php potrebbe diventare un WARNING ed obbligarti a fare poi quello che avresti dovuto fare subito. Con perdita di tempo ed arrotolamento di marroni...


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

  4. #4
    allora, visto che i miei "Notice" sono dati solo a causa di una o più variabili non settate, cosa dovrei fare di buona norma per sapere se per esempio un campo $_GET non sia stato compilato anche se esiste? Basta aggiungere isset?
    Il 90% dei problemi di un pc si trova
    tra la tastiera e la sedia.

  5. #5
    Utente di HTML.it L'avatar di dalang
    Registrato dal
    May 2003
    Messaggi
    252
    Si, basta che controlli con isset.

    Il notice è dovuto al fatto che una variabile non settata non ha un valore di default... quindi usata in una "if" non puoi prevedere come si comporta. mettendo "isset" risolvi tutti i problemi.

  6. #6
    Originariamente inviato da hacker_nait
    allora, visto che i miei "Notice" sono dati solo a causa di una o più variabili non settate, cosa dovrei fare di buona norma per sapere se per esempio un campo $_GET non sia stato compilato anche se esiste? Basta aggiungere isset?
    Un classico potrebbe essere:

    isset($_GET['pippo']) ? $pippo = $_GET['pippo'] : $pippo = '';

    in questo modo anche mancando "pippo" riesci ad avere una variabile, peraltro vuota oppure con un tuo default, che ti evita il notice.



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

  7. #7
    piero, potresti riscrivermi quell'if in modo standard e non abbreviato?
    Il 90% dei problemi di un pc si trova
    tra la tastiera e la sedia.

  8. #8
    inoltre, se isset() mi da TRUE, vuol dire che è stata settata ma può avere anche valore vuoto?
    Il 90% dei problemi di un pc si trova
    tra la tastiera e la sedia.

  9. #9
    Utente di HTML.it L'avatar di dalang
    Registrato dal
    May 2003
    Messaggi
    252
    codice:
    if isset($_GET['pippo']) {
        $pippo = $_GET['pippo']
    } else {
        $pippo = "";
    }
    una variabile può essere settata ma essere vuota.
    empty ritorna TRUE se la variabile è "" (vuota) oppure se è 0 (zero)

  10. #10
    Originariamente inviato da hacker_nait
    inoltre, se isset() mi da TRUE, vuol dire che è stata settata ma può avere anche valore vuoto?
    Certamente.... anche perche' se tu dovessi ciclare all'interno della stessa pagina la variabile potrebbe essere ancora presente (settata) ma vuota. Tipicamente il "submit" potrebbe esserci ma vuoto: in quel caso:

    if(isset($_POST['submit']) AND $_POST['submit'] == 'invia' )

    potrebbe gia' garantirti che si arriva alla pagina avendo cliccato il submit e non da un indirizzo digitato su URL. Nello stesso tempo ti toglie un NOTICE. Ma sono molte le cose possibili ovviamente. Di certo e' estremamente valido quanto detto da dalang.


    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.