Visualizzazione risultati 1 fino 10 di 10

Discussione: Login diversificato in base agli utenti

  1. #1
    Guest

    Predefinito Login diversificato in base agli utenti

    Salve, sto provando a fare uno script che, in base al nome utente e password inviati tramite POST da un modulo di login, indirizzi l'utente che si logga ad una certa pagina se user, password sono costituite da determinate stringhe e ad altra pagina se user,password corrispondono ad altri valori.
    Invece vengo sempre diretto o alla pagina "Errato_login.php" nel caso che username o password non siano presenti nel database o alla pagina "Amministrazione.php" sia che username e password sono uguali o differenti rispettivamente a "bbbbb" e "ccccc".

    Chi mi aiuta?
    Questo è il codice:

    $username=$_POST["username"];
    $password=$_POST["password"];
    $connessione=mysql_connect("$server", "$user", "$pass") or die("impossibile la connessione con il server remoto". mysql_error());
    mysql_select_db("aaaaa");
    $dati=mysql_query("SELECT * FROM registrati WHERE username='$username' AND password='$password'");
    $num=mysql_num_rows($dati);
    if($num==1 AND $username="bbbbb" AND $password="ccccc")
    {
    header("Location: Amministrazione.php");
    }

    elseif($num==1 AND $username!="bbbbb" AND $password!="ccccc")
    {
    header("Location: Zona_riservata.php");
    }
    else
    {
    header("Location: Errato_login.php");
    }

    Grazie

  2. #2
    Guest

    Predefinito

    questa riga è errata
    Codice:
    if($num==1 AND $username="bbbbb" AND $password="ccccc")
    sostituisci con
    Codice:
    if($num==1 AND $username=="bbbbb" AND $password=="ccccc")
    Comunque usa il tag [ code] la prossima volta.
    ah.. attento alle sql injection.

  3. #3
    Guest

    Predefinito

    $username=$_POST["username"];
    $password=$_POST["password"];
    $connessione=mysql_connect("$server", "$user", "$pass") or die("impossibile la connessione con il server remoto". mysql_error());
    mysql_select_db("aaaaa");
    $dati=mysql_query("SELECT * FROM registrati WHERE username='$username' AND password='$password'");
    $num=mysql_num_rows($dati);
    if($num==1 AND $username=="bbbbb" AND $password=="ccccc")
    {
    header("Location: Amministrazione.php");
    }

    elseif($num==1 AND $username!=="bbbbb" AND $password!=="ccccc")
    {
    header("Location: Zona_riservata.php");
    }
    else
    {
    header("Location: Errato_login.php");
    }

    Ho corretto il codice come mi hai suggerito, ma ancora non funziona. Perdona l'ignoranza, che vuol dire Sql injection?

  4. #4
    Guest

    Predefinito

    L'sql injection è una tecnica di hacking che permette di eseguire codice sql arbitrario nelle query in presenza di variabili non controllate (come nel tuo caso).
    In ogni modo
    Codice PHP:
    <?php
    $username
    =$_POST["username"];
    $password=$_POST["password"];
    $connessione=mysql_connect("$server", "$user", "$pass") or die("impossibile la connessione con il server remoto". mysql_error());
    mysql_select_db("aaaaa");
    $dati=mysql_query("SELECT * FROM registrati WHERE username='".mysql_real_escape_string($username)."' AND password='".mysql_real_escape_string($password)."'",$connessione);
    $num=mysql_num_rows($dati);
    if(
    $num==1 && $username=="bbbbb" && $password=="ccccc")
    header("Location: Amministrazione.php");
    elseif(
    $num==1 && ($username!="bbbbb" || $password!="ccccc"))
    header("Location: Zona_riservata.php");
    else
    header("Location: Errato_login.php");
    ?>
    Ho modificato un po il codice e eliminato l'sql injection.
    #edit ho aggiornato il codice mi sono accorto di un altro errore. Comunque, perchè non usi i tag [code ] o [php ] (senza spazi) quando posti il codice? E' più leggibile.
    Ultima modifica di stoner : 03-12-2008 alle ore 23.09.13

  5. #5
    Guest

    Predefinito

    Non sapevo neppure l'esistenza dell'sql injection; mi documenterò in merito e cercherò di ampliare le mie conoscenze.
    Per quanto riguarda il codice che mi hai gentilissimamente guardato e corretto ancora riscontro errori nel funzionamento in quanto vengo sempre e comunque rimandato alla pagina "Errato_login.php" indipendentemente da username e password inseriti.
    Sapresti aiutarmi nuovamente?
    1000 grazie cmq per quello che hai già fatto per me

    Saluti

  6. #6
    Guest

    Predefinito

    Chiedo scusa, ho controllato meglio la connessione al database: avevo sbagliato a scrivere un carattere nel nome del database! Ora però riscontro sempre il problema che indipendentemente da username e password inseriti nel modulo di login vengo ridiretto o alla pagina "Amministrazione.php", oppure a "Errato_login.php" nel caso che le stringhe immesse non siano presenti sul database. Sembra che il codice ignori l'header verso la pagina "Zona_riservata.php". Come posso risolvere il problema?
    Saluti

  7. #7
    Guest

    Predefinito

    per me canni di grosso...
    perche' cosi' la pagina di amministrazione è possibile vederla inserendo il link all'interno dell'url...
    ti consiglio di fare 2 funzioni che carikino la pagina e a seconda del risultato te la caricano in maniera diversa ^^

  8. #8
    Guest

    Predefinito

    In cima alla pagina ho provveduto a mettere un controllo sulla presenza o meno di una variabile di sessione che viene inizializzata solo dopo aver inserito credenziali di accesso valide....Sono alle prime armi con php quindi ditemi voi se così facendo ci sono problemi sulla sicurezza. A parte questo, chi saprebbe dirmi perché quel codice non funziona a dovere?

  9. #9
    Guest

    Predefinito

    Citazione Originalmente inviato da studiosmeraldo Visualizza messaggio
    Chiedo scusa, ho controllato meglio la connessione al database: avevo sbagliato a scrivere un carattere nel nome del database! Ora però riscontro sempre il problema che indipendentemente da username e password inseriti nel modulo di login vengo ridiretto o alla pagina "Amministrazione.php", oppure a "Errato_login.php" nel caso che le stringhe immesse non siano presenti sul database. Sembra che il codice ignori l'header verso la pagina "Zona_riservata.php". Come posso risolvere il problema?
    Saluti



    Codice PHP:
    <?php
    $username
    =$_POST["username"];
    $password=$_POST["password"];
    $connessione=mysql_connect("$server", "$user", "$pass") or die("impossibile la connessione con il server remoto". mysql_error());
    mysql_select_db("aaaaa");
    $dati=mysql_query("SELECT * FROM registrati WHERE username='".mysql_real_escape_string($username)."' AND password='".mysql_real_escape_string($password)."'",$connessione);
    $num=mysql_num_rows($dati);
    if(
    $num==1 && $username=="bbbbb" && $password=="ccccc")
    header("Location: Amministrazione.php");
    elseif(
    $num==1 && $username!="bbbbb")
    header("Location: Zona_riservata.php");
    else
    header("Location: Errato_login.php");
    ?>
    prova cosi'...

    ora se accedi con bbbbb e pass ccccc accedi all'area amministrazione.
    Se accedi con un qualsiasi altro utente che non sia bbbbb vi a zona_riservata.php
    se accedi con un username non presente su db vai a errato_login.php

    ciauz

  10. #10
    Guest

    Predefinito

    Ora tutto funziona :-)

    Grazie

Regole di scrittura

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