Slaat constant zelfde waarde op in DB

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Martijn Thomas

Martijn Thomas

17/06/2008 09:27:00
Quote Anchor link
Hopelijk kunnen jullie helpen, ik zie niet in waar het nl fout gaat.

http://w3.globe-view.nl/administratie/index.php?page=klant_toevoegen Inloggen met Temp - Temp
Als daar gegevens bij algemeen worden ingevuld (de andere delen heb ik even inactief gemaakt) en vervolgen op toevoegen wordt gedrukt dan zou deze in een mysql db gezet moeten worden. Dat doet hij ook, echter wil hij voor klantID telkens dezelfde waarde: "8388607" opslaan terwijl in de db deze op PK en Auto_Increment staat. De rest zet hij wel in de DB, althans die ene keer want daarna zeurt hij over een dubble PK entry.

De verwachting is dat je een melding van duplicate entry krijgt aangezien er meer mensen zullen proberen, maar dat onderschrijft het probleem alleen meer meer.

Hier de code van het klant_verwerken.php

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
50
51
52
53
54
55
56
57
58
59
<?php

    $klantID
= '';

    include "database.php";
//    include "functions";

if(isset($_POST['klant_toevoegen'])) {
    
    $bedrijfsnaam = $_POST['bedrijfsnaam'];
    $kvk = $_POST['kvk'];
    $achternaam = $_POST['achternaam'];
    $tussenvoegsel = $_POST['tussenvoegsel'];
    $voorletters = $_POST['voorletters'];
    $roepnaam = $_POST['roepnaam'];
    $adm_tnv = $_POST['adm_tnv'];
    $adm_straat = $_POST['adm_straat'];
    $adm_huisnummer = $_POST['adm_huisnummer'];
    $adm_postcode1 = $_POST['adm_postcode1'];
    $adm_postcode2 = $_POST['adm_postcode2'];
    $adm_plaats = $_POST['adm_plaats'];
    $adm_land = $_POST['adm_land'];
    $adm_email = $_POST['adm_email'];
    $adm_telefoon1 = $_POST['adm_telefoon1'];
    $adm_telefoon2 = $_POST['adm_telefoon2'];
    $adm_mobiel1 = $_POST['adm_mobiel1'];
    $adm_mobiel2 = $_POST['adm_mobiel2'];
    $adm_fax1 = $_POST['adm_fax1'];
    $adm_fax2 = $_POST['adm_fax2'];
    $tech_naam = $_POST['tech_naam'];
    $tech_email = $_POST['tech_email'];
    $tech_telefoon1 = $_POST['tech_telefoon1'];
    $tech_telefoon2 = $_POST['tech_telefoon2'];
    $fin_tnv = $_POST['fin_tnv'];
    $fin_straat = $_POST['fin_straat'];
    $fin_postcode1 = $_POST['fin_postcode1'];
    $fin_postcode2 = $_POST['fin_postcode2'];
    $fin_plaats = $_POST['fin_plaats'];
    $fin_land = $_POST['fin_land'];
    $fin_email = $_POST['fin_email'];
    $fin_telefoon1 = $_POST['fin_telefoon1'];
    $fin_telefoon2 = $_POST['fin_telefoon2'];
    $fin_mobiel1 = $_POST['fin_mobiel1'];
    $fin_mobiel2 = $_POST['fin_mobiel2'];
    $fin_fax1 = $_POST['fin_fax1'];
    $fin_fax2 = $_POST['fin_fax2'];
    
    mysql_query("INSERT INTO adm_klanten (klantID, bedrijfsnaam, kvk, achternaam, tussenvoegsel, voorletters, roepnaam) VALUES ('','$bedrijfsnaam','$kvk','$achternaam','$tussenvoegsel','$voorletters','$roepnaam')") or die ("<b>Error: </b>" . mysql_error ());
    
/*    $query = mysql_query("SELECT MAX(klantID) FROM adm_klanten");
    $r = mysql_fetch_array($query);
    $klant_id = $r[0];
    echo "Klant nummer: $klant_id";*/
    
//    mysql_query("INSERT INTO adm_klanten_adm (klant_id, adm_tnv, adm_straat, adm_huisnummer, adm_postcode1, adm_postcode2, adm_plaats, adm_land, adm_email, adm_telefoon1, adm_telefoon2, adm_mobiel1, adm_mobiel2, adm_fax1, adm_fax2) VALUES ('','$adm_tnv','$adm_straat','$adm_huisnummer','$adm_postcode1','$adm_postcode2','$adm_plaats','$adm_land','$adm_email','$adm_telefoon1','$adm_telefoon2','$adm_mobiel1','$adm_mobiel2','$adm_fax1','$adm_fax2')") or die ("<b>Error: </b>" . mysql_error ());

    
    $melding = "De klant is toegevoegd aan het klanten bestand!";
}

