Hallo allen,

De onderstaande code heb ik gemaakt. Het is een formulier waarbij een gebruiker toegevoegd kan worden. Wanneer deze succesvol is toegevoegd moet de zojuist aangemaakt gebruiker een email krijgen. Voor die email heb ik ook een template gemaakt.

Nu loop ik echter wel tegen een probleem aan. Als ik deze pagina wil bekijken zie ik het formulier niet. Wanneer ik het email gedeelte weg haal, dan is het formulier wel zichtbaar.
Zelf zie ik de oplossing niet, dus ik hoop dat iemand mij een stapje in de juiste richting kan geven.

Alvast bedankt!

Met vriendelijke groet,
Dimitri

<?php
	
	$SessionId = mysql_query("SELECT * FROM tbl_gebruikers WHERE username='".$_SESSION['username']."'");
	$SessionInfo = mysql_fetch_assoc($SessionId);
	
	$authorized = 1 ;
	
	if($SessionInfo['rangid'] == $authorized){
		
		if($_POST['submit']){
			
			$voornaam = $_POST['voornaam'];
			$tussenvoegsel = $_POST['tussenvoegsel'];
			$achternaam = $_POST['achternaam'];
			$gebruikersnaam = $_POST['gebruikersnaam'];
			$wachtwoord = $_POST['wachtwoord'];
			$hwachtwoord = $_POST['hwachtwoord'];
			$rang = $_POST['rang'];
			$email = $_POST['email'];
			$telefoon = $_POST['telefoon'];
			$adres = $_POST['adres'];
			$postcode = $_POST['postcode'];
			$woonplaats = $_POST['woonplaats'];
			$land = $_POST['land'];
			
			if($voornaam&&$achternaam&&$gebruikersnaam&&$wachtwoord&&$hwachtwoord&&$rang&&$email&&$telefoon){
				
				if($wachtwoord==$hwachtwoord){
					
					$wachtwoord = md5($hwachtwoord);
				
					if(strlen($postcode)>6){
						
						print "<script> window.location='index.php?pagina=gebruiker-toevoegen&id=".$id."&err=2' </script>";
						
					}else{
						
						mysql_query("
					
							INSERT INTO `tbl_gebruikers`(`id`, `username`, `password`, `voornaam`, `tussenvoegsel`, `achternaam`, `adres`, `postcode`, `woonplaats`, `land`, `email`, `telefoon`, `rangid`) VALUES ('','".$gebruikersnaam."','".$wachtwoord."','".$voornaam."','".$tussenvoegsel."','".$achternaam."','".$adres."','".$postcode."','".$woonplaats."','".$land."','".$email."','".$telefoon."','".$rang."')
					
						") or die(mysql_error());
						
						/* Start e-mail gedeelte */
						
						$emailadres = $email;
						$onderwerp = "Aanmelding Dimitri Geers CMS";
						$afzendernaam = "Dimitri Geers Design";
						$bericht_bij_verstuurd = print "<script> window.location='index.php?pagina=gebruiker-overzicht&msg=4' </script>";
						
						$header = "From: ".$afzendernaam." <".$emailadres.">\r\n"; 
						$header .= "Reply-To: ".$_POST['email']."\r\n";
						$header .= "MIME-Version: 1.0\r\n";
						$header .= "Content-Type: text/html; charset=iso-8859-1\r\n"; 
						$header .= "X-Priority: 3\r\n";
						$header .= "X-MSMail-Priority: Normal\r\n";
						$header .= "X-Mailer: PHP / ".phpversion()."\r\n";

						$bericht = echo "

							<style>
							@font-face {
							  font-family: 'MavenPro';
							  src: url('fonts/MavenProLight-200.otf') format('truetype');
							  font-weight: normal;
							  font-style: normal;
							}

							#email-wrapper {

								width: 50%;
								height: auto;
								margin: 2% auto;
								font-family: MavenPro;

							}

							#email-wrapper #inhoud {

								background-color: #F1F1F1;
								width: 97%;
								height: auto;
								padding-top: 2.5%;
								padding-left: 1.5%;
								padding-right: 1.5%;
								padding-bottom: 2.5%;
								margin-top: 2%;
								border: 1px solid;
								border-color: #CCCCCC;
								color: #898989;

							}

							i.blauw {

								color: #3499D5;
								font-style: normal;

							}
							</style>

							<div id='email-wrapper'>

								<img src='images/logo-blauw.png' style='height: 10%;width: auto;' />
								
								<div id='inhoud'>
								
									Beste <?php echo $voornaam; echo $tussenvoegsel; echo $achternaam; ?>,<br /><br />
									
									Hartelijk bedankt voor het vertrouwen in onze services.<br /><br />
									
									Momenteel zijn wij druk bezig met het realiseren van uw website of deze is zojuist afgerond. Om deze reden zijn uw gegevens toegevoegd in ons systeem.<br />Vanuit dit systeem kunt u uw website voorzien van tekst en/of afbeeldingen.<br /><br />
									
									U kunt inloggen met de volgende gegevens:<br /><br />
									
									Website: <i class='blauw'>www.dimitrigeers.nl/template</i><br />
									Gebruikersnaam: <i class='blauw'>[Gebruikersnaam]</i><br />
									Wachtwoord: <i class='blauw'>[Wachtwoord]</i><br /><br />
									
									Wij hopen u op deze manier van voldoende informatie te hebben voorzien. Bij eventuele vragen kunt u zicht wenden tot <i class='blauw'>[email protected]</i>.<br /><br />
									
									Met vriendelijke groet,<br /><br />
									<i class='blauw'>Dimitri Geers Design</i>
								
								</div>

							</div>

						";
									
						$stuur = @mail($emailadres,$onderwerp,$bericht,$header);
								if($stuur){
								echo $bericht_bij_verstuurd;
								}
								
						/* Einde email gedeelte */
						
					}
					
				}else{
					print "<script> window.location='index.php?pagina=gebruiker-toevoegen&id=".$id."&err=3' </script>";
				}
				
			}else{
				print "<script> window.location='index.php?pagina=gebruiker-toevoegen&id=".$id."&err=1' </script>";
			}
			
		}

