[PHP] Formulier doorverwijzen naar volgende pagina

Status
Niet open voor verdere reacties.

Facepalm

Gebruiker
Lid geworden
11 aug 2011
Berichten
36
Ik ben bezig met een bestellingsformulier en mijn bedoeling is dat je eerst je NAW gegevens invoert en daarna een keuze uit bepaalde menu's kunt maken. Dit lukt me allemaal redelijk goed behalve één punt waar ik tegenop zit is dat nadat ik de NAW gegevens invoer dat ik naar de volgende pagina moet.

Is het verstandig om het meteen nadat je de NAW gegevens ingevoerd hebt het in de database opslaat en vervolgens op de volgende pagina verder kunt gaan met de keuze? Of is er nog een andere manier om dit te doen? Als het mogelijk is om het meteen op te slaan is dit wel zo handig. Ben zelf aan het bedenken hoe ik dit zou kunnen doen, zelf denk ik aan het normaal invulformulier en daaronder een button met "volgende". Maar hoe krijg ik dit op de volgende pagina zover dat het 'verder' gaat met de dezelfde gebruiker? Dit is wat ik op het moment al heb:

HTML:
<form method="post" action="<?php $_SERVER['PHP_SELF'] ?>">
				<label for="voornaam">Voornaam:</label>
				<input type="text" name="voornaam" id="voornaam" />
				
				<label for="achternaam">Achternaam:</label>
				<input type="text" name="achternaam" id="achternaam" />
				
				<label for="adres">Adres:</label>
				<input type="text" name="adres" id="adres" />
	
				<label for="postcode">Postcode:</label>
				<input type="text" name="postcode" id="postcode" />
				
				<label for="tel_num">Telefoonnummer:</label>
				<input type="text" name="tel_num" id="tel_num" />
				
				<label for="email">Email:</label>
				<input type="text" name="email" id="email" />
		</div>
			<p align="left"><input type="checkbox" name="afleveren" onclick="toggle_visibility('foo');"/> Indien u een ander aflever adres hebt, graag hier invullen.
			
			
					<div id="foo" style='display:none;'>
						<div id="contact-area">	
							<label for="afleveradres">Afleveradres:</label>
								<input type="text" name="afleveradres" id="afleveradres" />
								
								<label for="postcode_2">Postcode:</label>
								<input type="text" name="postcode_2" id="postcode_2" />
								
								<label for="tel_num2">Telefoonnummer:</label>
								<input type="text" name="tel_num2" id="tel_num2" />
								
				
								
						</div>
					</div>
<input style="padding: 5px;width: 471px;font-family: Helvetica, sans-serif;font-size: 1.4em;margin: 0px 0px 10px 0px;border: 2px solid #ccc;width: 100px;float: right;" type="submit" name="verzenden" value="Volgende" class="submit-button" />	
						</p>

En daaronder staat dit meteen:

PHP:
<?php
							


							$con = mysql_connect("localhost","root","usbw");
							if (!$con)
							  {
							  die('Could not connect: ' . mysql_error());
							  }

							mysql_select_db("lemongrass", $con);
							
							
							$sql="INSERT INTO naw_geg (voornaam, achternaam, adres, postcode, tel_num, email, afleveradres, postcode_2, tel_num2)
							VALUES
							('$_POST[voornaam]',
							 '$_POST[achternaam]',
							 '$_POST[adres]',
							 '$_POST[postcode]',
							 '$_POST[tel_num]',
							 '$_POST[email]',
							 '$_POST[afleveradres]',
							 '$_POST[postcode_2]',
							 '$_POST[tel_num2]')";
							 if (!mysql_query($sql,$con))
							  {
							  die('Error: ' . mysql_error());
							  }
							echo "<meta http-equiv=\"refresh\" content=\"0;URL=keuze.php\">";

							mysql_close($con);
							
							
							

							
						?>

Heeft iemand een idee?
 
Een andere "action" gebruiken. Nu heb je staan
HTML:
<form method="post" action="<?php $_SERVER['PHP_SELF'] ?>">
als je dit verandert in bijvoorbeeld
HTML:
<form method="post" action="verwerk.php">
zal de browser nadat het formulier is ingevuld het bestand verwerk.php laden.
Je moet dan de PHP-code die je nu hebt (gebruik wel mysql_real_escape_string want je huidige script is kwetsbaar voor SQL-injectie) in verwerk.php zetten.
 
Ik hoop dat dit niet je definitieve database code is anders ben je in een paar minuten gehacked.

Dat terzijde, kun je beter gebruik maken van sessies. Dan hou je informatie bij elkaar op welke pagina dan ook. Mocht dat geen optie zijn kun je de informatie nog steeds doorsturen met de POST informatie net zoals je dat nu met het form doet.

Sessies zijn echter de aangewezen optie, vooral als je ook gaat switchen tussen beveiligde pagina's en onbeveiligde pagina's
 
Een andere "action" gebruiken. Nu heb je staan
HTML:
<form method="post" action="<?php $_SERVER['PHP_SELF'] ?>">
als je dit verandert in bijvoorbeeld
HTML:
<form method="post" action="verwerk.php">
zal de browser nadat het formulier is ingevuld het bestand verwerk.php laden.
Je moet dan de PHP-code die je nu hebt (gebruik wel mysql_real_escape_string want je huidige script is kwetsbaar voor SQL-injectie) in verwerk.php zetten.

Is er een voordeel dat je het in verwerk.php zet of niet? Ja klopt de beveiliging komt later. Dit is even simpel geschreven. Wil het eerst werkend hebben daarna check ik de beveiliging pas! ;-)
 
Ik hoop dat dit niet je definitieve database code is anders ben je in een paar minuten gehacked.

Dat terzijde, kun je beter gebruik maken van sessies. Dan hou je informatie bij elkaar op welke pagina dan ook. Mocht dat geen optie zijn kun je de informatie nog steeds doorsturen met de POST informatie net zoals je dat nu met het form doet.

Sessies zijn echter de aangewezen optie, vooral als je ook gaat switchen tussen beveiligde pagina's en onbeveiligde pagina's

Oké bedankt, ik zal dan toch eens kijken om met sessies te werken!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan