Verifica daca exista numele in baza de date

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
cadou
Mesaje:328

Verifica daca exista numele in baza de date

Am un formular de inregistrare merge perfect, dar doresc sa verifice daca exista in baza de date numele , si daca exista sa zica " Numele exista , foloseste altul".

Cod: Selectaţi tot

<?php
ini_set('display_errors',1);
error_reporting(E_ALL);

// Se defineste un Header pt. a utiliza setul de caractere cu format UTF-8

$mesaj = '';             // Variabila folosita pt. mesajul ce va fi afisat pt. utilizator

// Se verifica daca sunt primite datele de la formular
if($_SERVER['REMOTE_ADDR']);
if (isset($_POST['nume']) && isset($_POST['parola']) && isset($_POST['idm']) && isset($_POST['select1']) && isset($_POST['select2']) && isset($_POST['zi_nastere']) && isset($_POST['luna_nastere']) && isset($_POST['an_nastere']) && isset($_POST['sex']) && isset($_POST['stare']) && isset($_POST['interes']) && isset($_POST['descriere'])) {

// Se filtreaza datele pt. eliminare posibile spatii exterioare si tag-uri
$_POST = array_map("trim", $_POST);
$_POST = array_map("strip_tags", $_POST);

// Se verifica daca "magic_quotes_gpc()" este setat ON
// Daca e ON, se aplica stripslashes() pentru a nu se adauga de 2 ori '\' cand va fi aplicat "mysql_real_escape_string()"
if(get_magic_quotes_gpc()) { $_POST = array_map("stripslashes", $_POST); }

// Se verifica daca au fost completate corect toate campurile
// Daca au fost completate le preia in variabile, in caz contrar seteaza o variabila tip Array cu mesaj de eroare

// Verifica daca Numele are cel putin 3 caractere si maxim 12
if(strlen($_POST['nume'])>2 && strlen($_POST['nume'])<13) $nume = $_POST['nume'];
else $eroare[] = 'Numele de <b>Utilizator</b> trebuie sa contina intre 3 si 12 caractere';

// Verifica daca parola are cel putin 3 caractere si maxim 50
if(strlen($_POST['parola'])>2 && strlen($_POST['parola'])<51) $parola = $_POST['parola'];
else $eroare[] = '<b>Parola</b> trebuie sa contina intre 3 si 50 caractere';

// Verifica daca id-ul de messenger are cel putin 5 caractere si maxim 50
if(strlen($_POST['idm'])>4 && strlen($_POST['idm'])<51) $idm = $_POST['idm'];
else $eroare[] = '<b>Id-ul de messenger</b> trebuie sa contina intre 5 si 50 caractere';

// Verifica daca a fost selectata o valoare pt. 'tara'
if(strlen($_POST['select1'])>2) $select1 = $_POST['select1'];
else $eroare[] = 'Nu ai ales <b>Tara si Orasul</b>';

// Verifica daca a fost selectata o valoare pt. 'oras'
if(strlen($_POST['select2'])>2) $select2 = $_POST['select2'];
else $eroare[] = 'Nu ai ales <b>Orasul</b>';

// Verifica daca a fost selectata o valoare pt. 'ziua de nastere'
if(strlen($_POST['zi_nastere'])>1) $zi_nastere = $_POST['zi_nastere'];
else $eroare[] = 'Nu ai ales <b>Ziua de nastere</b>';

// Verifica daca a fost selectata o valoare pt. 'luna de nastere'
if(strlen($_POST['luna_nastere'])>2) $luna_nastere = $_POST['luna_nastere'];
else $eroare[] = 'Nu ai ales <b>Luna de Nastere</b>';

// Verifica daca a fost selectata o valoare pt. 'anul de nastere'
if(strlen($_POST['an_nastere'])>2) $an_nastere = $_POST['an_nastere'];
else $eroare[] = 'Nu ai ales <b>Anul de Nastere</b>';

// Verifica daca a fost selectata o valoare pt. 'sex'
if(strlen($_POST['sex'])>2) $sex = $_POST['sex'];
else $eroare[] = 'Nu ai ales <b>Sexul</b>';

// Verifica daca a fost selectata o valoare pt. 'stare'
if(strlen($_POST['stare'])>2) $stare = $_POST['stare'];
else $eroare[] = 'Nu ai ales <b>Situatia amoroasa</b>';

// Verifica daca a fost selectata o valoare pt. 'interes'
if(strlen($_POST['interes'])>2) $interes = $_POST['interes'];
else $eroare[] = 'Nu ai ales <b>Interesul</b>';

// Verifica daca descrierea are cel putin 10 caractere si maxim 200
if(strlen($_POST['descriere'])>10 && strlen($_POST['descriere'])<201) $descriere = $_POST['descriere'];
else $eroare[] = '<b>Descrierea</b> trebuie sa contina intre 10 si 200 caractere';

// Daca nu exista nici un mesaj de eroare, filreaza datele cu mysql_real_escape_string() si le adauga in baza de date
// Altfel, in cazul vreunei erori, adauga in variabila $mesaj
if (!isset($eroare)) {
include('conectare.php');                // Include fisierul pt. conectare-selectare baza de dat

// Se aplica functia de filtrare mysql_real_escape_string()

$nume = mysql_real_escape_string($nume);
$parola = mysql_real_escape_string(md5($parola));
$idm = mysql_real_escape_string($idm);
$tara = mysql_real_escape_string($select1);
$oras = mysql_real_escape_string($select2); // la fel si la oras (nu modifica nici in sql)
$zi_nastere = mysql_real_escape_string($zi_nastere);
$luna_nastere = mysql_real_escape_string($luna_nastere);
$an_nastere = mysql_real_escape_string($an_nastere);
$sex = mysql_real_escape_string($sex);
$stare = mysql_real_escape_string($stare);
$interes = mysql_real_escape_string($interes);
$descriere = mysql_real_escape_string($descriere);
$ipreg = $_SERVER['REMOTE_ADDR'];
setlocale(LC_TIME, array('ro.utf-8', 'ro_RO.UTF-8', 'ro_RO.utf-8', 'ro', 'ro_RO', 'ro_RO.ISO8859-2'));
date_default_timezone_set('Europe/Bucharest');
$dtreg = strftime('%d-%B-%Y ora %H:%M:%S');
$ipvisit = $_SERVER['REMOTE_ADDR'];
setlocale(LC_TIME, array('ro.utf-8', 'ro_RO.UTF-8', 'ro_RO.utf-8', 'ro', 'ro_RO', 'ro_RO.ISO8859-2'));
date_default_timezone_set('Europe/Bucharest');
$dtvisit = strftime('%d-%B-%Y ora %H:%M:%S');


// Acum se adauga mai in siguranta aceste date in MySQL
$sql = "INSERT
INTO `membri` (`nume`, `parola`, `idm`, `tara`, `oras`, `zi_nastere`,
`luna_nastere`, `an_nastere`, `sex`, `stare`, `interes`, `descriere`,
`ip_reg`, `dtreg`) VALUES ('$nume', '$parola', '$idm', '$tara', '$oras', '$zi_nastere', '$luna_nastere', '$an_nastere', '$sex', '$stare', '$interes', '$descriere', '$ip_reg', '$dtreg')";
if (mysql_query($sql, $connect)) {
$mesaj = "<font size=5 color=green><b>Inregistrarea a fost efectuata cu succes. Acum te poti loga in contul tau</b>
</font><meta http-equiv='refresh' content='7; url=/' />";
$nume = 'exista'; $idm = 'idm exista';
} else $mesaj = '<font color="red">Datele nu au putut fi adaugate '. mysql_error(). '</font>';

mysql_close($connect);
}
else $mesaj = '<font color="red">'. implode('<br />', $eroare). '</font>';
}

