Controleren of naam al bestaat en of velden niet leeg zijn
Voor mijn site die ik met wat mede studenten van de pabo wil runnen moet je je registreren. Nu werkt dit goed alleen ik wil er voor de zekerheid bij dat hij controleerd of de naam al wordt gebruikt en of wel alle velden zijn ingevuld?
Nu stuur ik alles door naar mysql met:
Quote:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
session_start();
include('connection.php');
$fname=$_POST['fname'];
$lname=$_POST['lname'];
$mname=$_POST['mname'];
$address=$_POST['address'];
$contact=$_POST['contact'];
$pic=$_POST['pic'];
$username=$_POST['username'];
$password=$_POST['password'];
mysql_query("INSERT INTO member(fname, lname, gender, address, contact, picture, username, password)VALUES('$fname', '$lname', '$mname', '$address', '$contact', '$pic', '$username', '$password')");
header("location: index.php?remarks=success");
mysql_close($con);
?>
session_start();
include('connection.php');
$fname=$_POST['fname'];
$lname=$_POST['lname'];
$mname=$_POST['mname'];
$address=$_POST['address'];
$contact=$_POST['contact'];
$pic=$_POST['pic'];
$username=$_POST['username'];
$password=$_POST['password'];
mysql_query("INSERT INTO member(fname, lname, gender, address, contact, picture, username, password)VALUES('$fname', '$lname', '$mname', '$address', '$contact', '$pic', '$username', '$password')");
header("location: index.php?remarks=success");
mysql_close($con);
?>
Kan ik hiervoor controleren of alles is ingevuld en of er niet al een account bestaat met die naam die jij invult? En zoja hoe stuur ik dat terug en laat ik dat boven dit tabel weergeven:
Quote:
<td colspan="2">
<div align="center">
</div></td>
</tr>
<tr>
<td><div align="center">Gebruikersnaam:</div></td>
<td><input type="text" name="username" /></td>
</tr>
<tr>
<td><div align="center">Wachtwoord:</div></td>
<td><input type="PASSWORD" name="password" /></td>
</tr>
<tr>
<td><div align="center"></div>Registreer:</td>
<td><input name="submit" type="submit" value="Submit" /></td>
</tr>
<div align="center">
Code (php)
</div></td>
</tr>
<tr>
<td><div align="center">Gebruikersnaam:</div></td>
<td><input type="text" name="username" /></td>
</tr>
<tr>
<td><div align="center">Wachtwoord:</div></td>
<td><input type="PASSWORD" name="password" /></td>
</tr>
<tr>
<td><div align="center"></div>Registreer:</td>
<td><input name="submit" type="submit" value="Submit" /></td>
</tr>
Groeten,
Dennis v Duin?
Als ik wil controleren of er al een naam in de database staat doe ik dit:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
$sql=mysql_query("SELECT * FROM `member` WHERE username='".$username."'");
$check=mysql_num_rows($sql);
if($check!=1)
{
//als de gebruikersnaam nog niet in de database staat
}else{
echo "Deze gebruikersnaam bestaat al"; // als gebruikersnaam al bestaat
}
?>
$sql=mysql_query("SELECT * FROM `member` WHERE username='".$username."'");
$check=mysql_num_rows($sql);
if($check!=1)
{
//als de gebruikersnaam nog niet in de database staat
}else{
echo "Deze gebruikersnaam bestaat al"; // als gebruikersnaam al bestaat
}
?>
en om te controleren of alles wel is ingevuld doe ik:
gebruik mysql_real_escape_string() om je database tegen SQL injectie te beveiligen.
voorbeeld
Code (php)
1
2
3
4
2
3
4
<?php
$fname = mysql_real_escape_string($_POST['fname']);
// en zo ook voor de andere database velden
?>
$fname = mysql_real_escape_string($_POST['fname']);
// en zo ook voor de andere database velden
?>
Daarnaast zijn de mysql_* functies oud. Stap liever over op mysqli_* functies of op PDO.
@nick, sorry maar ik vind je code niet helemaal logisch. kijk hier:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?php
function Validate()
{
$error = array();
if(strlen($_POST['username') < 2)
$error['username'] = 'Geen geldige voornaam ingevuld.';
$result = mysql_query("SELECT * FROM `member` WHERE username='".$username."'");
if(mysql_num_rows($result) > 0)
$error['username'] = "Deze gebruikersnaam bestaat al";
// nog meer velden om te controleren
return $error;
}
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$error = Validate();
if(count($error) == 0)
{
// success! verwerk formulier.
header('Location: bedankt.html');
}
}
?>
<form action="" method="post">
//......
</form>
function Validate()
{
$error = array();
if(strlen($_POST['username') < 2)
$error['username'] = 'Geen geldige voornaam ingevuld.';
$result = mysql_query("SELECT * FROM `member` WHERE username='".$username."'");
if(mysql_num_rows($result) > 0)
$error['username'] = "Deze gebruikersnaam bestaat al";
// nog meer velden om te controleren
return $error;
}
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$error = Validate();
if(count($error) == 0)
{
// success! verwerk formulier.
header('Location: bedankt.html');
}
}
?>
<form action="" method="post">
//......
</form>
Gewijzigd op 21/09/2013 15:59:07 door Frank Nietbelangrijk
Liever geen backtics in de query gebruiken.
@Frank: Ook geen beveiliging? En waar komt $username vandaan?
Ik zou vandaag de dag lekker werken met het email adres van de gebruiker als loginnaam, net als hier op php hulp. dan heb je zowiezo al veel minder last van dubbele namen
het is eigenlijk iets kleins voor een groepje mede studenten om met elkaar de bestanden te kunnen delen.