Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2010
    residenza
    Caserta
    Messaggi
    44

    Login form in PHP con password: misteri del codice!

    Premessa:
    Non faccio questo di lavoro, è una passione... quindi perdonatemi bestialità. Sono un giovane medico e ho visto che c'è penuria di sistemi di gestione pazienti, per MAC. Così ho pensato di crearne uno semplice e multipiattaforma (PHP e MySQL) in maniera tale da poterlo regalare anche ad un altro amico che ne ha bisogno....

    Descrizione del problema:
    Molto semplice: quando vado a clickare su "Login" non succede nulla, mi restituisce una pagina bianca.

    I codici:
    Di seguito i vari codici che ho utilizzato. Il database è in locale, su MAMP (così si chiama). Sto sviluppando con Mac.

    File: config.php
    Codice PHP:
    <?php$db_host "localhost";$db_user "root";$db_password "password";$db_database "prova";
    $con2=mysqli_connect("$db_host","$db_user","$db_password","$db_database");?>
    File: index.php
    Codice PHP:
    <?php include('include/config.php'); 
    if (isset(
    $_SESSION["autorizzato"]) && ($_SESSION["autorizzato"]!=0)){/* se l'utente è già loggato viene reindirizzato per continuare la sua sessione */header("location: mainframe.php");}?>
    <!DOCTYPE html><html><head>     <title>Collegati per entrare in - <?php echo $sito_internet ?></title>
        <link href="css/admin.css" rel="stylesheet" type="text/css" /> </head><body>     <form id="logon" action="verifica.php" method="post">        <fieldset id="inputs">            <input id="login" name="login" type="text" placeholder="Username" autofocus required>            <input id="pass" name="pass" type="password" placeholder="Password" required>        </fieldset>        <fieldset id="actions">            <input type="submit" id="submit" value="Log-in">        </fieldset>    </form> </body></html>
    File: verifica.php
    Codice PHP:
    <?php//inizio la sessionesession_start();
    //includo i file necessari a collegarmi al db con relativo script di accessoinclude 'include/connessione_db.php';include 'include/config.php';  //mi collego mysql_select_db($db_database, $connessione); 
    /* controllo dati POST */
    if (isset($_POST["submit"]) && ($_POST["submit"]=="ENTRA")){    //variabili POST con anti sql Injection$username=trim(addslashes($_POST["login"]));$password=trim(addslashes($_POST["pass"]));
    //codifico la password con SHA1 così corrisponde a quella nel database$password_codificata=sha1($password); /* controllo i dati immessi dall'utente */$controllo=mysql_query("SELECT * FROM utenti WHERE USERNAME='$username' AND PASSWORD='$password_codificata'") or die (mysql_error());$quantiutenti=mysql_num_rows($controllo);
    echo $username;echo $password_codificata;
    /* se ho un riscontro positivo */if ($quantiutenti == 1){if ($row=mysql_fetch_array($controllo)){$id=$row["ID_USER"];
    /* salvo le variabili user e id nell'array $_SESSION di PHP */$_SESSION["USERNAME"]=$username;$_SESSION["ID_USER"]=$id;
    /* re-indirizzo su loggato.php */header("location: mainframe.php");}mysql_free_result($controllo);}/* altrimenti mostro un errore */else{header("location: index.php");}}
    ?>

    Qualcuno sa darmi lumi in merito? Grazie mille e scusatemi, per voi è una banalità ma io ho qualche difficoltà a capire come mai mi restituisce pagina bianca senza far nulla!

  2. #2
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    Ciao, giusto per info dove fai la connessione non serve mettere le variabili fra apici visto che sono variabili e il loro valore e' contenuto in esse così come definite.
    Nel controllo del submit vedo che cerchi $_POST['submit'] ma nell'html dell'input stesso non c'e' un tag con name="submit" (solo ID e TYPE). L'attributo name determina per correttezza il passaggio di questo dato. Il valore cercato di submit = entra dove sta?
    non si vede nell'html o magari manca una parte di codice d'esempio.
    Prova a mettere un
    codice:
    var_dump($_POST);
    dove ti aspetti di recuperare i dati e vedi cosa viene effettivamente passato.

  3. #3
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    manca il name="submit" nel submit nel form

  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Quote Originariamente inviata da doc83 Visualizza il messaggio
    Premessa:
    Non faccio questo di lavoro, è una passione... quindi perdonatemi bestialità. Sono un giovane medico e ho visto che c'è penuria di sistemi di gestione pazienti,
    Non mi sembra da una ricerca veloce per MAC (al costo di 17,99) nel vale veramente la pena?
    Per quanto concerne il problema non vedo session_start()che deve essere come prima riga della pagina altrimenti va in errore, sicuro d'attivarlo?
    Se i software che trovi in commercio non ti vanno bene, cerca un programmatore e affidati a lui, come quando un programmatore sta male si affida ad un medico.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2010
    residenza
    Caserta
    Messaggi
    44
    In primis ringrazio tutti per le risposte...

    Ho provato così:
    Codice PHP:
    <?php//inizio la sessione
    session_start();

    //includo i file necessari a collegarmi al db con relativo script di accesso
    include 'include/connessione_db.php';
    include 
    'include/config.php'

    /* controllo dati POST */
    $username $_POST['login'];
    $password $_POST['pass'];

    //codifico la password con SHA1 così corrisponde a quella nel database
    $password_codificata=sha1($password);

    //seleziono dal database quanto è stato inserito nella login form
    mysql_select_db("$db_database"$connessione) or die ("Errore di connessione al database!");

    $sql="SELECT * FROM utenti WHERE USERNAME='$username' AND PASSWORD='$password_codificata'" or die (mysql_error());
    $result mysqli_query($sql$connessione);

    echo 
    $username "<br>";
    echo 
    $password "<br>";
    echo 
    $password_codificata;
    echo 
    $sresult;
    var_dump($_POST);
    ?>
    Con gli "echo" come diagnostica.... e quello che mi ritorna è questo:

    admin
    password
    5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8
    ...come se non facesse la query sul database, non capisco come mai... perchè messaggi di errore non me ne restituisce!

    @m4rko80: avevo scopiazzato il codice, ora l'ho riscritto in maniera da rendermi meglio conto della cosa.... ho fatto come hai detto tu e questo è il risultato: array(2) { ["login"]=> string(5) "admin" ["pass"]=> string(8) "password" }

    @clasku: hai ragione, ora ho riscritto il codice... lo implementerò mano a mano con i vostri consigli

    @cavicchiandrea: grazie per la risposta, ma l'app che hai citato è solo per iphone/ipad. Ti spiego meglio, forse non sei addentro all'argomento. A parte la premessa che ho fatto (e cioè che serve anche ad un amico, cui voglio fare un regalo), molti apparecchi di diagnostica usano il protocollo DICOM: il prossimo passo sarebbe l'implementazione dell'esportazione DICOM sul server.... piano piano

    Codice PHP:
    <?php//inizio la sessione
    session_start();
    Non so come mai non si leggesse bene, era attivo eccome.... i software in commercio non vanno bene... anche perchè una volta sistemato questo, potrei benissimo avere il server allo studio attivo e collegarmici anche durante le domiciliari per rivedere note/terapie, immagini, ecc... non è cosa da poco, credo! Allo stato attuale, non esistono software che fanno questo. Se trovassi un programmatore deciso a collaborare con me facendo società al 50% e poi dividendo i profitti (ciascuno di noi mette il proprio know-how) mi starebbe bene... io lo faccio per passione, ma se devo rivolgermi ad un'altra persona non è detto che questa lo faccia per passione.... se poi fosse una cosa fatta gratis da entrambi, beh... non vedo problemi a farlo con una GPL!

    In più il mio amico ha un database di circa 2000 pazienti in Access, vorrei caricarglielo poi sul programma.... prendendo un programma di questi si dovrebbe fare a mano (non digeriscono l'Access!) e non mi sembra il caso.... :P

    P.s: tu per un raffreddore o una diarrea vai dal medico? non sto pretendendo di fare un CMS da solo, ma semplicemente una gestione di database... mi pare abbastanza semplice, anni fa quando programmavo di più lo sapevo fare decentemente, ora chiaramente sono superarruginito
    Ultima modifica di doc83; 04-09-2014 a 10:55

  6. #6
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    questo "echo $sresult;" non restituisce i risultati della query (oltre che la variabile ha il nome sbagliato).
    per avere i risultati devi aprire il recordset usando mysqli__fetch_array(), ad esempio.

    PS: abilita la visualizzazione degli errori quando sviluppi

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2010
    residenza
    Caserta
    Messaggi
    44
    Ciao Clasku, hai ragione...

    Inserendo questo codice:
    Codice PHP:
    $sql="SELECT * FROM utenti WHERE USERNAME='$username' AND PASSWORD='$password_codificata'" or die (mysql_error());
    $result mysql_query($sql$connessione);
    $fetched_result=mysql_fetch_array($result);

    echo 
    $username "<br>";
    echo 
    $password "<br>";
    echo 
    $password_codificata ."<br>";
    echo 
    $fetched_result "<br>";
    var_dump($_POST); 
    Mi restituisce questo:
    admin
    password
    5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8
    Array
    array(2) { ["login"]=> string(5) "admin" ["pass"]=> string(8) "password" }

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2010
    residenza
    Caserta
    Messaggi
    44
    Ho verificato che si connette al DB e che preleva i dati, visualizzando il fetch ottenuto dal select...

    Credo che l'intoppo stia qui, a questo punto:

    Codice PHP:
    $sql="SELECT * FROM utenti WHERE USERNAME='$username' AND PASSWORD='$password_codificata'" or die (mysql_error());
    $result mysql_query($sql$connessione);
    $fetched_result=mysql_fetch_array($result);

    /* se ho un riscontro positivo */
    if ($fetched_result == 1)
     {   
    if (
    $row=mysql_fetch_array($sql))
    {
     
    $id=$row["ID_USER"];
    $fetched_username=$row["USERNAME"];
    $fetched_password=$row["PASSWORD"];
     
    /* salvo le variabili user e id nell'array $_SESSION di PHP*/
    $_SESSION["USERNAME"]=$fetched_username;
    $_SESSION["ID_USER"]=$id;

    /* re-indirizzo su mainframe.php */ 
    header("location: mainframe.php");
    }
    mysql_free_result($sql);
    }

    /* altrimenti mostro un errore */ 
    else
    {
    header("location: imedic.php");
    }

    var_dump($_POST);
    ?> 
    ...secondo voi dove sta l'inghippo?
    Ultima modifica di doc83; 04-09-2014 a 12:58

  9. #9
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    Codice PHP:
    $sql="SELECT * FROM utenti WHERE USERNAME='$username' AND PASSWORD='$password_codificata'" or die (mysql_error());
    $result mysql_query($sql$connessione);
    $fetched_result=mysql_fetch_array($result);

    /* se ho un riscontro positivo */
    if ($fetched_result == 1)
     {
    // non serve questo if   
    //if ($row=mysql_fetch_array($sql))
    //{

    // qui puoi usare l'array fetched_result creato prima
    $id=$fetched_result["ID_USER"];
    $fetched_username=$fetched_result["USERNAME"];
    $fetched_password=$fetched_result["PASSWORD"];
     
    /* salvo le variabili user e id nell'array $_SESSION di PHP*/
    $_SESSION["USERNAME"]=$fetched_username;
    $_SESSION["ID_USER"]=$id;

    /* re-indirizzo su mainframe.php */ 
    header("location: mainframe.php");

    // questa è dell'if cancellato prima
    //}
    mysql_free_result($sql);
    }

    /* altrimenti mostro un errore */ 
    else
    {
    header("location: imedic.php");
    }

    var_dump($_POST);
    ?> 

  10. #10
    Utente di HTML.it
    Registrato dal
    Jun 2010
    residenza
    Caserta
    Messaggi
    44
    Ho provato e mi riporta sempre alla pagina di login... nel frattempo avevo fatto così:

    Codice PHP:
    $id_sessione_utente $fetched_result['ID_USER'];

    if (
    $id_sessione_utente == '0')

    {

    // reindirizzamento alla homepage in caso di insuccesso
    header("Location: mainframe.php");

    } else {

    header("Location: imedic.php");    } 
    In pratica gli ho detto: prendi il risultato della casella "ID_USER" se trovi la corrispondenza con username e password (ID_USER è la PRIMARY KEY progressiva, quindi sarà sempre diversa da 0 in caso di utente confermato)... e poi deve fare il redirect, ma non va.... mi porta sempre alla pagina di login...

    Però se faccio un
    Codice PHP:
    echo $id_sessione_utente
    mi dà 1 (ovvero il record ID_USER della primari key)... come mai?? Anche sostituendo con il tuo script, mi rimanda sempre alla pagina di login...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.