?>

<div id="wrapper">

	<div id="breadcrumbs"><a href="index.php"><i class="fa fa-home"></i></a> > <a href="index.php?pagina=gebruiker-overzicht">Gebruikers</a> > <span class="active">Toevoegen</span></div>
	
	<div id="links">
	
		<form action="index.php?pagina=gebruiker-toevoegen" method="POST">
			
			<div id="tekst">
			
				<h1>Personalia</h1>
			
				<table border="0" width="100%">
				
					<tr>
					
						<td width="50%">Voornaam</td>
						<td width="50%"><input type="text" name="voornaam" value="<?php echo $_POST['voornaam']; ?>" /></td>
					
					</tr>
					
					<tr>
					
						<td>Tussenvoegsel</td>
						<td><input type="text" name="tussenvoegsel" value="<?php echo $_POST['tussenvoegsel']; ?>" /></td>
					
					</tr>
					
					<tr>
					
						<td>Achternaam</td>
						<td><input type="text" name="achternaam" value="<?php echo $_POST['achternaam']; ?>" /></td>
					
					</tr>
					
					<tr>
					
						<td>Gebruikersnaam</td>
						<td><input type="text" name="gebruikersnaam" value="<?php echo $_POST['username']; ?>" /></td>
					
					</tr>
					
					<tr>
					
						<td>Wachtwoord</td>
						<td><input type="password" name="wachtwoord" /></td>
					
					</tr>
					
					<tr>
					
						<td>Herhaal Wachtwoord</td>
						<td><input type="password" name="hwachtwoord" /></td>
					
					</tr>
				
				</table>
			
			</div>
			
			<div id="tekst">
		
			<h1>Permissie</h1>
			
			<table border="0" width="100%">
			
				<tr>
				
					<td width="50%">Rang</td>
					<td width="50%">
					
						<select name="rang">
							<?php
								
								$PermissieId = mysql_query("SELECT * FROM tbl_rangen ORDER BY rangid");
								
								while($PermissieInfo=mysql_fetch_assoc($PermissieId)){
							
							?>
								<option value="<?php echo $PermissieInfo['rangid']; ?>"
								<?php if($_POST['rangid']==$PermissieInfo['rangid']){echo "selected";} ?>><?php echo $PermissieInfo['beschrijving']; ?></option>
							<?php
								}
							?>
						</select>
						
					</td>
				
				</tr>
			
			</table>
			
		</div>
		
		</div>
		
		<div id="rechts">
		
			<div id="tekst">
			
				<h1>Contactgegevens</h1>
				
				<table border="0" width="100%">
				
					<tr>
					
						<td width="50%">E-mailadres</td>
						<td width="50%"><input type="text" name="email" value="<?php echo $_POST['email']; ?>" /></td>
					
					</tr>
					
					<tr>
					
						<td>Telefoonnummer</td>
						<td><input type="text" name="telefoon" value="<?php echo $_POST['telefoon']; ?>" /></td>
					
					</tr>
					
					<tr>
					
						<td>Adres</td>
						<td><input type="text" name="adres" value="<?php echo $_POST['adres']; ?>" /></td>
					
					</tr>
					
					<tr>
					
						<td>Postcode</td>
						<td><input type="text" name="postcode" value="<?php echo $_POST['postcode']; ?>" /></td>
					
					</tr>
					
					<tr>
					
						<td>Woonplaats</td>
						<td><input type="text" name="woonplaats" value="<?php echo $_POST['woonplaats']; ?>" /></td>
					
					</tr>
					
					<tr>
					
						<td>Land</td>
						<td><input type="text" name="land" value="<?php echo $_POST['land']; ?>" /></td>
					
					</tr>
				
				</table>
			
			</div>
			
			<div id="tekst">
			
				<input type="submit" name="submit" value="Opslaan" />
				<input type="reset" value="Reset" /> 			
			
			</div>
		
		</form>
	
	</div>

