• User Attivo

    definizione di varibili in hash

    Un saluto a tutti coloro che mi leggono.
    Sono un nuovo utente che si è affacciato allo sviluppo web con strumenti Open Source da poco tempo e superati tutti i problemi iniziali (installazioni, configurazioni, etc...) mi si è appena aperta una nuova falla.

    In pratica non riesco a capire perchè non posso definire come variabili le informazioni contenute in un hush. Io credo che probabilmente ho qualche modulo disattivato ma non so quale (ammesso sia questo l'errore).
    Non credo di sbagliare la stesura dello script anche perchè alcuni provati li ho presi da testi di informatica professionale.

    Spero che riuscirò a capirne di più intanto vi saluto ....


  • Super User

    che intendi? per hashare con md5 è semplice...

    $var= md5("hash");


  • User Attivo

    In pratica se definisco un array nel modo seguente tutto ok

    $var=array('mio_nome','mio_cognome','mio_numero');

    oppure così:

    $var[0]='mio_nome';
    $var[1]='mio_cognome';
    $var[2]='mio_numero';

    Fin qui non credo ci siano grossi problemi; ma nel caso il mio_nome, mio_cognome e mio_numero provengano da un form (html o php) le cose si complicano.
    Non riesco a visualizzare a video i parametri immessi nel form, a meno che non uso una espressione foreach().

    Di seguito ho inserito le due pagine che mi danno il grattacapo:

    <html>
    <body> # chiamo il file form.html
    <form METHOD=GET action="read_info.php"> # provato diversi method
    nome <input type="text" name="nome">

    scegli un giorno della settimana
    <select name="giorno_settimana[]">
    <option>lun
    <option>mart
    <option>merc
    <option>giov
    <option>ven
    <option>sab
    <option>dom
    </select>

    pagamento

    assegno<input type="radio" name="pagamento" value="assegno">
    carta di credito<input type="radio" name="pagamento" value="carta">
    contanti<input type="radio" name="pagamento" value="contanti" checked>

    <input type="submit" value="invio le informazioni">
    <input type="reset" value="cancella">
    </form>
    </body>
    </html>

    invio del form a read.php

    <html>
    <body>
    <?php
    echo"grazie $nome
    ";
    echo"
    giorno scelto: ";
    if (sizeof($giorno_settimana) >= "1")
    { foreach($giorno_settimana as $valore)
    { echo"
    $valore"; }
    }
    else { echo"Non hai selezionato alcun giorno
    "; }

    echo"
    pagamento con $pagamento
    ";
    ?>


    qui sotto estrapolate le informazioni con foreach

    <?php
    $a=$_REQUEST;

    foreach($a as $d => $m)
    {
    echo"$d: $m
    ";
    }
    ?>
    </body>
    </html>

    Queste due pagine non servono a gran che. In pratica quando schiaccio il pulsante invio le informazioni mi si apre la finesta come se stessi facendo un download (questo vale solo se uso internet explorer; se uso Mozilla riesco a vedere qualche cosa anche se il risultato non è soddisfacente).
    Sulla mia macchina ho istallato php 5. Mi chiedevo se il form funzionerebbe con php 4. Mi sembra un tantino bizzarro retrocedere anche per una semplice prova; non trovate?

    Un saluto a tutti.


  • Super User
    1. non usare request, è facile contraffare le variabili.
    2. usa l'array $_POST se invii con il metodo POST, $_GET se usi GET
      3)non usare foreach, cosa ti serve prendere???

    nome <input type="text" name="nome">
    lo prendi con

    $_POST['nome'] dove nome è il nome del campo del form mandato con POST


  • User Attivo

    Avevo visto il topic "Problemi con i form", in realtà avevo provato questo tipo di espressione

    $_POST['nome'] usando method="POST"

    mi dava l'errore e non ho più insistito; poi visto che mi hai dato le indicazioni giuste su quello che devo usare e non devo usare ho riprovato.
    L'errore era negli apici, in pratica:

    $_POST['nome'] mi da l'errore perchè ci sono gli apici;

    $_POST[nome] è giusto.

    Adesso ho risolto un grosso problema e te ne sono grato. Spero solo che funzioni anche sul server esterno.

    Per me può anche considerarsi chiuso il topic. Grazie.


  • Super User

    mmm... strano, in quanto gli apici ci dovrebbero essere... che versione di PHP hai?
    prova con $HTTP_POST_VARS anzichè $_POST


  • User Attivo

    La versione installata di php è la 5.0.2 proverò come mi hai detto tu vedo che succede.


  • User Attivo

    funziona pater

    $HTTP_POST_VARS[nome_campo]

    e funziona pure il method GET

    $HTTP_GET_VARS[nome_campo]

    tutto perfetto..s


  • Super User

    Avrai impostato male il php.ini ( o php.conf )


  • User Attivo

    rispondendo alla domanda iniziale non puoi usare le varibili direttamente ( $variabile ) per una impostazione di sicurezza (penso il safemode)..


  • User Attivo

    Ehi, ma io al safemode ancora ci devo arrivare.
    Che cos'è?


  • Super User

    impostazioni di sicurezza... ma è una cretinata, ti disattiva alcune cose e basta...


  • User Attivo

    Pensando alla sicurezza però

    io non escluderei l'uso foreach()

    $a=$_POST;
    foreach($a as $campo => $variabile)
    {
    echo "$campo: $variabile
    ";
    }

    In pratica le due variabili cambiano sempre, pur restando definite una sola volta. Con questo modo è possibile anche inserire i valori immessi nel form all'interno di una tabella.


  • User Attivo

    @PaTeR said:

    impostazioni di sicurezza... ma è una cretinata, ti disattiva alcune cose e basta...

    :mmm:

    non capisco....

    cmq, la sicurezza è relativa al fatto di obbligare il programmatore a usare _GET/_POST o HTTP_GET_VARS/HTTP_POST_VARS o _SESSION

    senza questa impostazione sarebbe sufficiente andare a mettere nell'url un parametro con il nome di una variabile usata nella pagina (magari una variabile di sessione che si potrebbe sempre utilizzare senza _SESSION) per modificarne il valore...


  • Super User

    Si, ma non è il safemode che fa questo, c'è un'altra direttiva che ora mi sfugge... comunque sconsiglio in ogni caso il _REQUEST


  • Super User

    Si, ma non è il safemode che fa questo... cioè lo fa, come insieme di altre direttive che verranno disattivate, c'è un'altra direttiva che ora mi sfugge... comunque sconsiglio in ogni caso il _REQUEST


  • User Attivo

    @PaTeR said:

    Si, ma non è il safemode che fa questo, c'è un'altra direttiva che ora mi sfugge... comunque sconsiglio in ogni caso il _REQUEST

    si... non ricordo neanchio forse il register_globals.... bho...


  • Super User

    si, se non mi sbaglio si 😄