Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    problema Session / Database

    Buongiorno. Ho un problema con il mio login di accesso. Ho scritto uno script per la registrazione di un utente e fino a lì riesco, il problema sorge nell'area dell'accesso.

    Io vorrei che l'utente si debba loggare col suo nome utente e con la sua password ed esclusivamente con queste credenziali, ma quando l'utente ad esempio si logga con un'altra password ciò che mi viene stampato è identico = "Sei loggato" quando invece non è vero.

    Vi incollo il codice.

    <?php

    if(!isset($_POST['submit']))
    {
    ?>

    <div id="members">
    [img]images/members.png[/img]
    </div>
    <h4>Inserisci il tuo nome utente e la tua password per accedere al servizio. MORE Washington Post</h4>
    <form action="" method="post">
    Nome utente <input type="text" name="username">
    Password <input type="password" name="password">
    <input type="submit" name="submit" value="Effettua il login">
    <input type="reset" name="Resetta i dati inseriti">
    </form>

    <?php

    }
    else
    {

    $host = "localhost";
    $user = "root";
    $password = "";

    $db = mysql_connect($host, $user, $password)
    or die ("Errore durante la connessione alla host");
    if(mysql_select_db("washingtonpost", $db));
    else
    {
    echo "Sessione del Database fallita!";
    }
    $sql = "SELECT password FROM utenti WHERE username ='$_POST[username]'";
    mysql_query($sql)
    or die ("Errore nella richiesta al Database");
    if (($nrows = mysql_affected_rows($db)) > 0 )
    {
    echo "Login corretto! Benvenuto " . $_POST['username'];
    }
    else
    {
    echo "Login non corretto!";
    }
    }
    ?>

    Non mi piace quell' $nrows perchè secondo me non significa niente.
    Piuttosto io vorrei dire una cosa del tipo

    if($_POST['username'] != username in database || $_POST['password'] != idem || $_POST['email'] != idem)
    {
    echo "Reinserire i dati";
    }
    else
    {
    echo "Login effettuato";
    }

    Ma come si chiama "username in database"?

    Già che ci sono approfitto per chiedere anche questo:

    Per fare la procedura di login/logout va bene un procedimento del tipo?

    header.php <?php session_start ?>

    index.php

    $login = true;

    <?php if($login != true){session_destroy() 'Logout' } ?>

    ?

    Inoltre, come si "refresha" alla index.php? Scusate sono nuovissimo

    In definitiva io parto da un index.php in cui dico registrati. poi salva i dati nel database, va in pagina accesso area, si logga ed entra in un'altra pagina in cui sta anche il logout.

  2. #2

    Re: problema Session / Database

    Originariamente inviato da donpelajo
    Buongiorno. Ho un problema con il mio login di accesso. Ho scritto uno script per la registrazione di un utente e fino a lì riesco, il problema sorge nell'area dell'accesso.

    Io vorrei che l'utente si debba loggare col suo nome utente e con la sua password ed esclusivamente con queste credenziali, ma quando l'utente ad esempio si logga con un'altra password ciò che mi viene stampato è identico = "Sei loggato" quando invece non è vero.

    Vi incollo il codice.

    <?php

    if(!isset($_POST['submit']))
    {
    ?>

    <div id="members">
    [img]images/members.png[/img]
    </div>
    <h4>Inserisci il tuo nome utente e la tua password per accedere al servizio. MORE Washington Post</h4>
    <form action="" method="post">
    Nome utente <input type="text" name="username">
    Password <input type="password" name="password">
    <input type="submit" name="submit" value="Effettua il login">
    <input type="reset" name="Resetta i dati inseriti">
    </form>

    <?php

    }
    else
    {

    $host = "localhost";
    $user = "root";
    $password = "";

    $db = mysql_connect($host, $user, $password)
    or die ("Errore durante la connessione alla host");
    if(mysql_select_db("washingtonpost", $db));
    else
    {
    echo "Sessione del Database fallita!";
    }
    $sql = "SELECT password FROM utenti WHERE username ='$_POST[username]'";
    mysql_query($sql)
    or die ("Errore nella richiesta al Database");
    if (($nrows = mysql_affected_rows($db)) > 0 )
    {
    echo "Login corretto! Benvenuto " . $_POST['username'];
    }
    else
    {
    echo "Login non corretto!";
    }
    }
    ?>

    Non mi piace quell' $nrows perchè secondo me non significa niente.
    Piuttosto io vorrei dire una cosa del tipo

    if($_POST['username'] != username in database || $_POST['password'] != idem || $_POST['email'] != idem)
    {
    echo "Reinserire i dati";
    }
    else
    {
    echo "Login effettuato";
    }

    Ma come si chiama "username in database"?

    Già che ci sono approfitto per chiedere anche questo:

    Per fare la procedura di login/logout va bene un procedimento del tipo?

    header.php <?php session_start ?>

    index.php

    $login = true;

    <?php if($login != true){session_destroy() 'Logout' } ?>

    ?

    Inoltre, come si "refresha" alla index.php? Scusate sono nuovissimo

    In definitiva io parto da un index.php in cui dico registrati. poi salva i dati nel database, va in pagina accesso area, si logga ed entra in un'altra pagina in cui sta anche il logout.
    A occhio la parte:
    if (($nrows = mysql_affected_rows($db)) > 0 ) sarà sempre maggiore di 0 di conseguenza sei sempr loggato,

    tu devi interrogare il db dove username e password
    siano in una sola riga quindi il risultato = 1

    esempio:

    $sql="SELECT * FROM utenti
    WHERE username='$_POST['username']'
    AND password =$_POST['password']";

    $result=mysql_query($sql);
    $count=mysql_num_rows($result);

    if($count==1)
    {
    echo "sei loggato";
    }else{
    echo "non sei loggato";
    }

    l'ho scritto molto velocemente controlla bene che non ci siano errori,
    ciao

  3. #3
    Ciao! Grazie per la risposta, mi chiedevo però alcune cose.

    $result=mysql_query($sql);
    $count=mysql_num_rows($result);

    if($count==1)
    {
    echo "sei loggato";
    }else{
    echo "non sei loggato";
    }

    Mi spiegheresti cosa significa di preciso?

    Cioè, abbiamo detto che se il record è maggiore di 0, ad esempio 1, mi darà sempre il login. Ok.
    Quel mysql_num_rows che significa? Se il numero dei record è uno?

    Io ho detto nella fase di registrazione che il sistema mi deve inserire in registrazione user pass e email e farmi un controllo se qualcuno si ri-registra allo stesso modo e quello va bene, e gli ho detto anche che deve mettermi user e pass in un'altra tabella, degli accessi, e poi in fase di accesso mi dovrebbe controllare se user e pass sono nel db "sei loggato" sennò "utente non riconosciuto" o qualcosa del genere.

    Ho provatro a dare quel count ma non mi funziona.

    Che fare?

  4. #4

    Re: problema Session / Database

    mi pare di capire che vuoi fare un form di login o sbaglio?
    se sei alle prima "armi" dividi in due pagine il lavoro:

    pagina form:

    <form action="login.php" method="post">
    Nome utente <input type="text" name="username">
    Password <input type="password" name="password">
    <input type="submit" name="LOGIN" value="Effettua il login">
    <input type="reset" name="Resetta i dati inseriti">
    </form>

    Pagina login.php

    if ($_POST['LOGIN'])
    {
    $username= $_POST['username'];
    $password= $_POST['password'];

    $sql="SELECT * FROM utenti WHERE username='".$_POST['username']."' AND password = '".$_POST['password']."'";

    $result=mysql_query($sql);
    $count=mysql_num_rows($result);

    if($count==1)
    {

    header('locationaginautenteloggato.php');

    }else{

    echo "i dati sono sbagliati";

    }

    }

    è un esempio molto semplice poi puoi personalizzarlo, considera che non ho avuto modo di
    provarlo ma credo siacorretto

    fammi sapere
    ciao

  5. #5
    Cioè, abbiamo detto che se il record è maggiore di 0, ad esempio 1, mi darà sempre il login. Ok.
    Per record maggiore di 0 si intende che eseguendo la query troviamo almeno 1 record con i risultati

    Quel mysql_num_rows che significa? Se il numero dei record è uno?
    mysql_num_rows() ti permette di sapere il numero di records trovati. Quindi non per forza il numero dei records è 1

  6. #6
    <?php

    if(!isset($_POST['submit']))
    {
    echo
    '<form action="" method="post">
    Nome utente <input type="text" name="username">
    Email <input type="text" name="email">
    <input type="submit" name="submit" value="Effettua il login">
    <input type="reset" name="Resetta i dati inseriti">
    </form>'
    ;
    }
    else
    {

    $host = "localhost";
    $user = "root";
    $password = "";

    $db = mysql_connect($host, $user, $password)
    or die ("Errore durante la connessione alla host");
    if(mysql_select_db("washingtonpost", $db));
    else
    {
    echo "Sessione del Database fallita!";
    }
    $sql = "SELECT * FROM utenti WHERE username ='$_POST[username]' AND email='$_POST[email]'";
    mysql_query($sql)
    or die ("Errore nella richiesta al Database");
    if (($nrows = mysql_affected_rows($db)) > 0 )
    {
    echo "Benvenuto nella tua area privata!";[
    }
    else
    {
    echo "Login non corretto!";
    }
    }
    ?>

    Questo il mio codice. Non ho capito perchè se setto la mia e-mail la login funziona perfettamente, mi vede i vari controlli etc...se setto la mia passoword zero, sempre "Login non corretto".

    Eppure io nel file della registrazione l'ho settata tramite MD5('$_POST[password]') e anche in questa SELECT.


  7. #7
    Prova così, non sono stato a verificare il tutto...ma magari grazie agli errori che ti riporta riusciamo ad andare avanti. Ma poi perchè fai una login con username e email??? Non è piu normale farla con username e password?
    Codice PHP:
    <?php

    if(!isset($_POST['submit']))
      {
       echo 
    '<form action="" method="post">';
       echo 
    'Nome utente <input type="text" name="username">';
       echo 
    'Email <input type="text" name="email">';
       echo 
    '<input type="submit" name="submit" value="Effettua il login">';
       echo 
    '<input type="reset" name="Resetta i dati inseriti">';
       echo 
    '</form>';
      }

    else
      {
       
    $host "localhost";
       
    $user "root";
       
    $password "";
       
    $db mysql_connect($host$user$password) or die ("Errore di connessione alla host");
       
    mysql_select_db("washingtonpost"$db) or die ("Errore durante la connessione al DB");
       
    $sql "SELECT * FROM utenti WHERE username ='$_POST[username]' AND email='$_POST[email]'";
       
    //risultato della query
       
    $result mysql_query($sql) or die ("Errore nella richiesta al Database");

       
    //se trova più di 0 records accede
       
    if (mysql_num_rows($result) > 0)
         {
           echo 
    "Benvenuto nella tua area privata!";
         }
       
    //sennò no
       
    else
         {
           echo 
    "Login non corretto!";
         }
      }
    ?>

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.