Visualizzazione risultati 1 fino 2 di 2

Discussione: Funzione php viene eseguita prima del dovuto

  1. #1
    Guest

    Predefinito Funzione php viene eseguita prima del dovuto

    Codice PHP:
    <?php
    function domandacheck()
    {
    $nick=$_SESSION['nick'];
    $risp=md5(md5($_POST['risposta']));

    $query="SELECT * FROM Cliente WHERE Risposta='$risp' AND Nickname='$nick'";
    if(
    mysql_num_rows(mysql_query($query))==0){
    echo
    "<script language=\"JavaScript\">\n";
    echo
    "alert(\"la risposta che hai inserito non e' esatta\");\n";
    echo
    "</script>";
    }
    else
    header("Location:/modifica_password.php");
    mysql_close($Connessione);
    }

    session_start();
    include(
    "db_conn.php");
    if(isset(
    $_POST['domanda']))

    domandacheck();
    ?>

    <html>
    <head>
    [...]
    <form name="Log" method="POST">
    <h1>PASSWORD DIMENTICATA</h1>
    <font size=3><?php
    session_start
    ();
    $nick=$_SESSION['nick'];
    $sqlquery="SELECT Domanda FROM Cliente WHERE Nickname='$nick'";
    $result = mysql_query($sqlquery);
    $riga=mysql_fetch_array($result);
    if (
    $riga !== false){
    $domanda = $riga['Domanda'];
    echo
    $domanda;
    }
    else {
    echo
    "Non ci sono righe nel record set".mysql_error();
    }
    ?>
    </font>
    <br>
    <br>
    Risposta
    <input type="text" name="risposta" style="border-radius: 4px; height: 34px;width: 100%">
    <br>
    <br>
    <input type="submit" value="Procedi" class="btn btn-danger" style="width: 150px; height: 35px" name="domanda">
    <br>
    <br>
    </form>
    </section>
    </div>
    </body>
    </html>

    La funzione dovrebbe essere eseguita solo quando l'utente clicca su Procedi e invece viene eseguita appena la pagina si carica e mi mostra (ovviamente) il messaggio d'errore, non riesco per a capire dove sto sbagliando, riuscite ad aiutarmi?

  2. #2
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Cure di più l'indentazione.

    A quale funzione e messaggio d'errore ti riferisci? L'unica funzione presente, domandacheck() viene correttamente chiamata solo a condizione che $_POST['domanda'] sia impostata.

    Occhio anche ad altri "errori": nella funzione domandacheck()stai chiudendo la connessione alla base di dati ma, successivamente, effettui un'interrogazione per recuperare la domanda (questo di verifica solo quando l'utente clicca su "Procedi" dando una risposta sbagliata, ma è comunque una possibilità da considerare).
    Inoltre, non stai controllando i valori restituita da mysql_query: qualora restituissero false, l'errore andrebbe gestito.
    Infine, le funzioni mysql_* sono deprecate, presto o tardi sarà necessario passare a mysqli i PDO.

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •