Kan iemand vertellen wat ik fout heb in het volgende script:

<?

require("config.php");

// Verwijder deze comment en de onderstaande regel als je een eigen stylesheet gebruikt...
echo "<link rel=\"stylesheet\" content=\"text/css\" href=\"style.css\">";

if(!$_POST['submit']){
?>
Velden met een * zijn verplicht...
<form method="POST" action="<? echo $PHP_SELF ?>">
<input type="hidden" name="submit" value="1">
Naam:<br>
<input type="text" name="naam" size="30"> *<br>
Email adres:<br>
<input type="text" name="email" size="30"> *<br>
Homepage:<br>
<input type="text" name="homepage" size="30" value="http://"><br>
Woonplaats:<br>
<input type="text" name="woonplaats" size="30"><br>
Geboortedatum ( dd-mm-jjjj ):<br>
<input type="text" name="geb1" size="2" maxlength="2"> -
<input type="text" name="geb2" size="2" maxlength="2"> -
<input type="text" name="geb3" size="4" maxlength="4"><br>
Hobby's:<br>
<textarea name="hobbys" rows="3"></textarea><br>
Favo drankje(s):<br>
<input type="text" name="drank"><br>
Favo artiest(en):<br>
<input type="text" name="artiest"><br>
Favo film:<br>
<input type="text" name="film"><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>
Relatie:<br>
<select size="1" name="relatie">
<option value="1">Ja</option>
<option value="0">Nee</option>
</select><br>
Privé- berichten:<br>
<select size="1" name="pm">
<option value="1">Aan</option>
<option value="0">Uit</option>
</select><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 type="submit" value="Aanmelden"> <input type="reset" value="Wis velden"></p>
</form>
<?
}
else{
$query = mysql_query("SELECT * FROM members WHERE gebruikersnaam = '$gebruikersnaam'");
$result = mysql_num_rows($query);

if($result){

?>

Deze gebruikersnaam is al in gebruik<br><br>
<a href="javascript:history.go(-1)">Ga terug</a>

<?
}
else{
if($naam AND $email AND $gebruikersnaam AND $wachtwoord){

if($wachtwoord!=$wachtwoord2){
echo "De wachtwoorden zijn niet gelijkt aan elkaar";
}
else{
$geboortedatum = "$geb1-$geb2-$geb3";

$tekens=array("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z");
$activeringscode;
for($c = 0; $c < 12; $c++){
srand((double)microtime() * 100000000000000);
$pass = $tekens[rand(0, 62)];
$activeringscode=$activeringscode.$pass;
}

if($actmail=="1"){
$activeringscode = 0;
}
elseif($actmail=="2"){
$activeringscode = 1;
}

mysql_query("INSERT INTO members (gebruikersnaam,wachtwoord,naam,email,homepage,geboortedatum,woonplaats,favodrankje,favoartiest,favofilm,hobbys,geslacht,relatie,geactiveerd,pm) VALUES ('$gebruikersnaam','$wachtwoord','$naam','$email','$homepage','$geboortedatum','$woonplaats', '$drank', '$artiest','$film','$hobbys','$geslacht','$relatie','$activeringscode','$pm')") or die(mysql_error());

$bericht = "Via onze website heb jij (als het goed is) een aanmeldingsformulier ingevuld waarmee je een lid van onze
website wordt, als dit niet het geval is kun je dit mailtje het beste verwijderen.\n\nAls je je wel wilt aanmelden voor een
account op onze website moet je op de onderstaande url klikken om je account te activeren:\n\n
<a href=\"$script_url/activeer.php?activate=$activeringscode\">$script_url/activeer.php?activate=$activeringscode</a>\n\nMet vriendelijke groet
Webmaster $webmaster_url";

if($actmail=="1"){
mail("$webmaster_email","Activeer nu je account $naam !","$bericht");
echo "De aanmelding is succesvol gelukt, er word nu een mailtje verstuurd aan <b>$email</b> waarin de activerings url staat...";
}
elseif($actmail=="2"){
echo "Je account is geactiveerd, je kunt nu inloggen...";
}
else{
echo "De aanmelding is gelukt, het is nu aan de webmaster om te beslissen of hij/zij je accepteerd als member van deze website...";
}
}
}
else{

print 'Je hebt niet alle verplichte velden ingevuld...<br><br>
<a href="javascript:history.go(-1)">Ga terug</a>';

}
}
}
print "<br><br><a href='index.php'>Terug</a>";
?>


Dit script word uitgevoerd op http://mail.dhawis.nl/aanmelden.php
Arjan Kapteijn schreef op 02.01.2006 13:44
Je kan items uit een formulier niet simpelweg aanroepen met '$gebruikersnaam'.

Dat moet zijn: $_POST['$gebruikersnaam'];


Dit al geprobeerd dan?
moet het niet zo zijn

<input type="text" name="gebruikersnaam" size="25">

$_POST['gebruikersnaam'];

@Pieter, je bent te laat :P Haha, Arjan was eerst.. :)
ja maar arjan had denk ik een typ fout

hij had
$_POST['$gebruikersnaam'];

en die $ moet er niet staan denk ik
Oké, niet goed gelezen.. Sorrysorrysorry :P, maar je hebt gelijk ;)
Pieter heeft overigens gelijk hoor, heb de var gekopierd en er POST voor gezet, en vergeten de $ weg te halen.

Maargoed, punt lijkt me duidelijk :).
Geprobeer en niks opgeleverd, hij stuurt nog steeds niks door...
Je moet het wel overal aanpassen ey... niet enkel die gebruikersnaam...

Je heb het ook over een $actmail, ik weet nite wat dat is... maar ik ga er van uit dat er ergens nog een mail() moet staan.
error_reporting(E_ALL); had dit probleem met superglobals al lang moeten aangeven. Wanneer $gebruikersnaam niet bestaat, krijg je daar keurig een notice van. Het kan zijn dat de hostingprovider de instellingen heeft aangepast zodat E_ALL niet werkt, maar daar is ook een functie voor:

<?php
ini_set('display_errors', 1); // 1 = aan, 0 = uit
error_reporting(E_ALL);

echo $var; // Hier krijg je een notice van
?>

error_reporting() hoort altijd bovenaan je script te staan.
Frank: Ik host zelf, en ik heb juist E_ALL aanstaan in mijn php.ini

Arjan: het klopt dat er in een ander bestand nog een mail() staat, maar die functie heb ik niet ingeschakeld staan. Dus die doet niet ter zake.

Ik ga wel ff kijken of ik een ander script kan vinden wat het wel doet, want volgens mij heb ik iets in de instellingen verkeerd staan.

Reageren