reserveringsscript opslaan in mysql db
Als de kalnt de reservering gemaakt heeft opend zich een pagina om alles nog eens door te lezen en vervolgens kan de klant op reserveren drukken zodat de reservering werkelijk verzonden wordt naar onze emailadressen.
Maar nu wil ik de reservering ook opslaan in mijn db.
Ik weet niet of ik de datum die aangeleverd wordt in losse onderdelen goed gadaan heb met de printf functie, maar ik krijg in iedergeval foutmeldingen die ik niet thuis kan brengen.
Graag jullie idee of hulp hiermee.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<?php
session_start();
if(isset($_GET['sResultaat']))
{
$sResultaat = $_SESSION['sResultaat'];
$sInvoer = $_SESSION['sInvoer'];
$partner= "www.taxikalf.nl";
$datum = date("Y-m-d H:i");
include("db_werk.php");
$mysql_id=mysql_connect("$dbhost","$dbuser","$dbpass");
$datum1= sprintf (
'%02d-%02d-%02d %02d:%02d:00',
$sResultaat['jaar1'],
$sResultaat['maand1'],
$sResultaat['dag1'],
$sResultaat['uur1'],
$sResultaat['min1']
);
$sql=" INSERT into schipholreserveringen(datum,naam,adres,woonplaats,bedrijf,telefoonnummer,aantalpersonen,datum1,opmerkingen,contant,creditcard,telefonisch_bevestigen,via_email_bevestigen,partner) VALUES ('$datum','$sResultaat['naam']','$sResultaat['adres']','$sResultaat['woonplaats']','$sResultaat['$sResultaat['bedrijf']']','$sResultaat['telefoonnummer']','$sResultaat['aantalpersonen']','$sResultaat['datum1']','$sResultaat['opmerkingen']','$sResultaat['contant']','$sResultaat['redeitcard']','$sResultaat['jtelefonisch_bevestigen']','$sResultaat['via_email_bevestigen']','$partner')";
$res=mysql_db_query("$db","$sql",$mysql_id);
$recipient ="[email protected]";
$subject ="Test Schipholreservering Taxibedrijf Kalf (enkele rit naar Schiphol)\r\n";
$headers ="From: " . $sResultaat['emailadres'] . "\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
$mail_body ="<p><font face=\"Verdana\" size=\"2\" color=\"#000000\">Deze reservering werd gemaakt op www.taxikalf.nl.</font>\r\n";
$mail_body .="<p><font face=\"Verdana\" size=\"2\" color=\"#000000\"><b>De Schipholreservering werd op " . date("d-m-Y") . " om " . date("H:i") . " uur verzonden door " . $sResultaat['naam'] .".</b><p>\n\n";
foreach($sInvoer as $sKey => $sValue)
{
if(trim($sValue) != '')
$mail_body.="<li><font face=\"Verdana\" size=\"2\" color=\"#000000\">".$sKey.":<font face=\"Verdana\" size=\"2\" color=\"#000000\"><b>".$sValue."</b></font></li>\n\n";
}
$mail_body.="<p><font face=\"Verdana\" size=\"1\" color=\"#FF0000\"><b>WARNING:</b><br><i>
This message and any attachments are the property of Taxibedrijf Kalf and are intended solely for the named recipients or entity to whom this message is addressed. If you have received this message in error please inform the sender via e-mail and destroy the message. If you are not the intended recipient you are not allowed to use, copy or disclose the contents or attachments in whole or in part.</i></font>\n";
mail($recipient,$subject,$mail_body,$headers);
?>
session_start();
if(isset($_GET['sResultaat']))
{
$sResultaat = $_SESSION['sResultaat'];
$sInvoer = $_SESSION['sInvoer'];
$partner= "www.taxikalf.nl";
$datum = date("Y-m-d H:i");
include("db_werk.php");
$mysql_id=mysql_connect("$dbhost","$dbuser","$dbpass");
$datum1= sprintf (
'%02d-%02d-%02d %02d:%02d:00',
$sResultaat['jaar1'],
$sResultaat['maand1'],
$sResultaat['dag1'],
$sResultaat['uur1'],
$sResultaat['min1']
);
$sql=" INSERT into schipholreserveringen(datum,naam,adres,woonplaats,bedrijf,telefoonnummer,aantalpersonen,datum1,opmerkingen,contant,creditcard,telefonisch_bevestigen,via_email_bevestigen,partner) VALUES ('$datum','$sResultaat['naam']','$sResultaat['adres']','$sResultaat['woonplaats']','$sResultaat['$sResultaat['bedrijf']']','$sResultaat['telefoonnummer']','$sResultaat['aantalpersonen']','$sResultaat['datum1']','$sResultaat['opmerkingen']','$sResultaat['contant']','$sResultaat['redeitcard']','$sResultaat['jtelefonisch_bevestigen']','$sResultaat['via_email_bevestigen']','$partner')";
$res=mysql_db_query("$db","$sql",$mysql_id);
$recipient ="[email protected]";
$subject ="Test Schipholreservering Taxibedrijf Kalf (enkele rit naar Schiphol)\r\n";
$headers ="From: " . $sResultaat['emailadres'] . "\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
$mail_body ="<p><font face=\"Verdana\" size=\"2\" color=\"#000000\">Deze reservering werd gemaakt op www.taxikalf.nl.</font>\r\n";
$mail_body .="<p><font face=\"Verdana\" size=\"2\" color=\"#000000\"><b>De Schipholreservering werd op " . date("d-m-Y") . " om " . date("H:i") . " uur verzonden door " . $sResultaat['naam'] .".</b><p>\n\n";
foreach($sInvoer as $sKey => $sValue)
{
if(trim($sValue) != '')
$mail_body.="<li><font face=\"Verdana\" size=\"2\" color=\"#000000\">".$sKey.":<font face=\"Verdana\" size=\"2\" color=\"#000000\"><b>".$sValue."</b></font></li>\n\n";
}
$mail_body.="<p><font face=\"Verdana\" size=\"1\" color=\"#FF0000\"><b>WARNING:</b><br><i>
This message and any attachments are the property of Taxibedrijf Kalf and are intended solely for the named recipients or entity to whom this message is addressed. If you have received this message in error please inform the sender via e-mail and destroy the message. If you are not the intended recipient you are not allowed to use, copy or disclose the contents or attachments in whole or in part.</i></font>\n";
mail($recipient,$subject,$mail_body,$headers);
?>
P.s. Dit is de fout die ik kreeg:
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /www/htdocs/taxikalf/mail10.php on line 20
Gewijzigd op 01/01/1970 01:00:00 door Peter Arendse
Code (php)
1
2
3
4
5
2
3
4
5
<?
$string = "teskt ."$var". nog meer teskt"
//bij jou staat er:
$string = "teskt '$var' nog meer tekst"
?>
$string = "teskt ."$var". nog meer teskt"
//bij jou staat er:
$string = "teskt '$var' nog meer tekst"
?>
het gaat dus mis op het invoegen van variablen...
Alle data kwam mooi in database en het mailtje werd ook verstuurd.
Totdat iemand mij er op wees een beveiliging in te bouwen in de vorm van de functie mysql_real_escape_string.
Op zoek naar wat dit betekende vond ik deze functie op php.net die naar mijn mening het zelfde doet (misschien wel meer).
Misschien wel door een fout van mij wordt er nu niets meer in de database gestopt maar wordt het mailtje wel verstuurd dat de reservering succesvol was en alle gegevens staan ook in de mail, maar noet in de db.
Kan iemans vertellen wat de functie werkelijk doet en wat ik nu weer fout gedaan heb?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<?php
function quote_smart($value) {
if (get_magic_quotes_gpc()) {
$value = stripslashes($value);
}
if (!is_numeric($value)) {
$value = "'" . mysql_real_escape_string($value) . "'";
}
return $value;
}
$sql= "
INSERT into
schipholreservering(
datum,
naam,
adres,
woonplaats,
bedrijf,
telefoonnummer,
emailadres,
aantalpersonen,
datum1,
opmerkingen,
contant,
creditcard,
telefonisch_bevestigen,
via_email_bevestigen,
partner
)
VALUES (
'". quote_smart('$datum')."',
'". quote_smart($sResultaat['naam'])."',
'". quote_smart($sResultaat['adres'])."',
'". quote_smart($sResultaat['woonplaats'])."',
'". quote_smart($sResultaat['bedrijf'])."',
'". quote_smart($sResultaat['telefoonnummer'])."',
'". quote_smart($sResultaat['emailadres'])."',
'". quote_smart($sResultaat['aantalpersonen'])."',
'". quote_smart('$datum1')."',
'". quote_smart($sResultaat['opmerkingen'])."',
'". quote_smart($sResultaat['contant'])."',
'". quote_smart($sResultaat['creditcard'])."',
'". quote_smart($sResultaat['telefonesch_bevestigen'])."',
'". quote_smart($sResultaat['via_email_bevestigen'])."',
'". quote_smart('$partner')."'
)";
$res=mysql_db_query("$db","$sql",$mysql_id);
?>
function quote_smart($value) {
if (get_magic_quotes_gpc()) {
$value = stripslashes($value);
}
if (!is_numeric($value)) {
$value = "'" . mysql_real_escape_string($value) . "'";
}
return $value;
}
$sql= "
INSERT into
schipholreservering(
datum,
naam,
adres,
woonplaats,
bedrijf,
telefoonnummer,
emailadres,
aantalpersonen,
datum1,
opmerkingen,
contant,
creditcard,
telefonisch_bevestigen,
via_email_bevestigen,
partner
)
VALUES (
'". quote_smart('$datum')."',
'". quote_smart($sResultaat['naam'])."',
'". quote_smart($sResultaat['adres'])."',
'". quote_smart($sResultaat['woonplaats'])."',
'". quote_smart($sResultaat['bedrijf'])."',
'". quote_smart($sResultaat['telefoonnummer'])."',
'". quote_smart($sResultaat['emailadres'])."',
'". quote_smart($sResultaat['aantalpersonen'])."',
'". quote_smart('$datum1')."',
'". quote_smart($sResultaat['opmerkingen'])."',
'". quote_smart($sResultaat['contant'])."',
'". quote_smart($sResultaat['creditcard'])."',
'". quote_smart($sResultaat['telefonesch_bevestigen'])."',
'". quote_smart($sResultaat['via_email_bevestigen'])."',
'". quote_smart('$partner')."'
)";
$res=mysql_db_query("$db","$sql",$mysql_id);
?>
Gewijzigd op 01/01/1970 01:00:00 door Peter Arendse
$datum is een variabele, die hoort dus niet tussen quotes te staan. Je gaat hier nog een aantal keren de mist in, zie ook $datum1 en $partner.
Ook "$db" is fout/ongelukkig gekozen, gewoon $db en klaar is kees. $sql idem dito, een variabele zet je nooit tussen quotes.
$value = "'" . mysql_real_escape_string($value) . "'";
Haal hier eveneens alle quotes weg, quotes voor de SQL wil je in de SQL-string noteren en niet tijdens het escapen van verboden tekens gaan toevoegen. Dat levert onverwachte resultaten op, je gaat hier ook de mist in. Dus:
$value = mysql_real_escape_string($value);
Ik heb nu dit en het werkt, onder de code staan nog enkele opmerkingen.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<?php
function quote_smart($value) {
if (get_magic_quotes_gpc()) {
$value = stripslashes($value);
}
if (!is_numeric($value)) {
$value = mysql_real_escape_string($value);
}
return $value;
}
$sql="
INSERT into
schipholreservering (
datum,
naam,
adres,
woonplaats,
bedrijf,
telefoonnummer,
emailadres,
aantalpersonen,
datum1,
opmerkingen,
contant,
creditcard,
telefonisch_bevestigen,
via_email_bevestigen,
partner
)
VALUES (
'". quote_smart($datum)."',
'". quote_smart($sResultaat['naam'])."',
'". quote_smart($sResultaat['adres'])."',
'". quote_smart($sResultaat['woonplaats'])."',
'". quote_smart($sResultaat['bedrijf'])."',
'". quote_smart($sResultaat['telefoonnummer'])."',
'". quote_smart($sResultaat['emailadres'])."',
'". quote_smart($sResultaat['aantalpersonen'])."',
'". quote_smart($datum1)."',
'". quote_smart($sResultaat['opmerkingen'])."',
'". quote_smart($sResultaat['contant'])."',
'". quote_smart($sResultaat['creditcard'])."',
'". quote_smart($sResultaat['telefonesch_bevestigen'])."',
'". quote_smart($sResultaat['via_email_bevestigen'])."',
'". quote_smart($partner)."'
)";
$res = mysql_db_query($db, $sql, $mysql_id);
?>
function quote_smart($value) {
if (get_magic_quotes_gpc()) {
$value = stripslashes($value);
}
if (!is_numeric($value)) {
$value = mysql_real_escape_string($value);
}
return $value;
}
$sql="
INSERT into
schipholreservering (
datum,
naam,
adres,
woonplaats,
bedrijf,
telefoonnummer,
emailadres,
aantalpersonen,
datum1,
opmerkingen,
contant,
creditcard,
telefonisch_bevestigen,
via_email_bevestigen,
partner
)
VALUES (
'". quote_smart($datum)."',
'". quote_smart($sResultaat['naam'])."',
'". quote_smart($sResultaat['adres'])."',
'". quote_smart($sResultaat['woonplaats'])."',
'". quote_smart($sResultaat['bedrijf'])."',
'". quote_smart($sResultaat['telefoonnummer'])."',
'". quote_smart($sResultaat['emailadres'])."',
'". quote_smart($sResultaat['aantalpersonen'])."',
'". quote_smart($datum1)."',
'". quote_smart($sResultaat['opmerkingen'])."',
'". quote_smart($sResultaat['contant'])."',
'". quote_smart($sResultaat['creditcard'])."',
'". quote_smart($sResultaat['telefonesch_bevestigen'])."',
'". quote_smart($sResultaat['via_email_bevestigen'])."',
'". quote_smart($partner)."'
)";
$res = mysql_db_query($db, $sql, $mysql_id);
?>
Nog een paar vraagjes:
IK wil het zo veilig en goed mogelijk doen, moet ik de db ook sluiten nadien?
Ik heb wel eens gezien dat ze een session sluiten, is dat beter?
Als de klant(ik in dit geval) op verzenden klikt gaat alles goed en komt de eindmelding op het scherm, maar in de url staat het volgende:
http://www.taxikalf.nl/mail10.php?sResultaat&PHPSESSID=2b8f22439467b6822b87e57cf9173f2e
Vormt dit ook nog een gevaar of maakt dit niets uit?
Ik merk zelf als ik op die link/url klik, of de klant klikt op scherm verversen dat ik weer een mail binnen krijg met de zelfde gegevens, waarschijnlijk tot dat de geldigheid van de session verloopt(zeg ik met mijn amateurhoofd)
Gewijzigd op 01/01/1970 01:00:00 door Peter Arendse