?>


Dit is een sql drop van de db:
CREATE TABLE `adm_klanten` (
`klantID` mediumint(9) NOT NULL auto_increment,
`bedrijfsnaam` varchar(128) NOT NULL,
`kvk` varchar(128) NOT NULL,
`achternaam` varchar(128) NOT NULL,
`tussenvoegsel` varchar(128) NOT NULL,
`voorletters` varchar(128) NOT NULL,
`roepnaam` varchar(128) NOT NULL,
PRIMARY KEY (`klantID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=8388608 ;
Gewijzigd op 01/01/1970 01:00:00 door Martijn Thomas
 
PHP hulp

PHP hulp

18/05/2024 20:40:48
 
Jelle Posthuma

Jelle Posthuma

17/06/2008 09:33:00
Quote Anchor link
Plaats in ieder geval eens je variables buiten de quotes in die query.
Verder, je hebt een klantID veld op Auto_increment, maar die vul je wel zelf in in de database...
Wat is het nut daarvan?
Want auto increment die zorgt altijd voor een uniek ID door dat veld bij elke record te nummeren: 1,2,3,4,5....... enz.
 
Jacco Engel

Jacco Engel

17/06/2008 09:34:00
Quote Anchor link
'$klantID' vervangen door '".$klantID."' en dat doe je bij elke variabele die je vanaf nu in een string zet met terugwerkende kracht.

Succes
 
Martijn Thomas

Martijn Thomas

17/06/2008 09:35:00
Quote Anchor link
Dat met vars in de quotes had ik zo op school geleerd ;) maar ik ga ze weghalen.

Ik zag net ook dat hij op auto_increment staat maar ik zie in waar ik dat in de db heb ingesteld :S
 
Jesper Diovo

Jesper Diovo

17/06/2008 09:37:00
Quote Anchor link
Kijk ook even naar SQL Injection. De boel ligt nu nogal open, namelijk.
mysql_real_escape_string().

Trouwens, dit stukje code is korter dan jouw 36 overbodige regels:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
foreach($_POST as $key => $veld) {
  $_POST[$key] = mysql_real_escape_string($veld);
}

?>

Nu voer je overal i.p.v. die 'losse' variabelen gewoon $_POST['veldnaam'] in, die is al geëscaped.
 
Martijn Thomas

Martijn Thomas

17/06/2008 09:41:00
Quote Anchor link
Ho ho, er stond een klein foutje in bovenstaande code op de plek van $klantID had niets moeten staan dat heb ik nu ook aangepast maar dan geeft hij nog het zelfde probleem.

Of moet ik hem dan zoals Jaco als sugestie geeft als '" . $klantID . "' neerzetten?

@lezpur, door onderstaande code tegebruiken hoef ik niet al die waarde zelf elke keer op te halen?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
foreach($_POST as $key => $veld) {
  $_POST[$key] = mysql_real_escape_string($veld);
}

?>
 
Martijn Thomas

Martijn Thomas

17/06/2008 09:46:00
Quote Anchor link
HET PROBLEEM IS OPGELOST!

Zelf zat ik net te kijken naar de sql drop en daar viel mij ook op dat in de laatste regel wat achter auto_increment stond, nu heb ik net de tabel weggegooid en deze opnieuw aangemaakt. En nu is het probleem verholpen.

Nu eens kijken naar de tip van lezpur.
 
Jacco Engel

Jacco Engel

17/06/2008 09:46:00
Quote Anchor link
$klantID was maar een voorbeeld. Naar eigen inzicht gebruiken
 
Jesper Diovo

Jesper Diovo

17/06/2008 09:47:00
Quote Anchor link
MThomas schreef op 17.06.2008 09:41:
Ho ho, er stond een klein foutje in bovenstaande code op de plek van $klantID had niets moeten staan dat heb ik nu ook aangepast maar dan geeft hij nog het zelfde probleem.

Of moet ik hem dan zoals Jaco als sugestie geeft als '" . $klantID . "' neerzetten?

@lezpur, door onderstaande code tegebruiken hoef ik niet al die waarde zelf elke keer op te halen?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
foreach($_POST as $key => $veld) {
  $_POST[$key] = mysql_real_escape_string($veld);
}

?>


Regel 10 t/m 46 kun je daardoor vervangen inderdaad. Je gebruikt dan niet de 'losse' variabelen maar gewoon $_POST['veldnaam'] in je queries.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo "En haal die ".$variabelen." eens buiten ".$quotes; // ;-)
?>
 
Jelle Posthuma

Jelle Posthuma

17/06/2008 09:47:00
Quote Anchor link
Nog ff een tip voor MThomas, misschien is het handig als je een SQL code zo typt, dan is het net ff wat georganiseerder:

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
$sql = "INSERT INTO
          adm_klanten (
            klantID,
            bedrijfsnaam,
            kvk,
            achternaam,
            tussenvoegsel,
            voorletters,
            roepnaam
          ) VALUES (
            '',
            '" . $_POST['bedrijfsnaam'] . "',
            '" . $_POST['kvk'] . "',
            '" . $_POST['achternaam'] . "',
            '" . $_POST['tussenvoegsel'] . "',
            '" . $_POST['voorletters'] . "',
            '" . $_POST['roepnaam'] . "'
          )";

mysql_query($sql) or die ("<b>Error: </b>" . mysql_error ());
Gewijzigd op 01/01/1970 01:00:00 door Jelle Posthuma
 
Jesper Diovo

Jesper Diovo

17/06/2008 09:48:00
Quote Anchor link
Jelle Posthuma schreef op 17.06.2008 09:47:
Nog ff een tip voor MThomas, misschien is het handig als je een SQL code zo typt, dan is het net ff wat georganiseerder:

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
$sql = "INSERT INTO
          adm_klanten (
            klantID,
            bedrijfsnaam,
            kvk,
            achternaam,
            tussenvoegsel,
            voorletters,
            roepnaam
          ) VALUES (
            '',
            '" . $bedrijfsnaam . "',
            '" . $kvk . "',
            '" . $achternaam . "',
            '" . $tussenvoegsel . "',
            '" . $voorletters . "',
            '" . $roepnaam . "'
          )";

mysql_query($sql) or die ("<b>Error: </b>" . mysql_error ());


Doe dan ook meteen maar wat aan die 'or die()'. Zo lelijk...
 
Jelle Posthuma

Jelle Posthuma

17/06/2008 09:52:00
Quote Anchor link
@Jezpur, gaat mij ff om die SQL code, van boven naar beneden met inspringing is sowieso voor het debuggen ff heel handig als je wat terug moet zoeken in je code.
En sowieso, kan die or die beter vervangen worden idd.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
if(mysql_query($sql)){
  // Succesvol toegevoegd
}else{
  echo '<div>Kan niet worden toegevoegd: <br/><br/>'.mysql_error().'</div>';
}

?>
 
Jesper Diovo

Jesper Diovo

17/06/2008 09:53:00
Quote Anchor link
Jelle Posthuma schreef op 17.06.2008 09:52:
@Jezpur, gaat mij ff om die SQL code


Klopt, maar ik ben altijd Pietje Precies ;-).
 
Martijn Thomas

Martijn Thomas

17/06/2008 09:59:00
Quote Anchor link
Zo maak ik de heren/dames dus echt blij ;)

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
<?php

    include "database.php";
//    include "functions";

if(isset($_POST['klant_toevoegen'])) {

    foreach($_POST as $key => $veld) {
        $_POST[$key] = mysql_real_escape_string($veld);
    }

    
    $sql = "INSERT INTO
              adm_klanten (
                klantID,
                bedrijfsnaam,
                kvk,
                achternaam,
                tussenvoegsel,
                voorletters,
                roepnaam
              ) VALUES (
                '',
                '"
. $_POST['bedrijfsnaam']. "',
                '"
. $_POST['kvk'] . "',
                '"
. $_POST['achternaam'] . "',
                '"
. $_POST['tussenvoegsel'] . "',
                '"
. $_POST['voorletters'] . "',
                '"
. $_POST['roepnaam'] . "'
              )"
;
    
    if(mysql_query($sql)) {
        echo "De klant is toegevoegd aan het klanten bestand!";
    }

    else {
        echo '<div>Kan niet worden toegevoegd: <br/><br/>'.mysql_error().'</div>';
    }
        
    
}

?>


Zo heb ik dus ook geen last meer van SQL injection?
Gewijzigd op 01/01/1970 01:00:00 door Martijn Thomas
 
Jelle Posthuma

Jelle Posthuma

17/06/2008 10:07:00
Quote Anchor link
Die klantID kan je er ook uit laten, en dan die '', bij die values ook, want die wordt toch automatisch verhoogt met 1.
En ja, je hebt nu iets meer beveiliging tegen SQL injection:

foreach($_POST as $key => $veld) {
$_POST[$key] = mysql_real_escape_string($veld);
}

Die zorgt ervoor dat men niet een ' of " kan gebruiken om UIT je SQL code te breken om zo een alternatief stukje SQL erin te planten.
Nu wordt namelijk:

' = \'
" = \"
\ = \\

En dan om het uit de database weer te geven kan je wel gewoon een globale functie maken:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
function db2txt($txt){
  return stripslashes(htmlentities($txt));
}

?>


Als je dan een veld weergeeft met
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo db2txt($row['colomnaam']); ?>
dan zorgt het ervoor dat HTML codes in de velden niet wordt geparsed, en dat de slashes weer weggehaald worden bij ' en " en \.
 
Terence Hersbach

Terence Hersbach

17/06/2008 10:23:00
Quote Anchor link
alleen je datamodel klopt nog niet:
je hebt een veld bedrijfsnaam, maar er kunnen meerdere bedrijven 'Thomas BV' heten. Als je daarvoor een aparte table maakt, kun je zien, ow dat is 'Thomas BV' uit rotterdam en die andere is 'Thomas BV' uit amsterdam. Je koppelt hem dan dmv een id aan de persoon, je datamodel wordt dan zo:
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
adm_klanten (
    klantID,
    bedrijfsid,
    kvk,
    achternaam,
    tussenvoegsel,
    voorletters,
    roepnaam
)

adm_bedrijven (
    bedrijfsID,
    naam,
    plaats,
    ..
)
Gewijzigd op 01/01/1970 01:00:00 door Terence Hersbach
 
Jesper Diovo

Jesper Diovo

17/06/2008 10:24:00
Quote Anchor link
Jelle Posthuma schreef op 17.06.2008 10:07:
En dan om het uit de database weer te geven kan je wel gewoon een globale functie maken:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
function db2txt($txt){
  return stripslashes(htmlentities($txt));
}

?>


Als je dan een veld weergeeft met
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo db2txt($row['colomnaam']); ?>
dan zorgt het ervoor dat HTML codes in de velden niet wordt geparsed, en dat de slashes weer weggehaald worden bij ' en " en \.


Daar ben ik het dan weer niet mee eens. mysql_real_escape_string() zorgt er inderdaad voor dat de 'gevaarlijke' tekens geëscaped worden, maar doet dit zo dat je bij output niets hoeft te doen met de data uit de database. De backslashes zijn namelijk al weggehaald bij het daadwerkelijke inserten in de database. Alleen de structurele query bevat die backslashes.

htmlentities() is alleen nodig als je HTML gaat outputten, in vele gevallen is dat niet het geval, dus niet nodig ;-).
 
Martijn Thomas

Martijn Thomas

17/06/2008 10:27:00
Quote Anchor link
Owkeej dat weergeven komt later vandaag :)

Nu heb ik de rest ook toegevoegd, maar gevoelsmatig na jullie commentaar op de vorige code kan ik dat vast weer beter op een andere manier doen.

Daarnaast werkt hij enkel tot de eerste 1 (dus enkel de algemene gegevens worden toegevoegd.

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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
<?php

    include "database.php";
//    include "functions";

if(isset($_POST['klant_toevoegen'])) {

    foreach($_POST as $key => $veld) {
        $_POST[$key] = mysql_real_escape_string($veld);
    }

    
    $sql = "INSERT INTO
                adm_klanten (
                    klantID,
                    bedrijfsnaam,
                    kvk,
                    achternaam,
                    tussenvoegsel,
                    voorletters,
                    roepnaam
              ) VALUES (
                '',
                '"
. $_POST['bedrijfsnaam']. "',
                '"
. $_POST['kvk'] . "',
                '"
. $_POST['achternaam'] . "',
                '"
. $_POST['tussenvoegsel'] . "',
                '"
. $_POST['voorletters'] . "',
                '"
. $_POST['roepnaam'] . "'
              )"
;
              
    
    // Voer de query uit om klant toe te voegen
    if(mysql_query($sql)) {
        // Indien succesvol
        echo "De klant is toegevoegd aan het klanten bestand! <br>";
    }

    else {
        // Indien gefaald
        echo '<div>Kan niet worden toegevoegd: <br/><br/>'.mysql_error().'</div>';
    }
                  
    
    // MySQL query om klantID te verkrijgen
    $sql2 = "SELECT MAX(klantID)
            FROM adm_klanten
            "
;
    
    // Voer de query uit om klantID te verkrijgen
    if(mysql_query($sql2)) {
        // Indiens succesvol
        echo "Het klant nummer is: " . $klantID . "<br>";
    }

    else {
        //Indien gefaald
        echo '<div>Kan niet worden toegevoegd: <br/><br/>'.mysql_error().'</div>';
    }

    
    // Query om adminisratief adres toe te voegen
    $sql3 = "INSERT INTO
                adm_klanten_adm (
                    klantID,
                    adm_tnv,
                    adm_straat,
                    adm_huisnummer,
                    adm_postcode1,
                    adm_postcode2,
                    adm_plaats,
                    adm_land,
                    adm_email,
                    adm_telefoon1,
                    adm_telefoon2,
                    adm_mobiel1,
                    adm_mobiel2,
                    adm_fax1,
                    adm_fax2
                ) VALUES (
                    '"
. $klantID . "',
                    '"
. $_POST['adm_tnv'] . "',
                    '"
. $_POST['adm_straat'] . "',
                    '"
. $_POST['adm_huisnummer'] . "',
                    '"
. $_POST['adm_postcode1'] . "',
                    '"
. $_POST['adm_postcode2'] . "',
                    '"
. $_POST['adm_plaats'] . "',
                    '"
. $_POST['adm_land'] . "',
                    '"
. $_POST['adm_email'] . "',
                    '"
. $_POST['adm_telefoon1'] . "',
                    '"
. $_POST['adm_telefoon2'] . "',
                    '"
. $_POST['adm_mobiel1'] . "',
                    '"
. $_POST['adm_mobiel2'] . "',
                    '"
. $_POST['adm_fax1'] . "',
                    '"
. $_POST['adm_fax2'] . "'
                )"
;
    
    // Query uitvoeren om administratief adres toe tevoegen              
    if(mysql_query($sql3)) {
        // Indiens succesvol
        echo "Het administrative adres is toegevoegd aan de db <br>";
    }

    else {
        //Indien gefaald
        echo '<div>Kan niet worden toegevoegd: <br/><br/>'.mysql_error().'</div>';
    }

    
    // Query om financieel adres toe te voegen
    $sql4 = "INSERT INTO
                adm_klanten_fin (
                    klantID,
                    fin_tnv,
                    fin_straat,
                    fin_huisnummer,
                    fin_postcode1,
                    fin_postcode2,
                    fin_plaats,
                    fin_land,
                    fin_email,
                    fin_telefoon1,
                    fin_telefoon2,
                    fin_mobiel1,
                    fin_mobiel2,
                    fin_fax1,
                    fin_fax2
                ) VALUES (
                    '"
. $klantID . "',
                    '"
. $_POST['fin_tnv'] . "',
                    '"
. $_POST['fin_straat'] . "',
                    '"
. $_POST['fin_huisnummer'] . "',
                    '"
. $_POST['fin_postcode1'] . "',
                    '"
. $_POST['fin_postcode2'] . "',
                    '"
. $_POST['fin_plaats'] . "',
                    '"
. $_POST['fin_land'] . "',
                    '"
. $_POST['fin_email'] . "',
                    '"
. $_POST['fin_telefoon1'] . "',
                    '"
. $_POST['fin_telefoon2'] . "',
                    '"
. $_POST['fin_mobiel1'] . "',
                    '"
. $_POST['fin_mobiel2'] . "',
                    '"
. $_POST['fin_fax1'] . "',
                    '"
. $_POST['fin_fax2'] . "'
                )"
;
    
    // Query uitvoeren om financieel adres toe tevoegen              
    if(mysql_query($sql4)) {
        // Indiens succesvol
        echo "Het financiele adres is toegevoegd aan de db <br>";
    }

    else {
        //Indien gefaald
        echo '<div>Kan niet worden toegevoegd: <br/><br/>'.mysql_error().'</div>';
    }
        
    
}

?>
 
Martijn Thomas

Martijn Thomas

17/06/2008 10:31:00
Quote Anchor link
Terence schreef op 17.06.2008 10:23:
alleen je datamodel klopt nog niet:
je hebt een veld bedrijfsnaam, maar er kunnen meerdere bedrijven 'Thomas BV' heten. Als je daarvoor een aparte table maakt, kun je zien, ow dat is 'Thomas BV' uit rotterdam en die andere is 'Thomas BV' uit amsterdam. Je koppelt hem dan dmv een id aan de persoon, je datamodel wordt dan zo:
Je doelt op normaliseren, ik heb hem al voor een deel genormaliseerd :) maar je hebt gelijk dat dat nog niet helemaal het geval is. Ik heb nu bijv ook geen lijst met telefoonnummers, die komen nu nog bij de betreffende adressen te staan. Maar dat is iets waar ik later naar wil kijken :)

Ik probeer altijd het werkend te krijgen om het vervolgens te gaan verbeteren :) Beetje alla scrum
Gewijzigd op 01/01/1970 01:00:00 door Martijn Thomas
 
Jelle Posthuma

Jelle Posthuma

17/06/2008 10:33:00
Quote Anchor link
Jezpur schreef op 17.06.2008 10:24:
Jelle Posthuma schreef op 17.06.2008 10:07:
En dan om het uit de database weer te geven kan je wel gewoon een globale functie maken:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
function db2txt($txt){
  return stripslashes(htmlentities($txt));
}

?>


Als je dan een veld weergeeft met
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo db2txt($row['colomnaam']); ?>
dan zorgt het ervoor dat HTML codes in de velden niet wordt geparsed, en dat de slashes weer weggehaald worden bij ' en " en \.


Daar ben ik het dan weer niet mee eens. mysql_real_escape_string() zorgt er inderdaad voor dat de 'gevaarlijke' tekens geëscaped worden, maar doet dit zo dat je bij output niets hoeft te doen met de data uit de database. De backslashes zijn namelijk al weggehaald bij het daadwerkelijke inserten in de database. Alleen de structurele query bevat die backslashes.

htmlentities() is alleen nodig als je HTML gaat outputten, in vele gevallen is dat niet het geval, dus niet nodig ;-).


Oke, bedankt voor de toelichting.
Ik dacht dat stripslashes ik twijfelde al of stripslashes nodig was.
Zelf heb ik gewoon altijd 1 grote globale functies die netjes alle afhandeling doet bij het ophalen uit de database, en bij het toevoegen.
Daarin heb ik sowieso altijd standaard htmlentities in staan.
Je weet maar nooit wat voor grapjas je tegen komt die dan een javascript erin gooit bijvoorbeeld die de hele tijd alerts laat zien waardoor je gelijk al een slechte naam krijgt dat je zulke dingen op je site hebt.
Daarom heb ik dan zoiets van: Zekerheid voor alles.
 
Martijn Thomas

Martijn Thomas

17/06/2008 12:10:00
Quote Anchor link
Was en lompe fout van me, ik liet hem niet de gegevens in een var wegschrijven als ik het klant id ophaal.

Nu werkt het wel!

Thnx Allemaal!
 

Pagina: 1 2 volgende »



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.