Verificare maiuscole e minuscole

Ho realizzato una web application con autenticazione e ho notato che quando inserisco una password tutta in minuscolo (es.: pippo) mentre sul db ha l'iniziale in maiuscolo (es.: Pippo), l'autenticazione avviene ugualmente, io invece vorrei che si bloccase in quanto le password sono diverse, in pratica vorrei rendere il testo inserito case-sensitive, è possibile?

inviato 10 anni fa
Nando
X 0 X

quando fai l'if di controllo per vedere se la pass inserita nel form è identica a quella del db metti tre uguali

if($_POST['pass']===$pass){

echo "ok";

}else{

echo "Errore la pass inserita nn combacia con quella del db";

}

prova e dimmi se va bene

risposto 10 anni fa
SuperSavio
X 0 X

Funziona sia con 3 che con 2 uguali. Scusa ma in cosa consiste la differenza tra due o più uguali?

Grazie,

ciao.

risposto 10 anni fa
Nando
X 0 X

== confronta due valori if($pippo == 123)

=== confronta due valori dello stesso tipo (numero-numero/stringa-stringa) if($pippo === 123)

risposto 10 anni fa
SuperSavio
X 0 X

Molto interessante, questo nella guida che sto seguendo per imparare php non c'era scritto. Ti ringrazione per l'informazione.

Grazie,

ciao.  ;)

risposto 10 anni fa
Nando
X 0 X

ho fatto un giro in rete perchè nn me ne intendo di case sensitive però da quanto ho capito è una modifica al db che devi fare nella tabella dove c'è il campo della pass setta quel campo in Latin1_general_cs   il cs finale sta a significare che è case sensitive e poi fai un controllo normale con due ==

_ci  case insesitive

_cs case sensitive

l'ho testato in locale è funziona alla grande....grazie hai trovato una funzione che posso aggiungere al mio sito  ;)  :bye:

risposto 10 anni fa
SuperSavio
modificato 10 anni fa
X 0 X

Il problema del confronto tra stringhe va risolto opportunamente a seconda che il confronto sia fatto nella query, quindi affidato a MySQL, oppure nello script PHP.

In uno script PHP il normale confronto tra script è case sensitive. Per una conferma basta provare questo script:

<?php
$string = 'test';

if($string == 'Test') {
   echo 'uguali';
}
else {
   echo 'diverse';
}
?>

In una query MySQL la cosa è più complicata. In generale il confronto dipende dalla "collation" associata al campo che si sta confrontando. Se il nome della collation termina con "_ci" allora il confronto è "case insensitive". E' comunque possibile modificare la collation limittamente ad una query specificandone il nome:

[tt]SELECT * FROM utenti WHERE nome = 'test' COLLATE latin1_general_cs[/tt]

Un altro modo per forzare un confronto case sensitive consiste nel fare un confronto "binario" tra le stringhe:

[tt]SELECT * FROM utenti WHERE BINARY nome = 'test'[/tt]

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Ho cambiato il Collation da latin1_swedish_ci in latin1_swedish_cs come mi avete detto e funziona.

Grazie,

 :bye:

risposto 10 anni fa
Nando
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda