Linkbuilding CMS Demo
Pagina: « vorige 1 2 3 4 volgende »
Ik heb alles geüpdate en heb de demo opnieuw geupload, hopelijk is die nu goed :)Dus niet alles ;) Ik heb een bedrijf toegevoegd. Maar alle ' worden \'. Dat is natuurlijk niet gewenst.
(of het bij het ophalen nog een keer doet)
De str_replace is niet meer nodig en niet gewenst.
Gewijzigd op 17/04/2014 13:11:26 door Michael -
Bedrijf aanpassen:
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
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
<?php
if(isset($_GET['id']))
{
$id = $_GET['id'];
if($_SERVER['REQUEST_METHOD'] == "POST")
{
if (strlen($_POST['bedrijf'])<1)
{
$melding = 'Er is geen bedrijfsnaam ingevuld!';
}
else
{
if (strlen($_POST['jaar'])<4)
{
$melding = 'Er is geen jaartal ingevuld!';
}
else
{
$updateCheck = "UPDATE linkbuilding_check
SET bedrijf = '" . htmlentities(mysql_real_escape_string($_POST['bedrijf'])) . "',
jaar = '" . htmlentities(mysql_real_escape_string($_POST['jaar'])) . "',
januari = '" . htmlentities(mysql_real_escape_string($_POST['januari'])) . "',
februari = '" . htmlentities(mysql_real_escape_string($_POST['februari'])) . "',
maart = '" . htmlentities(mysql_real_escape_string($_POST['maart'])) . "',
april = '" . htmlentities(mysql_real_escape_string($_POST['april'])) . "',
mei = '" . htmlentities(mysql_real_escape_string($_POST['mei'])) . "',
juni = '" . htmlentities(mysql_real_escape_string($_POST['juni'])) . "',
juli = '" . htmlentities(mysql_real_escape_string($_POST['juli'])) . "',
augustus = '" . htmlentities(mysql_real_escape_string($_POST['augustus'])) . "',
september = '" . htmlentities(mysql_real_escape_string($_POST['september'])) . "',
oktober = '" . htmlentities(mysql_real_escape_string($_POST['oktober'])) . "',
november = '" . htmlentities(mysql_real_escape_string($_POST['november'])) . "',
december = '" . htmlentities(mysql_real_escape_string($_POST['december'])) . "'
WHERE id='$id'";
$queryEdit = mysql_query($updateCheck);
if ($queryEdit)
{
$queryLogboek = mysql_query("INSERT INTO logboek (name, action, date) VALUES ('$username', 'Heeft het bedrijf " . $_POST['bedrijf'] . " aangepast', NOW() )");
if($queryLogboek)
{
echo '<script>javascript:history.go(-2)</script>';
}
}
}
}
}
}
$querySelect = mysql_query("SELECT * FROM linkbuilding_check where id ='$id'");
$queryFetch = mysql_fetch_array($querySelect);
?>
if(isset($_GET['id']))
{
$id = $_GET['id'];
if($_SERVER['REQUEST_METHOD'] == "POST")
{
if (strlen($_POST['bedrijf'])<1)
{
$melding = 'Er is geen bedrijfsnaam ingevuld!';
}
else
{
if (strlen($_POST['jaar'])<4)
{
$melding = 'Er is geen jaartal ingevuld!';
}
else
{
$updateCheck = "UPDATE linkbuilding_check
SET bedrijf = '" . htmlentities(mysql_real_escape_string($_POST['bedrijf'])) . "',
jaar = '" . htmlentities(mysql_real_escape_string($_POST['jaar'])) . "',
januari = '" . htmlentities(mysql_real_escape_string($_POST['januari'])) . "',
februari = '" . htmlentities(mysql_real_escape_string($_POST['februari'])) . "',
maart = '" . htmlentities(mysql_real_escape_string($_POST['maart'])) . "',
april = '" . htmlentities(mysql_real_escape_string($_POST['april'])) . "',
mei = '" . htmlentities(mysql_real_escape_string($_POST['mei'])) . "',
juni = '" . htmlentities(mysql_real_escape_string($_POST['juni'])) . "',
juli = '" . htmlentities(mysql_real_escape_string($_POST['juli'])) . "',
augustus = '" . htmlentities(mysql_real_escape_string($_POST['augustus'])) . "',
september = '" . htmlentities(mysql_real_escape_string($_POST['september'])) . "',
oktober = '" . htmlentities(mysql_real_escape_string($_POST['oktober'])) . "',
november = '" . htmlentities(mysql_real_escape_string($_POST['november'])) . "',
december = '" . htmlentities(mysql_real_escape_string($_POST['december'])) . "'
WHERE id='$id'";
$queryEdit = mysql_query($updateCheck);
if ($queryEdit)
{
$queryLogboek = mysql_query("INSERT INTO logboek (name, action, date) VALUES ('$username', 'Heeft het bedrijf " . $_POST['bedrijf'] . " aangepast', NOW() )");
if($queryLogboek)
{
echo '<script>javascript:history.go(-2)</script>';
}
}
}
}
}
}
$querySelect = mysql_query("SELECT * FROM linkbuilding_check where id ='$id'");
$queryFetch = mysql_fetch_array($querySelect);
?>
Bedrijf toevoegen:
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
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
<?php
if($_SERVER['REQUEST_METHOD'] == "POST")
{
if (strlen($_POST['bedrijf'])<1)
{
$melding = 'Er is geen bedrijfsnaam ingevuld!';
}
else
{
if (strlen($_POST['jaar'])<4)
{
$melding = 'Er is geen jaartal ingevuld!';
}
else
{
$insertCheck = "INSERT INTO linkbuilding_check
VALUES( '',
'',
'" . htmlentities(mysql_real_escape_string($_POST['bedrijf'])) . "',
'" . htmlentities(mysql_real_escape_string($_POST['jaar'])) . "',
'" . htmlentities(mysql_real_escape_string($_POST['januari'])) . "',
'" . htmlentities(mysql_real_escape_string($_POST['februari'])) . "',
'" . htmlentities(mysql_real_escape_string($_POST['maart'])) . "',
'" . htmlentities(mysql_real_escape_string($_POST['april'])) . "',
'" . htmlentities(mysql_real_escape_string($_POST['mei'])) . "',
'" . htmlentities(mysql_real_escape_string($_POST['juni'])) . "',
'" . htmlentities(mysql_real_escape_string($_POST['juli'])) . "',
'" . htmlentities(mysql_real_escape_string($_POST['augustus'])) . "',
'" . htmlentities(mysql_real_escape_string($_POST['september'])) . "',
'" . htmlentities(mysql_real_escape_string($_POST['oktober'])) . "',
'" . htmlentities(mysql_real_escape_string($_POST['november'])) . "',
'" . htmlentities(mysql_real_escape_string($_POST['december'])) . "')";
$queryInsert = mysql_query($insertCheck);
if($queryInsert)
{
$queryLogboek = mysql_query("INSERT INTO logboek (name, action, date) VALUES ('$username', 'Heeft het bedrijf " . $_POST['bedrijf'] . " toegevoegd', NOW() )");
if($queryLogboek)
{
echo '<script type="text/javascript">';
echo 'window.location = "check.php"';
echo '</script>';
}
}
}
}
}
?>
if($_SERVER['REQUEST_METHOD'] == "POST")
{
if (strlen($_POST['bedrijf'])<1)
{
$melding = 'Er is geen bedrijfsnaam ingevuld!';
}
else
{
if (strlen($_POST['jaar'])<4)
{
$melding = 'Er is geen jaartal ingevuld!';
}
else
{
$insertCheck = "INSERT INTO linkbuilding_check
VALUES( '',
'',
'" . htmlentities(mysql_real_escape_string($_POST['bedrijf'])) . "',
'" . htmlentities(mysql_real_escape_string($_POST['jaar'])) . "',
'" . htmlentities(mysql_real_escape_string($_POST['januari'])) . "',
'" . htmlentities(mysql_real_escape_string($_POST['februari'])) . "',
'" . htmlentities(mysql_real_escape_string($_POST['maart'])) . "',
'" . htmlentities(mysql_real_escape_string($_POST['april'])) . "',
'" . htmlentities(mysql_real_escape_string($_POST['mei'])) . "',
'" . htmlentities(mysql_real_escape_string($_POST['juni'])) . "',
'" . htmlentities(mysql_real_escape_string($_POST['juli'])) . "',
'" . htmlentities(mysql_real_escape_string($_POST['augustus'])) . "',
'" . htmlentities(mysql_real_escape_string($_POST['september'])) . "',
'" . htmlentities(mysql_real_escape_string($_POST['oktober'])) . "',
'" . htmlentities(mysql_real_escape_string($_POST['november'])) . "',
'" . htmlentities(mysql_real_escape_string($_POST['december'])) . "')";
$queryInsert = mysql_query($insertCheck);
if($queryInsert)
{
$queryLogboek = mysql_query("INSERT INTO logboek (name, action, date) VALUES ('$username', 'Heeft het bedrijf " . $_POST['bedrijf'] . " toegevoegd', NOW() )");
if($queryLogboek)
{
echo '<script type="text/javascript">';
echo 'window.location = "check.php"';
echo '</script>';
}
}
}
}
}
?>
Gewijzigd op 17/04/2014 13:25:33 door racoon smasher
Je faalt hier 2x... Ten eerst controleer je niet wat erin id zit. Id zou een getal moeten zijn dus controleer dit ook!
Bij een getal horen geen quotes. Dus id = $id; en niet id = '$id';
Michael - op 17/04/2014 13:54:32:
KUCH ik leer hier meer dan op school KUCH
tja ik zit dan ook op het radius college xd
ik zal het zo even toepassen :) maar dat kan toch niet het gene zijn dat het probleem veroorzaakt?
Quote:
Bij een getal horen geen quotes. Dus id = $id; en niet id = '$id';
om een string MOETEN quotes, omdat anders niet direct duidelijk is of het om een keyword gaat, kolomnaam etc.
Maar het is niet verboden!
Sterker nog, het is verstandig om de quotes wel te gebruiken.
Stel iemand gooit een ' in $_GET['id']
dan zou
WHERE id = '" . mysql_real_escape_string($_GET['id']) ."'
dat oplossen (beveiligen), maar zonder die '' ben je nog nergens.
Dat brengt me meteen op de controle op "getal": er zijn ook de nodige manieren om een getal te schrijven die toch een error zouden opleveren. 3.14E-05 is ook een getal.
--
En als $_GET niet blijkt te bestaan op regel 3, dan wordt $id niet geset, maar
op regel 53 gebruik je wel $id....
WHERE id = '$_GET['id']'
vind jij dus correct...
Ik zou eerder WHERE id = (int)$_GET['id']
gebruiken. En controleren met if(isset($_GET['id']) && ctype_digit($_GET['id']))
Met ctype_digit valt 3.14E-05 buiten boord.
Gewijzigd op 17/04/2014 14:12:12 door Michael -
WHERE id = '$_GET['id']'
moet minstens zijn:
WHERE id = '". mysql_real_escape_string($_GET['id']) ."'
---
controle op het bestaan en of het een int is doe ik met
Waarna ik dan dus $id gebruik.
Sowieso, omdat het niet heel netjes is om midden in classes $_GET te gebruiken.
En blijven escapen op de plek waar je de query opbouwt. (of prepared statements)
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
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
<?php
if($id = filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT))
{
/* $id = $_GET['id']; */
if($_SERVER['REQUEST_METHOD'] == "POST")
{
if (strlen($_POST['bedrijf'])<1)
{
$melding = 'Er is geen bedrijfsnaam ingevuld!';
}
else
{
if (strlen($_POST['jaar'])<4)
{
$melding = 'Er is geen jaartal ingevuld!';
}
else
{
$updateCheck = "UPDATE linkbuilding_check
SET bedrijf = '" . htmlentities(mysql_real_escape_string($_POST['bedrijf'])) . "',
jaar = '" . htmlentities(mysql_real_escape_string($_POST['jaar'])) . "',
januari = '" . htmlentities(mysql_real_escape_string($_POST['januari'])) . "',
februari = '" . htmlentities(mysql_real_escape_string($_POST['februari'])) . "',
maart = '" . htmlentities(mysql_real_escape_string($_POST['maart'])) . "',
april = '" . htmlentities(mysql_real_escape_string($_POST['april'])) . "',
mei = '" . htmlentities(mysql_real_escape_string($_POST['mei'])) . "',
juni = '" . htmlentities(mysql_real_escape_string($_POST['juni'])) . "',
juli = '" . htmlentities(mysql_real_escape_string($_POST['juli'])) . "',
augustus = '" . htmlentities(mysql_real_escape_string($_POST['augustus'])) . "',
september = '" . htmlentities(mysql_real_escape_string($_POST['september'])) . "',
oktober = '" . htmlentities(mysql_real_escape_string($_POST['oktober'])) . "',
november = '" . htmlentities(mysql_real_escape_string($_POST['november'])) . "',
december = '" . htmlentities(mysql_real_escape_string($_POST['december'])) . "'
WHERE id='". mysql_real_escape_string($_GET['id']) ."'";
$queryEdit = mysql_query($updateCheck);
if ($queryEdit)
{
$queryLogboek = mysql_query("INSERT INTO logboek (name, action, date) VALUES ('$username', 'Heeft het bedrijf " . $_POST['bedrijf'] . " aangepast', NOW() )");
if($queryLogboek)
{
echo '<script>javascript:history.go(-2)</script>';
}
}
}
}
}
}
$querySelect = mysql_query("SELECT * FROM linkbuilding_check where id ='$id'");
$queryFetch = mysql_fetch_array($querySelect);
?>
if($id = filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT))
{
/* $id = $_GET['id']; */
if($_SERVER['REQUEST_METHOD'] == "POST")
{
if (strlen($_POST['bedrijf'])<1)
{
$melding = 'Er is geen bedrijfsnaam ingevuld!';
}
else
{
if (strlen($_POST['jaar'])<4)
{
$melding = 'Er is geen jaartal ingevuld!';
}
else
{
$updateCheck = "UPDATE linkbuilding_check
SET bedrijf = '" . htmlentities(mysql_real_escape_string($_POST['bedrijf'])) . "',
jaar = '" . htmlentities(mysql_real_escape_string($_POST['jaar'])) . "',
januari = '" . htmlentities(mysql_real_escape_string($_POST['januari'])) . "',
februari = '" . htmlentities(mysql_real_escape_string($_POST['februari'])) . "',
maart = '" . htmlentities(mysql_real_escape_string($_POST['maart'])) . "',
april = '" . htmlentities(mysql_real_escape_string($_POST['april'])) . "',
mei = '" . htmlentities(mysql_real_escape_string($_POST['mei'])) . "',
juni = '" . htmlentities(mysql_real_escape_string($_POST['juni'])) . "',
juli = '" . htmlentities(mysql_real_escape_string($_POST['juli'])) . "',
augustus = '" . htmlentities(mysql_real_escape_string($_POST['augustus'])) . "',
september = '" . htmlentities(mysql_real_escape_string($_POST['september'])) . "',
oktober = '" . htmlentities(mysql_real_escape_string($_POST['oktober'])) . "',
november = '" . htmlentities(mysql_real_escape_string($_POST['november'])) . "',
december = '" . htmlentities(mysql_real_escape_string($_POST['december'])) . "'
WHERE id='". mysql_real_escape_string($_GET['id']) ."'";
$queryEdit = mysql_query($updateCheck);
if ($queryEdit)
{
$queryLogboek = mysql_query("INSERT INTO logboek (name, action, date) VALUES ('$username', 'Heeft het bedrijf " . $_POST['bedrijf'] . " aangepast', NOW() )");
if($queryLogboek)
{
echo '<script>javascript:history.go(-2)</script>';
}
}
}
}
}
}
$querySelect = mysql_query("SELECT * FROM linkbuilding_check where id ='$id'");
$queryFetch = mysql_fetch_array($querySelect);
?>
Gewijzigd op 17/04/2014 14:26:00 door racoon smasher
Dus je wéét dat het een int is. Waarom vertrouw je die variabele dan alsnog niet?
edit: en ik snap nog altijd niet waarom je eerst van $id een int maakt, en vervolgens in de query controleert als een string.
Gewijzigd op 17/04/2014 14:28:05 door Michael -
htmlentities() zou ik overal achterwege laten: die functie hoor je in combinatie met echo te gebruiken.
Je past nu namelijk de invoer aan. Wil je die ooit nog bewerken, zit je met dingen als < en ë opgescheept.
Op regel 53 bestaat $id nog steeds niet.
Ivo P op 17/04/2014 14:28:10:
op regel 36 kun je eventueel nog $id gebruiken.
htmlentities() zou ik overal achterwege laten: die functie hoor je in combinatie met echo te gebruiken.
Je past nu namelijk de invoer aan. Wil je die ooit nog bewerken, zit je met dingen als < en ë opgescheept.
Op regel 53 bestaat $id nog steeds niet.
htmlentities() zou ik overal achterwege laten: die functie hoor je in combinatie met echo te gebruiken.
Je past nu namelijk de invoer aan. Wil je die ooit nog bewerken, zit je met dingen als < en ë opgescheept.
Op regel 53 bestaat $id nog steeds niet.
owja regel 53 klopt inderdaad, zag het over het hoofd, maar hoezo htmlentities() weghalen? dan kan je juist weer <script><script><script><script><script><script><script> doen en dat is ook niet goed
Je code kan nog eens aangepast worden, waardoor je waterdichte controle alsnog niet meer werkt in alle gevallen.
Zeker als code grote stukken uit elkaar staat, kan de invloed van een kleine verandering wel eens groter blijken.
Ik zeg net bijvoorbeeld dat htmlentities() daar niet thuis hoort.
Wat daar dan eigenlijk wel duidelijk bij gezegd moet worden: als je dit aanpast, moet wel aan de andere kant (op het scherm echo-en) htmlspecialchars() gebruikt worden.
Ook bijvoorbeeld als je een pdf maakt, heb je een probleem als je data kapot gemaakt is met htmlenities.
----
iets anders: waarom 12 kolommen met de namen van de maanden?
Wat ga je daar opslaan?
Hoe wil je optellen over een jaar?
Hoe gaat dat als we een jaar verder zijn? komt dan het totaal van de maand april 2015 bij april van dit jaar?
real_escape_string() voorkomt dat al. Htmlentities kan dus wel weg.
Ivo P op 17/04/2014 14:33:44:
iets anders: waarom 12 kolommen met de namen van de maanden?
Wat ga je daar opslaan?
Hoe wil je optellen over een jaar?
Hoe gaat dat als we een jaar verder zijn? komt dan het totaal van de maand april 2015 bij april van dit jaar?
iets anders: waarom 12 kolommen met de namen van de maanden?
Wat ga je daar opslaan?
Hoe wil je optellen over een jaar?
Hoe gaat dat als we een jaar verder zijn? komt dan het totaal van de maand april 2015 bij april van dit jaar?
dan zal er een nieuwe aangemaakt moeten worden met het jaar 2015 en wordt 2014 inactief gezet, maar dat ga ik later allemaal nog uitbreiden
Zoiets heet database normalisatie. Niet 12 vaste velden, maar oneindig.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
$insertCheck = "INSERT INTO linkbuilding_check
VALUES( '',
'',
'" . mysql_real_escape_string($_POST['bedrijf']) . "',
'" . mysql_real_escape_string($_POST['jaar']) . "',
'" . mysql_real_escape_string($_POST['januari']) . "',
'" . mysql_real_escape_string($_POST['februari']) . "',
'" . mysql_real_escape_string($_POST['maart']) . "',
'" . mysql_real_escape_string($_POST['april']) . "',
'" . mysql_real_escape_string($_POST['mei']) . "',
'" . mysql_real_escape_string($_POST['juni']) . "',
'" . mysql_real_escape_string($_POST['juli']) . "',
'" . mysql_real_escape_string($_POST['augustus']) . "',
'" . mysql_real_escape_string($_POST['september']) . "',
'" . mysql_real_escape_string($_POST['oktober']) . "',
'" . mysql_real_escape_string($_POST['november']) . "',
'" . mysql_real_escape_string($_POST['december']) . "')";
$queryInsert = mysql_query($insertCheck);
?>
$insertCheck = "INSERT INTO linkbuilding_check
VALUES( '',
'',
'" . mysql_real_escape_string($_POST['bedrijf']) . "',
'" . mysql_real_escape_string($_POST['jaar']) . "',
'" . mysql_real_escape_string($_POST['januari']) . "',
'" . mysql_real_escape_string($_POST['februari']) . "',
'" . mysql_real_escape_string($_POST['maart']) . "',
'" . mysql_real_escape_string($_POST['april']) . "',
'" . mysql_real_escape_string($_POST['mei']) . "',
'" . mysql_real_escape_string($_POST['juni']) . "',
'" . mysql_real_escape_string($_POST['juli']) . "',
'" . mysql_real_escape_string($_POST['augustus']) . "',
'" . mysql_real_escape_string($_POST['september']) . "',
'" . mysql_real_escape_string($_POST['oktober']) . "',
'" . mysql_real_escape_string($_POST['november']) . "',
'" . mysql_real_escape_string($_POST['december']) . "')";
$queryInsert = mysql_query($insertCheck);
?>
maar dit lost nog steeds niet het probleem op dat hij van ' dit maakt \'
welke code kan ik gebruiken om te zeggen dat tekens zoals ' niet mogen?
Gewijzigd op 17/04/2014 14:51:37 door racoon smasher
Quote:
real_escape_string() voorkomt dat al. Htmlentities kan dus wel weg
nee. htmlspecialchars() moet wel toegepast worden, maar niet hier.
Die functie gebruik je bij echo.
stel ik sla de naam Mariëlle op.
Dan maakt die htmlentities daar Mariëlle van.
Geen probleem, tot je er een plain-text mail, of een pdf van maakt.
----
Je zou de data compleet anders op moeten slaan.
tabel
id
bedrijfs_id
maand (1-12)
jaar
aantal
dan kun je eenvoudig optellen per kwartaal, per 4 jaar, per afgelopen 5 maanden etc.
en je hoeft niets nieuws per jaar te maken