Visualizzazione dei risultati da 1 a 3 su 3

Discussione: Test tra stringhe

  1. #1

    Test tra stringhe

    Ciao,
    devo confrontare due stringhe in case sensitive. Ho girato per il web e fatto parecchie prove ma non sono riuscito ad arrivare alla soluzione.
    Prelevo dei dati da un db tramite la query:
    codice:
    SELECT `email`, `password`, `nome` FROM `login_tecnici` WHERE BINARY `email`='$loginUsername' AND `password`='$password';
    Dove $loginUsername e $password vengono memorizzati da un form.
    Facciamo conto la password è: 'marco' (tutto in minuscolo).
    Punto primo, anche se nell'input, di tipo password, inserisco 'Marco', la query mi riporta che un record è stato trovato.
    Punto secondo, se faccio il confronto in php:
    codice:
    if ($loginUsername != $arrLogin[0] || $password != $arrLogin[1]) {
        header("Location: ". $MM_redirectLoginFailed );
      }
      else {
        header("Location: " . $MM_redirectLoginSuccess);
      }
    Dove $arrLogin è un array numerico: la posizione 0 si riferisce allo username e 1 alla password, vengo comunque reindirizzato con successo, anche inserendo 'Marco'.
    Punto terzo, se invece effettuo questo test:
    codice:
    if ($loginUsername != $arrLogin[0] || $password != $arrLogin[1]) {
        echo 'Login fallito';
      }
      else {
        echo 'Login OK';
      }
    Se inserisco nell'input 'Marco', il test fallisce, mentre ha successo se inserisco 'marco'.
    Qualcuno sa dirmi dove è il problema?
    Grazie e Buon Natale

  2. #2
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    ho provato la parte del confronto php e a me funziona bene in entrambi i modi (e ne ero già convinto)
    per MySQL mi pare che serva cambiare la collection

  3. #3

    [RISOLTO] Test stringhe

    Quote Originariamente inviata da clasku Visualizza il messaggio
    ho provato la parte del confronto php e a me funziona bene in entrambi i modi (e ne ero già convinto)
    per MySQL mi pare che serva cambiare la collection
    Hai ragione. è stato un errore di distrazione. Lo script è presente in un file denominato 'login_new.php'. Tramite barra di indirizzo andavo direttamente a quel file per testarlo, ma fallendo mi portava nella pagina di login fallito dove è presente il link 'Torna indietro', che mi portava allo script non aggiornato (href="login.php").

    Però, sono riuscito a correggere la query in modo che se username O password non coincidono in case sensitive, il num. di righe è pari a zero.
    codice:
    SELECT `email`, `password`, `nome` FROM `login_tecnici` WHERE BINARY `email` LIKE '$loginUsername' AND BINARY `password` LIKE '$password'
    Ho prefissato BINARY ad entrambi i campi nella clausola where e usato LIKE invece di '='. Non sapevo di dover prefissare BINARY all'inizio di ogni campo, nel web ci sono esempi con un solo campo.

    Grazie dell'aiuto. Auguri Clasku

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.