Visualizzazione dei risultati da 1 a 8 su 8

Discussione: login non funzionante

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    62

    login non funzionante

    Ciao,

    Vi posto del codice che sto usando per fare il login. Il problema � che non funziona, in quanto inserendo i dati ma non fa loggare, funziona solo il classico accesso con username e password = prova, ho provato anche a far stampare i dati che arrivano, e sono identici ai dati presenti nel database. Dove sbaglio?

    <?php
    session_start();
    $username=$_POST['username'];
    $password=$_POST['password'];

    //mi collego

    $connessione=new mysqli("indirizzo server", "utente","password", "nome databse")or die("non posso collegarmi");

    $query = "SELECT * FROM utenti WHERE username = '$username' AND password = '$username' ";
    $ris = mysqli_query($connessione,$query );
    $riga=mysqli_fetch_array($ris);
    $risultato=mysqli_num_rows($riga);
    // se la riga � maggiore di 0 l'utente � registrato

    if($risultato>0){


    // apro una sessione per l'utente con id proveniente da database
    $_SESSION['id']=$riga['id'];
    header("location:index.php");


    }else{
    //utente non trovato, viene reindirizzato alla pagina del login
    $_SESSION['verifica']="no";

    header("location:login.php");
    }




    ?>



    Il problema � che inserendo i dati corretti, mi reindirizza sempre alla pagina del login. Ho provato a mettere $risultati==1, isset(riga), ma non cambia nulla, solo l'utente "prova" riesce a loggarsi.

    Oltre a questo, avrei bisogno di un parere su un sito web che ho appena fatto, non conosco bene le regole, posso aprire una discussione per chiedere un parere, sugerimenti e consigli?

    Grazie mille in anticipo

  2. #2
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,359
    Hai messo due volte $username nella query.

    Fossi in te non darei l'indirizzo del sito. La tua pagina di login non è del tutto sicura.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  3. #3
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,359
    Poi c'è
    $risultato=mysqli_num_rows($riga); da modificare in
    $risultato = mysqli_num_rows($ris);
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  4. #4
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,359
    Ho preso il tuo codice. Se immetto dati Giusti compare la scritta "sono collegato" altrimenti compare la scritta "non sono collegato".

    Codice PHP:
    <?php
     $username
    =$_POST['username']; 
     
    $password=$_POST['password']; 
     
    //mi collego
     //$connessione=new mysqli("indirizzo server", "utente","password", "nome databse")or die("non posso collegarmi");
     
    $connessione = new mysqli("localhost","root","""tests") or die("non posso collegarmi"); 
     
    $query     "SELECT * FROM utenti WHERE username = '$username' AND password = '$password' ";
     print 
    "$query<br/>";
     
    $ris       mysqli_query($connessione,$query );
     
    $riga      mysqli_fetch_array($ris); 
     
    $risultato mysqli_num_rows($ris);
     
    // se la riga ï¿½ maggiore di 0 l'utente ï¿½ registrato
     
    if($risultato>0){
     echo 
    "sono collegato";

     }else{
     echo 
    "non sono collegato";
     }
    Se immetto username = claudio e password = bolzano mi compare la scritta "sono collegato" ed è normale.

    Se immetto username = carlo e password = parigi mi compare la scritta "non sono collegato" ed è normale

    Se immetto username = ' or 1=1 -- e password = ' or 1=1 -- (per la password immetto qualcosa per passare gli eventuali controlli) mi compare la scritta "sono collegato" e non è del tutto normale.

    La query è : SELECT * FROM utenti WHERE username = '' or 1=1 -- ' AND password = '' or 1=1 --'


    I dati della tabella utenti :

    username password
    lorenzo udine
    claudio bolzano
    carlo milano
    bruno taranto
    Ultima modifica di badaze; 15-03-2017 a 20:38
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  5. #5
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,359
    Dimenticavo. Le password vanno criptate quando sono inserite nella tabella.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    62
    Ciao badaze, grazie, mi sono perso in un bicchiere d'acqua, forse ho concentrato l'attenzione troppo su quell'if non accorgendomi che la stringa SELECT era sbagliata. Per il numero delle righe era solo una prova, in codice originario precedeva if(isset( $riga)), ho usato questo codice perch� credo che per fare un login basta vedere se la riga esiste, senza sapere se � diverso da 0, o uguale a 1, ecc. Alla fine un utente � sempre schedato con un username univoco...Ascolta, per fare un login sicuro, in rete ho trovato addslashes da inserire nel post e criptare la password con md5, quindi
    $username= addslashes($_POST['username']) ;
    $password= md5($_POST['password']);

    Potrebbe andar bene? tu che ne pensi? hai altri suggerimenti? di nuovo (scusa se insisto), ho bisogno di sapere se il mio lavoro su quel sito � stato fatto bene o ci sono pecche/ parti grafiche da rivedere ecc, insomma un parere tecnico. Tu che dici? come posso fare?


    Grazie ancora

  7. #7
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,359
    Ti consiglio di passare a PDO. Con quello ' or 1=1 -- non passa.


    Il codice sotto è solo a scopo dimostrativo. Le password vanno criptate ovviamente.
    Codice PHP:
    <?php
     $username
    =$_POST['username']; 
     
    $password=$_POST['password']; 
     
    //mi collego
     
    $pdo    = new PDO('mysql:host=127.0.0.1; dbname=tests','root','', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
     
     
    $query  "SELECT * FROM utenti WHERE username = :username AND password = :password ";
     
    $sth    $pdo->prepare($query);
     
     
    $sth->bindParam(':username'$usernamePDO::PARAM_STR);
     
    $sth->bindParam(':password'$passwordPDO::PARAM_STR); 
     
    $sth->execute(); 
     
     
    $risultato =  $sth->rowCount(); 
     if(
    $risultato>0){
     echo 
    "sono collegato";
     }else{
     echo 
    "non sono collegato";
     }
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    62
    Ciao badeze, ti ringrazio, alla fine ho risolto solo codificando le password. Il PDO al momento l'ho messo da parte, non so usarlo e al momento preferisco usare solo la crittografia delle password.

    GRAZIE

Tag per questa discussione

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 © 2024 vBulletin Solutions, Inc. All rights reserved.