Problema...

Secţiune dedicată începatorilor.

Moderatori: Moderatori, Start Moderator

HelloWorld
PHPRomania Supporter
Mesaje: 17
Membru din: Joi Noi 20, 2014 12:38 am

Problema...

Mesajde HelloWorld » Mar Ian 27, 2015 12:24 am

Salut , cum fac ca utilizatorii sa nu poata pune acelasi nume de 2 ori?
Ce unde ar trebii sa pun?

Cod: Selectaţi tot

<?php   
include "db.php";
if (isset($_POST['submit']));
$username=$_POST['username'];
$password=$_POST['password'];
$email=$_POST['email'];
$reg=mysql_query("INSERT INTO users(username, password, email) VALUES ('$username', '$password', '$email')");
if($reg)
{
   echo "Ai fost inregistrat " .$username.  ", bun venit! ";
}else
{
   echo "A intervenit o problema.";

}
?>



Avatar utilizator
iluc
Junior Member
Mesaje: 39
Membru din: Dum Mai 29, 2011 11:49 pm
Localitate: Focsani
Contact:

Re: Problema...

Mesajde iluc » Mar Ian 27, 2015 12:47 am

Poti sa te folosesti de functia mysql_num_rows(), ca sa verifici daca mai ai acel username in baza de date.

Cod: Selectaţi tot

<?php   
include "db.php";
if (isset($_POST['submit']));
$username=$_POST['username'];
$password=$_POST['password'];
$email=$_POST['email'];
// verifici daca ai acelasi username in baza de date
$c = mysql_query("SELECT username FROM users WHERE username = '$username'");
// mysql_num_rows() este functia care il gaseste
$num_rows = mysql_num_rows($c);
// conditia este sa nu il mai avem, atunci mergem mai departe
if ($num_rows == 0 )
}
  $reg=mysql_query("INSERT INTO users(username, password, email) VALUES ('$username', '$password', '$email')");
  if($reg)
  {
     echo "Ai fost inregistrat " .$username.  ", bun venit! ";
  }else
  {
     echo "A intervenit o problema.";

  }
} else {
  echo "Acest username a mai fost folosit, va rugam sa alegeti alt username.";
}
?>

takedown
Average Member
Mesaje: 153
Membru din: Joi Feb 07, 2013 8:50 pm
Contact:

Re: Problema...

Mesajde takedown » Mar Ian 27, 2015 12:58 am

Recomand sa folositi MySQLi sau PDO, MySQL e outdated.

Avatar utilizator
ispas
Senior Member
Mesaje: 655
Membru din: Mar Sep 14, 2010 1:35 pm
Localitate: Craiova
Contact:

Re: Problema...

Mesajde ispas » Mar Ian 27, 2015 7:34 am

de acord cu takedown, eu am trecut acum o luna de zile la pdo.

beng
Junior Member
Mesaje: 34
Membru din: Mar Noi 12, 2013 7:15 pm
Localitate: Bucuresti
Contact:

Re: Problema...

Mesajde beng » Mar Ian 27, 2015 4:35 pm

Si nu uita ca sa securizezi orice continut care vine de la user in baza de date, pentru a evita SQL Injection. E sfant.
Poti incerca la alocarea lui $_POST['username'] in variabila (variabil pt toate datele venite de la useri care ajung prin baza de date) sa-i aplici un $mysqli->real_escape_string(strip_tags($_POST['username']));
Nu uita ca inainte de a face treaba asta sa-l definesti pe $mysqli, realizand conexiunea la baza de date. Un exemplu ai aici:
$mysqli = new mysqli("localhost", "user", "parola", "bazadedate");

Spor!

ViezuREX
Senior Member
Mesaje: 502
Membru din: Joi Dec 13, 2012 1:35 pm

Re: Problema...

Mesajde ViezuREX » Joi Ian 29, 2015 5:06 pm

Poti face un index UNIQUE pe coloana din MySQL si atunci, daca un username exista deja, codul va intra pe ramura ELSE.
Este drept ca utilizatorul nu primeste un repuns foarte clar cu privire la problema care a intervenit.

P.S. Treci la MySQLi sau PDO


Înapoi la “PHP Incepători”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 40 vizitatori