Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2001
    Messaggi
    299

    Controllo Password da DB

    Ciao a tutti,
    ho uno script che controlla una password per poter accedere ad un'altra pagina php.

    Le password sono memorizzate in un db MySQL.
    Il problema è che inserendo solo una password il controllo funziona, se ne inserisco più di una, no.

    Come mai?
    Vi allego il codice:
    Codice PHP:
    if(ereg("^[a-zA-Z0-9]{6,12}$"$HTTP_POST_VARS['pwd'])) {$pwd $HTTP_POST_VARS['pwd'];} else {$pwd="";};

    // Connessione al DB;
    include ("connessione.php");

    $sqlquery "SELECT * FROM tabella ORDER by id";
    $result mysql_query($sqlquery);

    $pwd addslashes($pwd); 

    while(
    $ris=mysql_fetch_array($result)){

    if (
    $pwd == $ris['pwd'])
    {
      
    /* login valido - viene registrata la variabile di sessione*/
      
    session_start();
      
    header("Cache-control: private");
      
    $_SESSION["controllo"] = "si";
      
    header("Location: paginaOK.php");
    } else
      
    /* login non valido - reindirizzamento alla pagina di login  */
        
    {header("Location: paginaERR.php");
        die();}


  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2001
    Messaggi
    299

  3. #3
    Utente di HTML.it L'avatar di thitan
    Registrato dal
    Feb 2001
    Messaggi
    716
    no ma in che senso inserendo più di una pass non funziona?

    www.inter-rail.it
    travellers, not tourist
    Is cuma cá mhinice a théann tú ar strae; is é is tábhachtaí gurb áil leat do bhealach a aimsiú arís.

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2001
    Messaggi
    299
    Se nel db inserisco la password di un cliente solo il controllo funziona.
    Se nel db ci sono più password è come se il controllo restituisca paginaERR.php

  5. #5
    Utente di HTML.it L'avatar di thitan
    Registrato dal
    Feb 2001
    Messaggi
    716
    ah, ok.

    ovvio: lui ti controlla tutte le pass del db, e se corrisponde ti lancia l'header, se no col die ti blocca.

    è strutturalmente errato, dovresti dare al cliente anche un user, e fare il controllo anche su quello..

    se no correggi la query, invece che
    'SELECT * FROM tabella ORDER by id'
    azzarderei un
    'SELECT * FROM tabella WHERE pwd = '$pwd' LIMIT 1'

    ma ripeto, io rivedrei il metodo di login..

    www.inter-rail.it
    travellers, not tourist
    Is cuma cá mhinice a théann tú ar strae; is é is tábhachtaí gurb áil leat do bhealach a aimsiú arís.

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2001
    Messaggi
    299
    E aggiungendo il campo user come dovrebbe essere il controllo?

  7. #7
    Utente di HTML.it L'avatar di thitan
    Registrato dal
    Feb 2001
    Messaggi
    716
    Originariamente inviato da larrygiu
    E aggiungendo il campo user come dovrebbe essere il controllo?
    dovresti controllare che l'user corrisponde alla password..
    altrimenti se uno comincia a scrive3re delle password a caso potrebbe entrare con un utente..

    cmq ti consiglio di guardare in giro, ci dovrebbero essere un sacco di script per il login

    www.inter-rail.it
    travellers, not tourist
    Is cuma cá mhinice a théann tú ar strae; is é is tábhachtaí gurb áil leat do bhealach a aimsiú arís.

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2001
    Messaggi
    299
    Ho risolto in questo modo, però la session non va come dovrebbe;
    ossia funziona solo se la password è esatta, invece se è sbagliata mi dà pagina bianca invece di reindirizzarmi a paginaERR.php.

    Codice PHP:
    $sqlquery "SELECT * FROM tabella where pwd='$pwd' LIMIT 1";
    $result mysql_query($sqlquery);

    while(
    $ris mysql_fetch_array($result)){ 

    if (
    $ris[pwd] == $pwd){
      
    /* login valido - viene registrata la variabile di sessione*/
      
    session_start();
      
    header("Cache-control: private");
      
    $_SESSION["controllo"] = "si";
      
    header("Location: paginaOK.php");
      exit();
    } else{
      
    /* login non valido - reindirizzamento alla pagina di login  */
      
    header("Location: paginaERR.php");
      exit();
        }

    Questa è la pagina di controllo Sessione
    Codice PHP:
      session_start();
      
    header("Cache-control: private");
      if (
    $_SESSION["controllo"] == "si")     { /* è stato effettuato il login */ 
      
    }
     else   {    
    /* login non valido - reindirizzamento alla pagina di login con messaggio di errore */
        
    header("Location: paginaERR.php");
        die();
        } 

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2001
    Messaggi
    299
    up

  10. #10
    Utente di HTML.it L'avatar di thitan
    Registrato dal
    Feb 2001
    Messaggi
    716
    la butto li:
    Codice PHP:
    $sqlquery "SELECT id FROM tabella where pwd='$pwd' AND user='$user' LIMIT 1";
    $result mysql_query($sqlquery);
    //controlli che non ci siano più di un utente con stesso user ed password!
    if(mysql_num_rows($result)!=1){
    //errore! sputami fuori un header alla pagina di errore
    }else{
    //ci siamo, crea la sessione e vai avanti!

    casomai nella sessione mettici anche un riferimento all'utente, tipo l'id (in md5, o cmq con un minimo di criptazione)

    www.inter-rail.it
    travellers, not tourist
    Is cuma cá mhinice a théann tú ar strae; is é is tábhachtaí gurb áil leat do bhealach a aimsiú arís.

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.