echo $mesaj;
?>

MarPlo Mesaje:4343
Se face un simplu Select in tabelul din baza de date, dupa acel nume. Daca rezultatul contine vreun rand, inseamna ca e deja o inregistrare cu acel nume.
Cam asa:

Cod: Selectaţi tot

$sql = "SELECT `nume` FROM `nume_tabel` WHERE `nume`='$nume' LIMIT 1";
$rezultat = mysql_query($sql);
if (mysql_errno()) {
    echo "<br />". mysql_error(). "<br />";
}
if (mysql_num_rows($rezultat) > 0) {
    echo 'Numele exista , foloseste altul';
}
else {
  // Restul codului pt cazul cand numele nue inregistrat
}
 

cadou Mesaje:328
Desi imi da eroare si zice ca numele exista totusi se face inregistrarea.
Poate nu am inlocuit unde trebuie, uite aici am inlocuit.

Cod: Selectaţi tot

// ......................
    // Se aplica functia de filtrare mysql_real_escape_string()
  $sql = "SELECT `nume` FROM `test` WHERE `nume`='$nume' LIMIT 1";
    $rezultat = mysql_query($sql);
    if (mysql_errno()) {
        echo "<br />". mysql_error(). "<br />";
    }
    if (mysql_num_rows($rezultat) > 0) {
        echo 'Numele exista , foloseste altul';
    }
    else {
   $nume = mysql_real_escape_string($nume);
   $parola = mysql_real_escape_string(md5($parola));
    $idm = mysql_real_escape_string($idm);
// ...........
 

alexinio3d Mesaje:96
"Cadou" vad ca sti sa modifici cat de cat un script.
Daca te ajuta cu ceva iti dau fisierul meu de inregistrare care functioneaza .
Tu trebuie doar sa modifici ce vrei sa salvezi in baza de date si cum:

Fisierul de inregistrare care il vad toti :

Cod: Selectaţi tot

<form action="./succes.php" method="post">
<table align="center">
    <tr>
        <td><h5><font color="#FFF">Player:</h5></td><td align="right"><input name="username" placeholder="Nick Forum" type="text" size="30" maxlength="20" id="username" class="tbox" /></td>
    </tr>
    <tr>
        <td><h5><font color="#FFF">Parola:</h5></td><td align="right"><input name="password" placeholder="Alege o parola" type="password" size="30" maxlength="20" id="password" class="tbox" /></td>
    </tr>
    <tr>
        <td><h5><font color="#FFF">Email:</h5></td><td align="right"><input name="email" placeholder="your.email@yahoo.com / @gmail.com" type="text" size="30" maxlength="40" id="email" class="tbox" /></td>
    </tr>
    <tr>
        <td><h5><font color="#FFF">Echipa:</h5></td><td align="right"><input name="echipa" placeholder="Echipa aleasa" type="text" size="30" maxlength="40" id="echipa" class="tbox" /></td>
    </tr>
</table>
<center><h5><font color="#FFF">Un singur cont / echipa !</h5><input name="submit" type="submit" value="Inregistrare" class="btn btn-primary" /></center>
</form> 
Fisierul care iti introduce in baza de date tot ce doresti si ce sa complectat ( succes.php ) :

Cod: Selectaţi tot

<?php
// Variabile-----------------------
if(!isset($_POST['username'])){ 
    $username = htmlspecialchars($username);
} else { 
    $username = $_POST['username'];
} 

if(!isset($_POST['echipa'])){ 
    $echipa = htmlspecialchars($echipa);
} else { 
    $echipa = $_POST['echipa'];
}

if(!isset($_POST['password'])){ 
    $password = htmlspecialchars($password); 
} else { 
    $password = md5($_POST['password']);
}

if(!isset($_POST['email'])){ 
    $email = htmlspecialchars($email);
} else { 
    $email = $_POST['email'];
}


$date = date('d.m.Y');
$ora  = date('H:i');
// ---------------------------------
// Verificam daca userul,echipa,email exista in DB !
$verificare_username = "SELECT username FROM clasament_echipa WHERE username = '$username'";
$verificare_echipa = "SELECT echipa FROM clasament_echipa WHERE echipa = '$echipa'";
$verificare_email = "SELECT email FROM clasament_echipa WHERE email = '$email'";

$result_username = mysql_query($verificare_username);
$result_echipa = mysql_query($verificare_echipa);
$result_email = mysql_query($verificare_email);
if(empty($_POST['username']) == 0) { // Verificare daca ii specificat userul
                if(empty($_POST['echipa']) == 0) { // Verificare daca ii specificat echipa
                    if(empty($_POST['password']) == 0) { // Verificare daca ii specificat password
                        if(empty($_POST['email']) == 0) { // Verificare daca ii specificat email
                            if(mysql_num_rows($result_username) == 0) { // Verificare username
                                if(mysql_num_rows($result_email) == 0) { // Verificare email
                                        if(mysql_num_rows($result_echipa) == 0) { // Verificare echipa        
// Daca nu se gasesc in baza de date userul,echipa,email`ul atunci se introduc
mysql_query("INSERT INTO clasament_echipa (id, username, echipa, email, password, meciuri, victori, egaluri, infrangeri, goluri_date, goluri_luate, golaveraj, puncte, date, ora) 
    VALUES ('', '$username', '$echipa', '$email', '$password', '0', '0', '0', '0', '0', '0', '0', '0', '$date', '$ora')");
//Mesajul dupa ce sa verificat daca echipa,email,userul exista sau nu exista si ii adaugat
$mesaj = '<center><div class="alert alert-success">Contul a fost creat.<br /><br />Clasamentu il puteti vedea <a href="./clasament.php">aici</a><br />Pentru a vedea date despre echipa ta acceseaza urmatoru <a href="./conectare.php">link</a></div></center>';
}
else{ $mesaj = '<center><div class="alert alert-block"><h4>Warning!</h4>Echipa a fost folosita.Va rugam sa alegeti alta echipa.<br /><br />Intoarcete la pagina de <a href="./registre.php">inregistrare</a></div></center>'; }}
else{ $mesaj = '<center><div class="alert alert-block"><h4>Warning!</h4>Email-ul a fost folosit.Va rugam sa alegeti alt email.<br /><br />Intoarcete la pagina de <a href="./registre.php">inregistrare</a></div></center>'; }}
else{ $mesaj = '<center><div class="alert alert-block"><h4>Warning!</h4>User-ul a fost folosit.Va rugam sa alegeti alt user.<br /><br />Intoarcete la pagina de <a href="./registre.php">inregistrare</a></div></center>'; }}
else{ $mesaj = '<center><div class="alert alert-error"><h4>Eroare:</h4> Nu ati specificat email!<br /><br />Intoarcete la pagina de <a href="./registre.php">inregistrare</a></div></center>';}}
else{ $mesaj = '<center><div class="alert alert-error"><h4>Eroare:</h4> Nu ati specificat password!<br /><br />Intoarcete la pagina de <a href="./registre.php">inregistrare</a></div></center>';}}
else{ $mesaj = '<center><div class="alert alert-error"><h4>Eroare:</h4> Nu ati specificat echipa!<br /><br />Intoarcete la pagina de <a href="./registre.php">inregistrare</a></div></center>';}}
else{ $mesaj = '<center><div class="alert alert-error"><h4>Eroare:</h4> Nu ati specificat username!<br /><br />Intoarcete la pagina de <a href="./registre.php">inregistrare</a></div></center>';}

print( $mesaj );
?>
Sper ca stii modifica, daca nu, scrie cam ce vrei sa ai in pagina de inregistrare si iti fac eu.
Siteuri create / configurate de mine :
SilvoProject.Ro ( Magazin Online ) : SilvoProject.Ro
TreiSute.Ro ( Comunitate de gaming ) : TreiSute.Ro

cadou Mesaje:328
Am sa incerc ceea ce mi-ai dat ca sa il modific, dar am facut la actualul meu script urmatoarele modificari:

Cod: Selectaţi tot

$user_bd = mysql_query("SELECT * FROM test");
$user_baza = mysql_fetch_array($user_bd);
 
Apoi am facut asa :

Cod: Selectaţi tot

// Verifica daca Numele este in baza de date
if(strlen($_POST['nume']) == $user_baza['nume']);
else $eroare[] = 'Acest nume de <b>Utilizator</b> exista in baza de date';
 
Dar orice nume as pune zice ca exista in baza de date.
Chiar daca exista in baza de date, chiar daca nu exista in baza de date.

Edit:
In tabelul din baza de date sa am coloanele:

Cod: Selectaţi tot

nume - sa fie unic pe site
parola
idm  - sa fie unic pe site 	
tara
oras
zi_nastere
luna_nastere
an_nastere 
sex
stare 
interes
descriere
referal 
ipreg 
dtreg 
ipvisit 
dtvisit

Subiecte similare