Slaat constant zelfde waarde op in DB
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)
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
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!";
}
?>
$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
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.
Succes
Ik zag net ook dat hij op auto_increment staat maar ik zie in waar ik dat in de db heb ingesteld :S
mysql_real_escape_string().
Trouwens, dit stukje code is korter dan jouw 36 overbodige regels:
Code (php)
1
2
3
4
5
2
3
4
5
<?php
foreach($_POST as $key => $veld) {
$_POST[$key] = mysql_real_escape_string($veld);
}
?>
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.
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)
1
2
3
4
5
2
3
4
5
<?php
foreach($_POST as $key => $veld) {
$_POST[$key] = mysql_real_escape_string($veld);
}
?>
foreach($_POST as $key => $veld) {
$_POST[$key] = mysql_real_escape_string($veld);
}
?>
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.
$klantID was maar een voorbeeld. Naar eigen inzicht gebruiken
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?
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)
1
2
3
4
5
2
3
4
5
<?php
foreach($_POST as $key => $veld) {
$_POST[$key] = mysql_real_escape_string($veld);
}
?>
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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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 ());
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
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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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 ());
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...
En sowieso, kan die or die beter vervangen worden idd.
Code (php)
1
2
3
4
5
6
7
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>';
}
?>
if(mysql_query($sql)){
// Succesvol toegevoegd
}else{
echo '<div>Kan niet worden toegevoegd: <br/><br/>'.mysql_error().'</div>';
}
?>
Jelle Posthuma schreef op 17.06.2008 09:52:
@Jezpur, gaat mij ff om die SQL code
Klopt, maar ik ben altijd Pietje Precies ;-).
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
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>';
}
}
?>
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
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:
Als je dan een veld weergeeft met dan zorgt het ervoor dat HTML codes in de velden niet wordt geparsed, en dat de slashes weer weggehaald worden bij ' en " en \.
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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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,
..
)
klantID,
bedrijfsid,
kvk,
achternaam,
tussenvoegsel,
voorletters,
roepnaam
)
adm_bedrijven (
bedrijfsID,
naam,
plaats,
..
)
Gewijzigd op 01/01/1970 01:00:00 door Terence Hersbach
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:
Als je dan een veld weergeeft met dan zorgt het ervoor dat HTML codes in de velden niet wordt geparsed, en dat de slashes weer weggehaald worden bij ' en " en \.
Als je dan een veld weergeeft met 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 ;-).
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)
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
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>';
}
}
?>
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>';
}
}
?>
Terence schreef op 17.06.2008 10:23:
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 :)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 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:
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
Jezpur schreef op 17.06.2008 10:24:
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 ;-).
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:
Als je dan een veld weergeeft met dan zorgt het ervoor dat HTML codes in de velden niet wordt geparsed, en dat de slashes weer weggehaald worden bij ' en " en \.
Als je dan een veld weergeeft met 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.
Nu werkt het wel!
Thnx Allemaal!