• User Newbie

    [EasyPHP 2.0b1] passaggio di variabili da form

    Ciao a tutti,

    ho installato EasyPHP 2.0b1 per testare i miei siti in locale, scrivendo il codice con Dreamweaver CS3.
    Nelle impostazioni di Dreamweaver ho settato il "Testing Server" (Site>Manage Site) su PHP MySQL; "Access: Local Network" e per "Testing Server Folder" la cartella del mio sito, nella quale ho copiato il file php.ini, seguendo le istruzioni trovate sul volume "PHP - dall'HTML allo sviluppo dei siti dinamici", pag 125.

    Sto effettuando delle prove di passaggio variabili da form (sono un PHP-principiante!), ma qualcosa non funziona. Il messaggio di errore è il seguente:

    Notice: Undefined variable: username in C:*****\Prove_PHP\UD8\01-var_form.php on line 10

    Notice: Undefined variable: mail in C:*****\Prove_PHP\UD8\01-var_form.php on line 12

    Notice: Undefined variable: HTTP_POST_VARS in C:\Programmi\EasyPHP 2.0b1\www\Prove_PHP\UD8\01-var_form.php on line 15

    Notice: Undefined variable: HTTP_POST_VARS in C:*****\Prove_PHP\UD8\01-var_form.php on line 16

    Ecco il codice del file con il form:

    <body>
    <form action="01-var_form.php" method="post">
    <table border="2">
    <tr><td>Nome Utente</td><td><input type="text" name="username" /></td></tr>
    <tr><td>Email</td><td><input type="text" name="email" /></td></tr>
    </table>
    <input type="submit" name="submit" value="invio dei dati"/>
    </form>
    </body>
    </html>

    ed ecco quello per l'action:

    <body>
    <?php
    echo $username;
    echo "<br>";
    echo $mail;
    echo "<br>";
    echo "<br><b>";
    print $HTTP_POST_VARS['username'];
    print $HTTP_POST_VARS['email'];
    ?>
    </body>
    </html>

    Ho testao anche in remoto con risultati migliori: l'output è prodotto solo dalla scrittura con le variabili di ambiente, mentre vengono del tutto ignorate le varibili passate con lo Short Style. Ho cercato su google :mmm: una soluzione a questo ultimo problema e ho trovato che riguarda il fatto che il mio codice pretende register_globals = on mentre l'hosting prevede register_globals = off. Ho anche trovato che per motivi di sicurezza è sconsigliabile modificare queste impostazioni nel file php.ini. Che fare in questo caso? Settare il file php.ini in off? E se poi devo settare anche quello sul server? Oppure scrivo il codice con le variabili globali?

    In fine, in definitiva, con EasyPHP mi trovo abbastanza bene, anche se non riesco a capire :bho: se questi errori ci sono perchè bisogna settarlo a seconda delle proprie esigenze, oppure se è preferibile orientarsi verso altri software più adatti a un principiante come me....

    Grazie a tutti, spero di essere stato abbastanza chiaro e conciso.:smile5:


  • Consiglio Direttivo

    Ciao idioteque82

    Non hai definito ancora le variabili, per questo ti da errore, per prima cosa nell'action devi assegnare alle variabili il valore POST*ato *(:D)
    [PHP]$username=$_POST['username'];
    $mail=$_POST['email'];[/PHP]

    poi ti fai i vari echo 😉


  • Bannato User Attivo

    @idioteque82 said:

    il mio codice pretende register_globals = on mentre l'hosting prevede register_globals = off. Ho anche trovato che per motivi di sicurezza è sconsigliabile modificare queste impostazioni nel file php.ini. Che fare in questo caso? Settare il file php.ini in off? E se poi devo settare anche quello sul server? Oppure scrivo il codice con le variabili globali?

    qui ti conviene non usare mai le variabili globali nei tuoi lavori perchè dalle ultime versioni register_globals è in off per motivi di sicurezza e il gestore del server mai te le metterà in on se non è uno sprovveduto...

    per quanto riguarda il problema prova a inserire il codice che ti ha postato samyorn


  • User Newbie

    ecco come ho risolto:

    <body>
    <?php
    $username=$_POST['username']; //metodo 1:assegno alla variabile il valore POSTato
    $mail=$_POST['email'];
    echo $username;
    echo "<br>";
    echo $mail;
    echo "<br>";
    echo "<br><b>";
    echo $_POST['username']; /*
    metodo 2: stampo la variabile direttamente con $_POST e non con $HTTP_POST_VARS
    */
    echo $_POST['email'];
    ?>
    </body>
    </html>

    cosi mi funziona in locale e in remoto!
    coooooooool!

    grazie!!! :sun: