als ik de preg_match formule in een kleine php file test is de notatie correct, dat wil zeggen dat ik alleen maar gebruikersnamen wil toestaant die bestaan uit letters en cijfers.
Echter wanneer ik deze toepas in mij code (aanmeldpagina) lijkt het alsof de code de controle negeert. Ook gebruikersnamen met bijvoorbeeld een & in de tekst komen er gewoon doorheen.
De hamvraag is waar dit nu aan ligt, waarschijnlijk een foutje in de if routine, maar ik zie hem niet!!!
wie kan me helpen?
alvast bedankt,
groet,
Marc
<?php
// als het formulier nog niet is ingevuld
if(!isset($_POST['submit'])) {
?>
<h3>Aanmeldpagina</h3>
<p> </p>
<p>U heeft nog geen eigen startpagina, u kunt zich hier registreren.</p>
<p> </p>
<form action="aanmeld.php" method="post">
<table width="500" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="200"><p>Gebruikersnaam</p></td>
<td width="300"><input type="text" name="naam" size="40" maxlength="20" /></td>
</tr>
<tr>
<td><p>Wachtwoord</p></td>
<td><input type="password" name="wacht1" size="40" maxlength="32" /></td>
</tr>
<tr>
<td><p>Wachtwoord opnieuw</p></td>
<td><input type="password" name="wacht2" size="40" maxlength="32" /></td>
</tr>
<tr>
<td><p>Voornaam</p></td>
<td><input type="text" name="voornaam" size="40" maxlength="20" /></td>
</tr>
<tr>
<td><p>Achternaam</p></td>
<td><input type="text" name="achternaam" size="40" maxlength="20" /></td>
</tr>
<tr>
<td><p>Email adres</td>
<td><input type="text" name="email" size="40" maxlength="128" /></td>
</tr>
</table>
<br />
<input type="submit" name="submit" value="Registreer" />
</form>
<?php
// formulier gepost, kijk of alle velden ook daadwerkelijk zijn ingevuld
} elseif(trim($_POST['naam']) <> "" && trim($_POST['wacht1']) <> "" && trim($_POST['voornaam']) <> "" && trim($_POST['achternaam']) <> "" && trim($_POST['email']) <> "") {
// formulier gepost, check op geldige gebruikersnaam
$naam=$_POST['naam'];
if(preg_match('/^[a-zA-Z0-9]+$/', $naam)) {
// formulier ingevuld - kijk eerst of de gebruiker al bestaat
$naam = $_POST['naam'];
$vnaam = $_POST['voornaam'];
$anaam = $_POST['achternaam'];
$res = mysql_query("SELECT * FROM users WHERE gebrnaam='".$naam."'") or die(mysql_error());
if(mysql_num_rows($res) == 0) {
// geen resultaten - dit is wat we willen
// kijk of de opgegeven wachtwoorden overeenkomen
if(!strcmp($_POST['wacht1'], $_POST['wacht2'])) {
// wachtwoorden komen overeen - sla alle gegevens op in de database
// naam is al opgehaald uit het formulier
$wacht = md5($_POST['wacht1']); // versleuteld wachtwoord
$email = $_POST['email'];
mysql_query("INSERT INTO users (gebrnaam, wwoord, vnaam, anaam, email) VALUES ('".$naam."','".$wacht."','".$vnaam."','".$anaam."','".$email."')") or die(mysql_error());
// geef melding weer
?>
<h3>Registratie geslaagd!</h3>
<p> </p>
<p>Bedankt voor uw registratie.</p>
<p> </p>
<p>
<meta http-equiv="refresh" content="10;url=http://<?=$naam?>.blommetje.nl/index" />
<a href="http://<?=$naam?>.blommetje.nl/index">Klik hier om naar uw startpagina te gaan.</a></p>
<p> </p>
<br />
<?php
} else {
// wachtwoorden komen niet overeen
?>
<p>De twee opgegeven wachtwoorden zijn niet hetzelfde.<br />
Druk op de "back" knop van je browser en voer twee identieke wachtwoorden in.</p>
<br />
<?php
}
} else {
// er bestaat al een gebruiker met deze naam
?>
<p>Er bestaat al een gebruiker met deze naam.<br />
Druk op de "back" knop van je browser en geef een andere naam op.</p>
<br />
<?php
}
} else {
// ongeldige gebruikersnaam
?>
<p>Gebruikersnaam is ongeldig.<br />
Druk op de "back" knop van je browser en geef een andere naam op.</p>
<br />
<?php
}
} else {
// sommige velden zijn niet ingevuld
?>
<p>Alle velden dienen ingevuld te worden.<br />
Druk op de "back" toets en vul in alle velden wat in.</p>
<br />
<?php
}
?>
knop om dit te doen.