beste mensen,

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:

<?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);

?>


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:

<td colspan="2">
<div align="center">
<?php
$remarks=$_GET['remarks'];
if ($remarks==null and $remarks=="")
{
echo '<b>Registreer je hier:</b>' ;
}


?>
</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?
Hallo denis v duin,

Als ik wil controleren of er al een naam in de database staat doe ik dit:
<?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
}
?>
en om te controleren of alles wel is ingevuld doe ik:

<?php
if( !$_POST['fname'] || !$_POST['lname']|| !$_POST['mname']|| !$_POST['adress']|| !$_POST['contact']|| !$_POST['pic'] || !$_POST['username'] || || !$_POST['wachtwoord']|| )
{
// Als iets niet is ingevuld
}else{
//Als alles is ingevuld}
?>
Ik weet niet of je verder nog advies wilt maar je code is lek.
gebruik mysql_real_escape_string() om je database tegen SQL injectie te beveiligen.

voorbeeld
<?php
$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:

<?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>
Maak de gebruikersnaam UNIQUE in de database en je hebt geen last van dubbele namen.
Liever geen backtics in de query gebruiken.

@Frank: Ook geen beveiliging? En waar komt $username vandaan?
script is niet compleet san. die username heb ik even overgenomen van Nick.
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
Bedankt allemaal! Beveiliging ga ik naar kijken!

het is eigenlijk iets kleins voor een groepje mede studenten om met elkaar de bestanden te kunnen delen.

Reageren