PHP formuliertje

Status
Niet open voor verdere reacties.

Bertsjuhn

Gebruiker
Lid geworden
15 jul 2008
Berichten
75
Hey Luitjes,

Ik heb dit form gemaakt..
Maar wat ik ook invul krijg altijd dat de gebruikersnaam al bestaat.
Wat doe ik fout????

(ook iemand een idee hoe ik een foto kan laten kiezen en deze koppelen in de database?)

Code:
<html>
<head>
<title></title>
<link rel="stylesheet" content="text/css" href="../groeves/style.css">
<style type="text/css">
body {
background-color: transparent;
}
</style>
</head>
<body>
<?
require ("config.php");

if ($_POST["submit"])
	{
	$naam = $_POST['naam'];
	$achternaam = $_POST['achternaam'];
	$email = $_POST['email'];
	$geslacht = $_POST['geslacht'];
	$gebruikersnaam = $_POST['gebruikersnaam'];
	$wachtwoord = $_POST['wachtwoord'];
	$wachtwoord2 = $_POST['wachtwoord2'];
	$geactiveerd = $_POST['geactiveerd'];
	$beheerder = $_POST['beheerder'];
	$table = "members";
	$fields = "naam,achternaam,email,geslacht,gebruikersnaam,wachtwoord,geactiveerd,beheerder";
	$values = "'$naam','$achternaam','$geslacht','gebruikersnaam','wachtwoord','0','0''";
	
	if (($naam == "") or ($achternaam == "") or ($gebruikersnaam == "") or ($wachtwoord == "") or( $wachtwoord2 == ""))
	{
		echo "<b>Vul alle verplichte velden in!</b>";
	}
	else if ($wachtwoord != $wachtwoord2)
	{
		echo"<b>De wachtwoorden zijn niet gelijk aan elkaar!!</b>";
	}
	else
	{
		$query = "SELECT memberid FROM members WHERE gebruikersnaam = '.$gebruikersnaam.'";
		$result = mysql_query($query);
    	if($result)
		{
			echo "<b>Deze gebruiker bestaat al, kies een andere naam!</b>";
		}
		else
		{
		  	$insert = mysql_query("INSERT INTO $table ($fields) VALUES($values)") or die(mysql_error());
		  	$result = mysql_query($query);
			echo "<b>Bedankt voor het aanmelden, een beheerder zal je inschrijving checken en je toegang geven</b>";
		}
	}
}
else 
{
?>
<H2>Aanmelden</H2>
Velden met een * zijn verplicht...
<form method="post" target="if_aanmelden">
  <input type="hidden" name="submit" value="1" >
  Naam:<br>
  <input type="text" name="naam" size="30"> *<br>
  Achternaam:<br>
  <input type="text" name="achternaam" size="30"> *<br>
  Email adres:<br>
  <input type="text" name="email" size="30"> *<br>
  <br>
  Geslacht:<br>
  <select size="1" name="geslacht">
  <option value="Man">Man</option>
  <option value="Vrouw">Vrouw</option>
  <option value="Weet ik niet">Weet ik niet</option>
  </select><br>
  <br>
  <br>
  Gewenste gebruikersnaam:<br>
  <input type="text" name="gebruikersnaam" size="25"> *<br>
  Wachtwoord:<br>
  <input type="password" name="wachtwoord" size="12" maxlength="12"> *<br>
  Wachtwoord [ bevestig ]:<br>
  <input type="password" name="wachtwoord2" size="12" maxlength="12"> *<br>
  <input name="submit2" type="submit" value="Aanmelden" > <input name="reset" type="reset" value="Wis velden" ></p>
</form>
<iframe src="../groeves/blank.html" width="100%" height="50"  scrolling="no" frameborder="0" name="if_aanmelden" allowtransparency="true"></iframe>
<?
}
?>
</body>
</html>
 
Je checkt of de query gelukt is, niet of er resultaat is.

Daarnaast is dit niet echt een hele strakke code. Enkele opmerkingen (en er zijn er veel meer te verzinnen):

- Variabelen van $_POST overzetten naar iets anders is zinloos, kost geheugen en maakt het niet overzichtelijker.
- Input dien je te beveiligen met mysql_real_escape_string()
- Checken of een username uniek is doe je door correcte foutafhandeling toe te passen. Een UNIQUE-constraint op 'username' en de fout 1062 afvangen. Dan bestaat ie al.
- if($_POST['submit']) is fout, dat moet if($_SERVER['REQUEST_METHOD'] == 'POST') zijn.

En dat is nog maar het begin. ;)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan