Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    [Sql]Modo per controllare il valore di un'attributo

    Esiste un sistema o una funzione in sql che mi ritorna true se un certo valore è presente in una tupla.per esempio se devo controllare l'accesso a pagine php tramite un username e password inseriti all'interno di un database nella tabella utente come faccio a controllare che i valori inseriti nei form siano presenti nel database e quindi aprire le pagine successive...
    Grazie

  2. #2
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027

    Re: [Sql]Modo per controllare il valore di un'attributo

    Originariamente inviato da Guitar_joker87
    Esiste un sistema o una funzione in sql che mi ritorna true se un certo valore è presente in una tupla.per esempio se devo controllare l'accesso a pagine php tramite un username e password inseriti all'interno di un database nella tabella utente come faccio a controllare che i valori inseriti nei form siano presenti nel database e quindi aprire le pagine successive...
    Grazie
    Ammettendo che i dati ti arrivino via form con method POST:
    codice:
    $username = addslashes($_POST['username']);
    $password = addslashes($_POST['password']);
    $query = "SELECT * FROM UTENTI WHERE username = '$username' LIMIT 1";
    
    $result = mysql_query($query);
    
    if($result) {
      if(mysql_num_rows($result)) {
         $row = mysql_fetch_row($result);
         if($row[0] == $password) {
            echo "ACCESSO CONSENTITO";
         } else {
            echo "ACCESSO NEGATO";
         }
      } else {
         echo "UTENTE NON TROVATO";
      }
    } else {
      echo mysql_error();
    }

  3. #3
    scusa le domande ma:
    cosa vuol dire 'addslashes'?
    cosa vuol dire 'LIMIT 1'?

    Come funziona fetch_row?
    Non dovrebbe essere
    if($row[1] == $password)??

  4. #4
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    Originariamente inviato da Guitar_joker87
    scusa le domande ma:
    cosa vuol dire 'addslashes'?
    E' una funzione per fare l'escape degli apici singoli, serve per evitare che un utente inserendo degli apici possa cambiare il senso della tua query
    cosa vuol dire 'LIMIT 1'?
    LIMIT 1 vuol dire che una volta che ha trovato un utente con quello username non vada avanti nella ricerca (immagina una tabella con 100000 record, e il record che cerchi sia il secondo, perchè andare oltre nella ricerca?)
    Come funziona fetch_row?
    Non dovrebbe essere
    if($row[1] == $password)??
    Si scusa, qui ho sbagliato, in effetti il mio codice funzionerebbe se la mia query fosse stata

    $query = "SELECT password FROM UTENTI WHERE username = '$username' LIMIT 1";

    Altrimenti dipende dalla posizione in cui si trova il campo della password.

    ciao

  5. #5
    ok ora provo poi ti farò sapere se ho risolto qualcosa

  6. #6
    ho provato intanto a fare il comtrollo con il nickname ma anche se è giusto mi da sempre accesso negato.

    Codice PHP:
    if (isset($_POST['nickname'])) $nickname $_POST['nickname'];
    if (isset(
    $_POST['password'])) $password $_POST['password'];
    $act "";
    if (isset(
    $_POST['enter'])) $act "enter";

    if (
    $act == "") {
    echo <<<eof
    <form action="noleggio.php" method="post">
    <h1>Video Noleggio</h1>
    <h2>Inserisci il tuo nickname e password per entrare</h2>


    Nickname</p>
                <input type="text" name="nickname"/>


    Password</p>
                <input type="password" name="password"/>
                

    <input type="submit" name="enter" value="Entra"></p>
            </form>
    eof;
    }

    elseif(
    $act=='enter'){

    $query "SELECT nickname FROM cliente WHERE nickname='$nickname' LIMIT 1";

    $result mysql_query($query);
    if(
    $result) {
      if(
    mysql_num_rows($result)) {
         
    $row mysql_fetch_row($result);
         if(
    $row[3] == $nickname) {
            echo 
    "ACCESSO CONSENTITO";
         } else {
            echo 
    "ACCESSO NEGATO";
         }
      } else {
         echo 
    "UTENTE NON TROVATO";
      }
    } else {
      echo 
    mysql_error();
    }

    Il nickname si trova al quarto campo quindi ho messo row[3] giusto?

  7. #7
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    a dire il vero il controllo dovrebbe essere diverso:

    SELECT password from utenti where nickname='$nickname' LIMIT 1

    Se trova qualcosa controlli la password.

    Prova a stampare la query per fare debug.
    Se non ti trovi con mysql_fetch_row usa mysql_fetch_array, cosi prelevi con $row['password'].

    ciao

  8. #8
    Codice PHP:
    elseif($act=='enter'){

    $query "SELECT password FROM cliente WHERE nickname='$nickname' LIMIT 1";

    $result mysql_query($query);
    if(
    $result) {
      if(
    mysql_num_rows($result)) {
         
    $row mysql_fetch_array($result);
         if(
    $row['password'] == $password) {
            echo 
    "ACCESSO CONSENTITO";
         } else {
            echo 
    "ACCESSO NEGATO";
         }
      } else {
         echo 
    "UTENTE NON TROVATO";
      }
    } else {
      echo 
    mysql_error();
    }

    Grazie!!! così funziona... visto che sei così ferrato in queste cose prova a dar un'occhiata all'altro mio argomento in questa sezione...

  9. #9
    mah... secondo me vi complicate la vita...

    Codice PHP:
    $user =$_POST['user'];
    $pwd$_POST['pwd']

    $query "SELECT * FROM utenti WHERE user ='$user' AND pwd='$pwd'"
    $ris mysql_query($query)
    if (
    mysql_num_rows($ris)==1//ACCESSO CONSENTITO
    else //ACCESSO NEGATO 
    Se dopo mezz'ora di gioco non hai ancora capito chi è il pollo da spennare, quel pollo sei tu

  10. #10
    Mi sa che te la complichi tu!
    Sai che con il tuo metodo si entra solo sapendo l'utente e NON SAPENDO la password?
    Chiamasi SQLINJECT

    Non sto a spiegare il perchè per ovvi motivi di sicurezza!

    Ciao!
    Zappa
    [PC:Presario 2515EU][Cpu:P4@2.3GHz][Ram: 512M][HDU:80G@5400 RPM]
    [Wireless:LinkSys][OS: Ubuntu 9.04 - Jaunty Jackalope]

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.