Optimaliseren winkelwagentje in PHP

Status
Niet open voor verdere reacties.

FrankFaes

Gebruiker
Lid geworden
14 dec 2010
Berichten
7
Hoi allen,

Ik heb al een tijdje op mijn website een winkelwagentje draaien. Dit werkt allemaal prima, maar ik wil echter een paar kleine puntjes verbeteren waar ik momenteel niet uit kom.

De punten die ik wil verbeteren:
- een totaalprijs mee sturen in de mail naar mijn mailbox (nu wordt de totaalprijs niet meegestuurd vanuit het winkelwagentje)

- een enter toevoegen in de mail naar mijn mailbox (nu ziet het er ongeveer zo uit:
Bestelling: 1 x springkussen � 50,-
1 x zeephelling � 225,-
1 x koe melken � 10,-
De enter moet de direct na de 'bestelling:' komen)

- een automatische reply mail sturen naar de klant met daarin zijn of haar bestelling.

Dit is de code die ik momenteel gebruik:
PHP:
		<?php	
		
			if ($_SERVER['REQUEST_METHOD'] == 'POST')
			{
			 	if ($_POST['av'] == 'on')
				{
					$to = "info@faesentertainment.nl";
				
					$redirect = "/";				
					
					// Remove $_COOKIE elements from $_REQUEST.
					
					if(count($_COOKIE)){foreach(array_keys($_COOKIE) as $value){unset($_REQUEST[$value]);}}
							
					// Check all fields for an email header.
					
					function recursive_array_check_header($element_value)
					
					{
					
					global $set;
					
					if(!is_array($element_value)){if(preg_match("/(%0A|%0D|+|\r+)(content-type:|to:|cc:|bcc:)/i",$element_value)){$set = 1;}}
					
					else
					
					{
					
					foreach($element_value as $value){if($set){break;} recursive_array_check_header($value);}
					
					}
					
					}
					
					recursive_array_check_header($_REQUEST);
					
					if($set){$errors[] = "You are prevented from sending an email header";}
					
					unset($set);
					
					// Check referrer is from same site.
					
					if(!(isset($_SERVER['HTTP_REFERER']) && !empty($_SERVER['HTTP_REFERER']) && stristr($_SERVER['HTTP_REFERER'],$_SERVER['HTTP_HOST']))){$errors[] = "You must activate referrer login to use the form";}
					
					// Create message body.
					
					function create_msg($request_input)
					
					{
					
					if(!isset($message_output)){$message_output ="";}if(!is_array($request_input)){$message_output = $request_input;}else{foreach($request_input as $key => $value){if(!empty($value)){if(!is_numeric($key)){$message_output .= str_replace("_"," ",ucfirst($key)).": ".create_msg($value).PHP_EOL.PHP_EOL;}else{$message_output .= create_msg($value).", ";}}}}return rtrim($message_output,", ");}
									
					$message = create_msg($_REQUEST);
									
					$subject = "Nieuwe bestelling via Faesentertainment.nl";
					
					$headers = "From: " . $_REQUEST['email'];				
	
					$subject = 'Bestelformulier';
					 
					$message = 'Bestelling:
					
Inhoud winkelwagen: ';
					
foreach ($_SESSION[winkelwagenproduct] as $key => $value)
{
$message .= $_SESSION[winkelwagenaantal][$key].'x '.$value.' a � '.$_SESSION['winkelwagenprijs'][$key].'
';
}
					
$message .= 
					
'Naam : '.$_POST['naam'].'
					
Telefoon : '.$_POST['telefoon'].'
					
Email : '.$_POST['email'].'
					
Datum: '.$_POST['datum'].'

Adres: '.$_POST['adres'].'

Plaats: '.$_POST['plaats'].'

Tijdstip (gewenst): '.$_POST['tijdstip'].'
					
Opmerkingen: '.$_POST['opmerkingen'];
					 
					mail($to,$subject,$message,$headers);
					
					echo '<p class="left">Bedankt voor uw bestelling. We nemen zo spoedig mogelijk contact met u op voor de bevestiging.</p><br /><br />';
	
					session_destroy();
				}
				else
				{
					echo '<p class="left">U bent niet akkoord gegaan met de algemene voorwaarden. Keer terug naar het <a href="winkelwagen.php">winkelwagentje</a> om opnieuw uw gegevens in te vullen en akkoord te gaan met de algemene voorwaarden</p>';
	
				}
			}
		?>

Alvast bedankt voor het meedenken!
Frank
 
voor het totaal kun je in de foreach een variabele $totaalprijs mee laten lopen. Je haalt immers al aantal en prijs op, dus je hoeft alleen nog maar te vermenigvuldigen en op te tellen.

NB het is een stuk vriendelijker om eerst te checken of de voorwaarden zijn geaccepteerd ipv mensen terug sturen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan