Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16

Discussione: Invia

  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    27

    Invia

    Sto provando a fare degli script in php per impararne l'uso. In un file d'esempio, trovato su una rivista, dovevo mettere questo comando
    <? if (!$invia) ...
    Il ciclo IF all'inizio del file verifica la mancanza della variabile $invia e se manca prosegue con lo script di un form.
    Bene. Quando lo faccio eseguire, sul browser in locale, mi viene visualizzato un errore, che segnala la mancanza della variabile $invia.
    Mi viene comunque visualizzato il form, e il resto funziona.
    Perchè mi viene segnalato come errore il comando IF ?
    In un altro esempio di script c'era anche questo comando:
    if (!$link)...
    Anche qui sulla variabile link il browser mi da lo stesso errore.
    Notice: undefined variable : link
    Sembra che non accetti come corretto il comando di verifica.
    Perchè ? E come va eseguito il comando ?
    Grazie

  2. #2
    immagino che $invia sia un campo del form che dovresti ricevere, dunque per verificare se c'è o meno devi usare $_POST['invia'] (oppure $_GET['invia'] se il form lo invii in GET)

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    27
    Ti mando in visione lo script in questione, così forse è più chiaro. Essendo un esempio di una rivista è molto corto.

    <?
    if (!$invia) {
    ?>
    <form method=post action="">
    Nome: <input type="text" name="nome">

    Email: <input type="text" name="email">

    Colore preferito: <select name="colore">
    <option value="rosso">rosso
    <option value="blu">blu
    </select>

    Messaggio: <textarea name="messaggio"></textarea>

    <input type="submit" name="invia">
    </form>
    <?
    } // fine if (!$invia)
    else {
    echo "Valori inviati via POST METHOD<hr>";
    while (list ($chiave, $valore) = each ($HTTP_POST_VARS))
    {
    echo "$chiave => $valore
    ";
    }
    }
    ?>

    Lo scopo della rivista era quello di dimostrare che con un semplice comando (!$invia) era possibile visualizzare i dati inviati da qualsiasi form, in modo semplice e veloce. Il browser però mi visualizza che manca il dato della variabile (!$invia) in questione e poi compare il form da compilare. Se vuoi puoi provarlo anche tu ... che ne dici ? Grazie

  4. #4
    Utente di HTML.it L'avatar di mark2x
    Registrato dal
    Nov 2005
    Messaggi
    1,940
    Il tuo php.ini è settato per riferirti tutti gli errori ed affini che l'interprete PHP incontra, compresa la non inizializzazione delle variabili nei tuoi script (è un notice infatti non un errore vero e proprio).

    [.:: JaguarXF ::.]
    __________________

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    27
    mark2x potresti anche dirmi come fare ?
    Quali settaggi devo mettere in php.ini ?
    Grazie mille

  6. #6
    Utente di HTML.it L'avatar di mark2x
    Registrato dal
    Nov 2005
    Messaggi
    1,940
    In teoria così è meglio, perchè sempre in teoria devi inizializzare ogni variabile che poi utilizzi.

    Cmq, per sopprimere tali warning setta:

    error_reporting = E_ALL & ~E_NOTICE

    [.:: JaguarXF ::.]
    __________________

  7. #7
    No, affatto! Lascia abilitati i notice perchè ti risparmierai un sacco di problemi !Gli errori o anche i notice non vanno nascosti ma risolti!

    Per risolvere i tuoi notice devi usare l'array superglobale $_POST. Nel controllo, quibndi, devi mettere $_POST['invia'].

    Anche nell'each devi sostituire $HTTP_POST_VARS con $_POST.

    Ma questa rivista è abbastanza vecchiotta!
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

  8. #8
    Utente di HTML.it L'avatar di mark2x
    Registrato dal
    Nov 2005
    Messaggi
    1,940
    Dove mai sta scritto che $invia fosse una POST var?
    Inoltre, non confondere la direttiva register_globals (ormai sempre disabilitata) con l'error reporting.

    Inoltre, che i notice debbano essere abilitati è palese (ovviamente non dal cliente...)

    [.:: JaguarXF ::.]
    __________________

  9. #9
    [CODE]
    <?
    if (!$invia) {
    ?>
    <form method=post action="">
    Nome: <input type="text" name="nome">

    Email: <input type="text" name="email">

    Colore preferito: <select name="colore">
    <option value="rosso">rosso
    <option value="blu">blu
    </select>

    Messaggio: <textarea name="messaggio"></textarea>

    <input type="submit" name="invia">
    </form>
    <?
    } // fine if (!$invia)
    else {
    echo "Valori inviati via POST METHOD<hr>";
    while (list ($chiave, $valore) = each ($HTTP_POST_VARS))
    {
    echo "$chiave => $valore
    ";
    }
    }
    ?>

    2) Io non ho confuso proprio niente: ho visto che il list = each veniva effettuato su un array errato e gliel'ho detto.

    3)
    In teoria così è meglio, perchè sempre in teoria devi inizializzare ogni variabile che poi utilizzi.

    Cmq, per sopprimere tali warning setta:

    error_reporting = E_ALL & ~E_NOTICE
    A me questo fa capire che è meglio ma che cmq si può fare. Non è così. Anche se si può fare in fase di sviluppo vanno abilitati tutti gli errori. Magari dal cliente li disabiliti ma non è obbligatorio (anche se preferibile! Ecco si può non fare ma va fatto!). sarebbe cmq buona cosa avere un gestore di errori scritto appositamente.

    4) Non ti alterare così facilmente! cerca prima di capire uno che vuole dire e poi vedi se ti puoi alterare o meno.
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

  10. #10
    Utente di HTML.it L'avatar di mark2x
    Registrato dal
    Nov 2005
    Messaggi
    1,940
    Originariamente inviato da mircov
    4) Non ti alterare così facilmente! cerca prima di capire uno che vuole dire e poi vedi se ti puoi alterare o meno.
    Epperkè mai dovrei essere alterato??

    Originariamente inviato da mark2x
    Dove mai sta scritto che $invia fosse una POST var?
    Sì, è una post var... avevo letto solo il primo post, scusasse...

    A me questo fa capire che è meglio ma che cmq si può fare. Non è così. Anche se si può fare in fase di sviluppo vanno abilitati tutti gli errori. Magari dal cliente li disabiliti ma non è obbligatorio (anche se preferibile! Ecco si può non fare ma va fatto!). sarebbe cmq buona cosa avere un gestore di errori scritto appositamente.
    Si può fare sì, basta volerlo...
    Eppoi se register_globals è disabilitato, di pericoli non se ne corrono (certo è meno ordinato, ma si può fare eccome, senza controindicazioni).

    [.:: JaguarXF ::.]
    __________________

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.