problema con nomi registrazione

EaRtHQuAkE

Nuovo Utente
4 Dic 2009
16
0
0
ho questo problema col mio sito altervista
se io registro il nickname Utente tutto ok
però se registro il nickname utente con la prima U minuscola me lo registra lo stesso
invece vorrei ke mi dicesse username gia in uso.
Come fare? :elvis:

nelle colonne dello username ho messo una colonna di tipo VARCHAR(16) con "Collation" latin_general_cs quel cs sta per case sensitive e ho pensato di aver risolto il problema...
ho messo sia cs che ci (case insensitive) ma non riesco a risolvere ancora nulla

:book:
 
ehm

al mio sito

ho un sito con modulo di registrazione e login

nel modulo di login mi accetta anche il nome tutto minuscolo
cioè se nel db uno è registrato come UTENTE nel login lo accetta anche come utente in minuscolo

però se uno è registrato come UTENTE e un altro si registra come utente li da entrambi validi e li mette entrambi quando non dovrebbe essere cosi dovrebbe dare l'ultimo come gia in uso
 
Modifica il tuo script in modo che in fase di registrazione ed autenticazione faccia il lowercase del nome utente, in questo modo, ad ogni tentativo di registrazione con un utenza che è uguale ma differisce solo per maiuscole e minuscole dirà sempre che l'utenza è già in uso.

Ciao, Ciro
 
Modifica il tuo script in modo che in fase di registrazione ed autenticazione faccia il lowercase del nome utente, in questo modo, ad ogni tentativo di registrazione con un utenza che è uguale ma differisce solo per maiuscole e minuscole dirà sempre che l'utenza è già in uso.

Ciao, Ciro
ciao,grazie,
ok ho guardato come dici tu

http://php.net/manual/en/function.strtolower.php

ho visto qua

ma mi sorge un dubbio:
se io lo metto nella registrazione e uno si registra con
PIPPO, poi il nome nel db viene salvato come PIPPO o come pippo? questo per dire che poi se uno si registra PIPPO ma nel db si salva pippo minuscolo, poi nella pagina di login si dovra loggare come pippo minuscolo o anche se lo mette maiuscolo sta a posto?
oppure dovrei mettere il lowercase anche per le variabili del login?
 
Come ti dicevo, SIA in fase di login, SIA in fase di registrazione devi fare il lowercase dell'username. In questo modo, quando l'utente inserirà PIPPO o Pippo tu lo riconoscerai sempre come pippo, lo registrerai come tale nel db e quando fari il login perte sarà sempre pippo.

Per farlo è sufficiente che la stringa username ricevuta nel form di registrazione la trasformi subito in lowercase(username) cioè diverrà pippo e quando si autentica (registrazioen già effettuata) fai lo stesso.
In questo modo risolvi, con due istruzioni, tutti i tuoi problemi.

Se non sono stato chiaro fammi sapere..

Ciao, Ciro
 
ok grazie ora provo ;) se ho dubbi chiedo

edit

ok nel login ho messo

$username = @$_POST['txt_username'];
$password = @$_POST['txt_password'];
mb_strtolower("$username",'UTF-8');

nella registrazione ho messo uguale
$username = $_POST['txtUsername'];
mb_strtolower("$username",'UTF-8');

cioè praticamente in un form metto i dati
in un altra pagina li prelevo prima, e poi li trasformo in lowercase
giusto cosi? ù_ù
ora provo XD
 
Ultima modifica:
devo avere qualche errore perche ora mi fa registrazioni infinite
cioè

se io mi registro con utente lo inserisce nel db coi dati
se poi registro un altro account con nome utente lo inserisce lo stesso ma non dovrebbe! dovrebbe dare username in uso O_O

come variabili ho fatto

$username = $_POST['txtUsername'];
$lowUsername = mb_strtolower("$username",'UTF-8');

e la query è

PHP:
 $selectQuery = mysql_query("SELECT * FROM tbl_users");
                          $records = mysql_fetch_array($selectQuery);
                          if($lowUsername == $records['user_name'])
                           {
                             echo("Username già in uso<br>");
                             $flag = 1;
                           }
                           [...]
                           }

mi sembra di aver capito, provando, che cè un problema nel riconoscere se il nome è gia in uso
cioè
nel db ho un utente (mio) registrato. Con nome,pass,email.
Se mi registro con la stessa email mi da email in uso
però se mi registro con lo stesso nome NON mi da nome in uso
se mi registro con lo stesso nome e la stessa mail mi da email gia in uso, ma il nome NON me lo da in uso...

la query per l'appunto è

PHP:
// seleziono i dati dalla tabella utenti		
$selectQuery = mysql_query("SELECT * FROM tbl_users");
//array dati
$records = mysql_fetch_array($selectQuery);
come tabella ho tbl_users come campi interessati ho user_name, user_pass, email

controllo nome in uso:
PHP:
// rendo lo username minuscolo 
$lowUsername = mb_strtolower("$username",'UTF-8');
// se username in uso
if($lowUsername == $records['user_name']) {
echo("Username già in uso<br>");
$flag = 1;
}

controllo mail in uso: (questo funziona)
PHP:
// rendo email minuscola
$lowEmail = mb_strtolower("$email",'UTF-8');
// se email in uso
if($lowEmail == $records['email']) {
echo("E-mail gia in uso<br>");
$flag = 1;
}

altro problema molto strano O.o

avendo 2 utenti nel db, ho provato a registrarne uno nuovo con la stessa mail con cui è registrato il primo, e mi da email in uso e tutto ok. Se però metto la mail del secondo non mi da mail in uso o.O e me le registra lo stesso
 
Ultima modifica:
ora ho trovato un modo per risolvere

però ho un nuovo problema

PHP:
$query = mysql_query("SELECT user_name FROM tbl_users WHERE user_name != 11");
$records = mysql_fetch_array($query);
// conto i nomi nel db
$query = mysql_query("SELECT COUNT(user_name) AS nomiMax FROM tbl_users");
$arrayNomi = mysql_fetch_array($query);
$nomiMax = $arrayNomi['nomiMax'];
for($i=0;$i<$nomiMax;$i++) {
echo "PROVA " . $records[$i];
}

ho provato a fare in modo che mi stampi tutti i nomi (user_name) nel db
però mi stampa solo il primo
ho notato che se nella prima query dove ho il SELECT metto SELECT * FROM anziche SELECT user_name FROM nel ciclo FOR mi fa poi l'echo delle varie colonne ovvero
ID - Nome - Pass - email - ecc ecc

quindi mi sembra di capire che mi agisce in colonna
cioè se ho una tabella cosi

ID - NOME - PASS
1 - utente - ciao
2 - user - lol

nell'array mi va a prendere NON utente e user, ma 1, utente, ciao
cioè agisce a colonne ma a me serve che prenda solo il nome .-.
 

Discussioni simili