Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    67

    Verificare se è presente valore in database

    Ho una tabella in un database mysql formata da due campi userlog e passwordlog e un form in cui si inseriscono appunto username e password.


    Vorrei eseguire un redirect in caso esista un match nel database.

    if(isset($_POST['invia'])){
    $user_login = $_POST['user']; //user passato da form
    $password_login = $_POST['password']; //pass da form
    $connect = mysql_connect($db_location, $user, $password) or die('Errore connessione...');
    mysql_select_db($db, $connect) or die('Errore database...');
    $query_login = "SELECT userlog, passwordlog FROM admin WHERE userlog = '$user_login' & passwordlog = '$password_login'";
    $result_login = mysql_query($query_login, $connect) or die('Errore query login...');
    $login_info = mysql_fetch_assoc($result_login);

    if(isset($login_info)){
    header('Location:index.php');
    }

    }

    Il fatto è che qualunque valore inserisca nel form il redirect viene sempre eseguito.

  2. #2
    WHERE userlog = '$user_login' & passwordlog = '$password_login'

    con una sola & e' un AND bitwise e non un AND logico che richiede invece 2 &&. Ma usa la notazione AND cosi' non ti confondi.

    Anche la query la farei diversamente. Userei count() per vedere se esiste o meno l'utente. Poi controlli: se count() e' = 1 sei ok, se != 1 quindi 0 piu' di uno allora fai il redirect.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    67
    Grazie funziona con &&.

    Mi potresti spiegare la differenza tra un and bitwise e uno logico?

    Infine, perch è meglio usare count?

  4. #4
    Originariamente inviato da paglia_s
    Grazie funziona con &&.

    Mi potresti spiegare la differenza tra un and bitwise e uno logico?

    Infine, perch è meglio usare count?
    and bitwise compara due stringhe di bit e rende 1 se i bit sono uguali, 0 se non lo sono. Es.:

    codice:
    1) 01001110
    2) 00010010
    =  10100011
    ovviamente OR & c. andranno di conseguenza secondo questa logica. Viene usato per comparare una bit map dove ogni bit ha un suo significato.
    http://php.net/manual/en/language.operators.bitwise.php

    Una AND logica si basa sulla comparazione TRUE/FALSE. La classica moltiplicazione dove se un solo elemento e' 0 (FALSE) tutto il risultato e' FALSE.
    http://www.php.net/manual/en/languag...rs.logical.php

    Count() e' meglio per il semplice fatto che non ha senso estrarre dei dati gia' conosciuti e che utilizzi nel where, e' piu' performante perche' si basa sull'indice primario e nel caso di una sql injection rendera' solo un numero e non la lista di user/password

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    67
    Ho utilizzato count() così ma il redirect viene sempre eseguito:
    Codice PHP:
    $login_info mysql_fetch_assoc($result_login);
    $count count($login_info);
    if(
    $count 1){
    header('Location:index.php');


  6. #6
    Se il codice è

    if($count = 1){


    stai assegnando 1 a count quindi è sempre valida
    forse dovresti fare

    if($count == 1){
    header('Location:index.php');
    }
    www.clickeweb.com Realizzazione siti web

  7. #7
    Originariamente inviato da paglia_s
    Ho utilizzato count() così ma il redirect viene sempre eseguito:
    Codice PHP:
    $login_info mysql_fetch_assoc($result_login);
    $count count($login_info);
    if(
    $count 1){
    header('Location:index.php');

    Codice PHP:

    $login_info 
    mysql_fetch_num($result_login);
    $count $login_info[0];
    if(
    $count != 1){
    header('Location:index.php');

    se vuoi fare il redirect quando lo user NON esiste oppure sono piu' di UNO
    Altrimenti se il redirect deve avvenire se l'utente esiste ci vuole ==

    Ma non credo abbia senso rimandare alla index se l'utente esiste. Si continua nella pagina di solito.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    67
    Grazie per l'aiuto, sono novizio di php e ancora confondo gli operatori.

    Continuando nello script ho dovuto usare la variabile $logininfo[userlog] dovendola usare merita mantenere count per il controllo oppure utilizzare:

    if(isset($login_info[userlog])){...

  9. #9
    Originariamente inviato da paglia_s
    Grazie per l'aiuto, sono novizio di php e ancora confondo gli operatori.

    Continuando nello script ho dovuto usare la variabile $logininfo[userlog] dovendola usare merita mantenere count per il controllo oppure utilizzare:

    if(isset($login_info[userlog])){...
    Se prosegui nello script va da se che sara' settato $login_info perche' count rende SEMPRE un record. dentro ci sara' scritto il numero delle ricorrenze trovate.

    Se le ricorrenze trovate sono diverse da 1 allora rimandi con il redirect ad una nuova fase di login, diversamente prosegui e non avrebbe piu' senso ricontrollare se l'utente esiste. Certo che esiste altrimenti avresti rimandato al login.

    Ad ogni modo da come ti avevo proposto mysql_fetch_num() rende il result set in un indice numerico e quindi il valore sara' in $login_info[0]

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  10. #10
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    67
    Originariamente inviato da piero.mac
    Se prosegui nello script va da se che sara' settato $login_info perche' count rende SEMPRE un record. dentro ci sara' scritto il numero delle ricorrenze trovate.

    Se le ricorrenze trovate sono diverse da 1 allora rimandi con il redirect ad una nuova fase di login, diversamente prosegui e non avrebbe piu' senso ricontrollare se l'utente esiste. Certo che esiste altrimenti avresti rimandato al login.

    Ad ogni modo da come ti avevo proposto mysql_fetch_num() rende il result set in un indice numerico e quindi il valore sara' in $login_info[0]
    mysql_fetch_num mi rende il codice meno chiaro di mysql_fetch array, grazie lo stesso

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.