• User Attivo

    funzione hash() non funziona

    Ciao a tutti.
    Oggi imparando la funzione hash() volevo fare un piccolo script:

    [php]<form method="POST" action="3.php">
    Testo da criptare: <input type="testo" name="testo"> <br />
    Algoritmo: <SELECT NAME="algoritmo">
    <OPTION VALUE="md4" NAME="md4">md4</OPTION>
    <OPTION VALUE="md5" NAME="md5">md5</OPTION>
    <OPTION VALUE="sha1" NAME="sha1">sha1</OPTION>
    <OPTION VALUE="sha256" NAME="sha256">sha256</OPTION>
    <OPTION VALUE="sha384" NAME="sha384">sha384</OPTION>
    <OPTION VALUE="sha512" NAME="sha512">sha512</OPTION>
    <OPTION VALUE="ripemd128" NAME="ripemd128">ripemd128</OPTION>
    <OPTION VALUE="ripemd160" NAME="ripemd160">ripemd160</OPTION>
    <OPTION VALUE="whirlpool" NAME="whirlpool">whirlpool</OPTION>
    <OPTION VALUE="snefru" NAME="snefru">snefru</OPTION>
    <OPTION VALUE="gost" NAME="gost">gost</OPTION>
    <OPTION VALUE="adler32" NAME="adler32">adler32</OPTION>
    <OPTION VALUE="crc32" NAME="crc32">crc32</OPTION>
    <OPTION VALUE="crc32b" NAME="crc32b">crc32b</OPTION>
    </SELECT>
    <input type="submit" value="cripta">
    </form>

    <?php
    $testo = $_POST['testo'];
    $algoritmo = $_POST['algoritmo'];
    $criptato = hash($algoritmo, $testo);

    echo $criptato; 
    

    ?>[/php] Pero non mi da nessun output...
    Qualcuno sa cos'ho sbagliato? :mmm:


  • User Attivo

    Ciao jkkl,

    scusa la domanda forse troppo banale ma, le due parti di codice che hai postato stanno in due file diversi vero? In particolare quella in php, sta nel file "3.php" che viene chiamato dal form, giusto?

    Altro domandina: versione di php che utilizzi? Perchè la funzione hash è prevista solo dal php versione >= 5.1.2

    :ciauz:


  • User Attivo

    Sono in un file unico...
    Utilizzo altervista....quindi non so che versione di php utilizza...


  • User Attivo

    Prova così:

    [PHP]
    <form method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>">
    Testo da criptare: <input type="testo" name="testo"> <br />
    Algoritmo: <SELECT NAME="algoritmo">
    <OPTION VALUE="md4" NAME="md4">md4</OPTION>
    <OPTION VALUE="md5" NAME="md5">md5</OPTION>
    <OPTION VALUE="sha1" NAME="sha1">sha1</OPTION>
    <OPTION VALUE="sha256" NAME="sha256">sha256</OPTION>
    <OPTION VALUE="sha384" NAME="sha384">sha384</OPTION>
    <OPTION VALUE="sha512" NAME="sha512">sha512</OPTION>
    <OPTION VALUE="ripemd128" NAME="ripemd128">ripemd128</OPTION>
    <OPTION VALUE="ripemd160" NAME="ripemd160">ripemd160</OPTION>
    <OPTION VALUE="whirlpool" NAME="whirlpool">whirlpool</OPTION>
    <OPTION VALUE="snefru" NAME="snefru">snefru</OPTION>
    <OPTION VALUE="gost" NAME="gost">gost</OPTION>
    <OPTION VALUE="adler32" NAME="adler32">adler32</OPTION>
    <OPTION VALUE="crc32" NAME="crc32">crc32</OPTION>
    <OPTION VALUE="crc32b" NAME="crc32b">crc32b</OPTION>
    </SELECT>
    <input type="submit" value="cripta" name ="send">
    </form>

    <?php
    if(isset($_POST['send'])){
    $testo = $_POST['testo'];
    $algoritmo = $_POST['algoritmo'];
    $criptato = hash($algoritmo, $testo);

    echo $criptato; 
    

    }else{
    }

    ?>[/PHP]


  • User Attivo

    @jkkl said:

    sono in un file unico...
    utilizzo altervista....quindi non so che versione di php utilizza...

    Puoi usare:

    [php] <?php
    // prints e.g. 'Current PHP version: 4.1.1'
    echo 'Current PHP version: ' . phpversion();

    // prints e.g. '2.0' or nothing if the extension isn't enabled
    echo phpversion('tidy');
    ?>[/php]


  • User Attivo

    [....]

    Current PHP version: 5.2.6


  • Consiglio Direttivo

    Ciao jkkl 😉

    Prova a togliere i vari name dalle option, essendo una select deve comandare il name del <select> 😉


  • User Attivo

    Non funziona.
    Ed è logico che non funziona senza i name.


  • Consiglio Direttivo

    Beh, veramente l'attributo name deve stare nella select e non nelle option, se usi un editor ti segnala anche l'errore.
    😉

    Se anche togliendo i vari name dalle option (e solo dalle option) non ti funziona fai una prova mettendo degli echo ai valori $_POST, vediamo se il problema sta nell'invio :ciauz:


  • User Attivo

    Ragazzi, io ho provato modificando il codice in queesto modo:
    [php]
    <?php
    $array = hash_algos();
    ?>
    <?php
    if(isset($_GET['send'])){
    $testo = $_GET['testo'];
    $h = $_GET['algoritmo'];
    $criptato = hash($array, $testo);

    }else{
    }
    ?>
    <form method="GET" action="<?php echo $_SERVER['PHP_SELF']; ?>">
    Testo da criptare: <input type="testo" name="testo" value = "<?php echo $testo; ?>"> <br />
    Algoritmo: <SELECT NAME="algoritmo">
    <?php

    for($i = 0; $i < count($array); $i++){
    echo "<OPTION VALUE="$i" NAME="$array*">$array*</OPTION>";
    }
    echo "</select>";

    ?>
    <input type="submit" value="cripta" name ="send">
    </form>
    <?php
    echo $criptato;
    ?>
    [/php]

    e mi funziona ottimamente...
    Crea una lista di circa 40 forme di cryptaggio...