reserveringsscript opslaan in mysql db

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Peter Arendse

Peter Arendse

01/03/2008 11:24:00
Quote Anchor link
Hallo allemaal, mijn reserveringsscript werkt prima.
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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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);  
?>


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
 
PHP hulp

PHP hulp

24/12/2024 00:53:05
 
Bart van der veen

bart van der veen

01/03/2008 11:33:00
Quote Anchor link
php geeft de foutmelding op dit punt:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?
$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...
 
Peter Arendse

Peter Arendse

01/03/2008 15:22:00
Quote Anchor link
Beste allemaak, het is al flink opgeschoten en het script werk(te) goed.
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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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);
?>
Gewijzigd op 01/01/1970 01:00:00 door Peter Arendse
 
Frank -

Frank -

02/03/2008 18:29:00
Quote Anchor link
quote_smart('$datum')

$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);
 
Peter Arendse

Peter Arendse

02/03/2008 18:56:00
Quote Anchor link
Perfect Frank het werkt, ik had dat stukje script als tut ergens gevonden inclusief die quotes, vandaar dat ik ze in mijn eigen deel door getrokken had.
Ik heb nu dit en het werkt, onder de code staan nog enkele opmerkingen.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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);
?>


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
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.