</div>

<?php
	}else{
?>
	
	<div id="jumbotron">
		
		<div id="tekst">
			
			<h1>Verboden toegang!</h1><br />
				
			Oeps... Het lijkt erop dat je deze pagina niet mag bekijken. <i class="back" onclick="history.go(-1);"> Ga terug naar de vorige pagina!</i>
			
		</div>
		
	</div>

<?php
	}
?>
Je gebruikt duidelijk geen goed programma? Want daarin zou deze fout al gelijk boven komen drijven.
Jezus wat een brakke code, waar is de security tegen SQL injectie!?

Niet te vergeten een check of het email adres wel geldig is :|
Wat RobertJan zegt, de code is een rommeltje.

Ik zal een paar tips geven:
- De query op lijn 3 bevat geen foutafhandeling. Verderop wel, maar daar gebruik je die() wat af te raden is. Lees ook dit artikel erover met hoe het juist wél moet.

- Op lijn 10 controleer je of de submit-knop is ingedrukt. Maar het is logischer om te kijken of je formulier verstuurd is:

<?php
if($_SERVER['REQUEST_METHOD']=="POST") {
// uitgevoerd
}
?>


- Lijn 12 t/m 24 kunnen weg, waarom zou je de $_POST-variabelen dubbel willen opslaan? We hebben ze immers al in de $_POST zitten.

- Controleer op lijn 26 of ze ingevuld zijn met: if(trim($var)=''), of bouw hier een mooie functie van. Zo kan je spaties en lege velden weren.

- Op lijn 30 gebruik je md5(), dit is zeer achterhaal en tevens ook bijzonder onveilig. Gebruikt password_hash(), het is wel een onderdeel van minimaal PHP 5.5, en anders is het een mooi moment om daarnaar over te stappen, of de compat-class te gebruiken.

- Op lijn 34 voer je een window.location uit, waarom? Met header('Location:http://www.jouwurl.nl';); kan je prima iemand doorverwijzen op de manier die je browser ook verwacht.

Kortom, een hoop om aan te passen als je het een stuk veiliger en logischer wilt hebben.

Reageren