Opschonen codes
Daarna is er verder weinig meer aan gedaan en nu wil ik de fouten die er al zolang zijn eens oplossen.
Ik kreeg allereerst ergens de tip om quotes beter te gebruiken.
Na echo's geen " meer maar gewoon een enkele.
En alleen bij html dingen als width en dergelijke dubbelen te gebruiken.
Dit is nu goed.
Verder werd mij verteld om de functie empty niet meer te gebruiken.
Want die staat er 1 keer in:
Quote:
if (!empty($c_cadeaubon->Id) && $rechten->Bewerk)
De gehele code rondom de empty:
Quote:
if (!empty($c_cadeaubon->Id) && $rechten->Bewerk)
{
$resultaat = $c_cadeaubon->wijzigen();
}
else if ($rechten -> Toevoegen)
{
$resultaat = $c_cadeaubon->toevoegen();
}
{
$resultaat = $c_cadeaubon->wijzigen();
}
else if ($rechten -> Toevoegen)
{
$resultaat = $c_cadeaubon->toevoegen();
}
Waardoor moet ik dit dan vervangen? Ik heb gelezen om strlen te gebruiken, maar bij wat googlen kwam ik ook de optie Isset tegen?
Ik heb zelf dus geen verstand van php. Wil het wel leren maar wil niet eerst weken leren om vervolgens dit bestand pas aan te kunnen passen, daar heb ik momenteel de tijd niet voor.
Dacht zelf dat als het met strlen moet dat het dan wellicht zo werkt?
Quote:
if (strlen($c_cadeaubon->Id) < 1) && $rechten->Bewerk)
Maar hoop dat iemand mij met bepaalde dingen kan helpen :)
Toevoeging op 15/01/2012 13:43:41:
Inmiddels opgelost door het zo aan te passen:
if (strlen($c_cadeaubon->Id) > 0 && $rechten->Bewerk)
Nu kijken naar de code omdat er veel request wordt gebruikt, en die zou niet moeten worden gebruikt.
Waarom zou je de empty functie weg willen hebben??
Verbeter me als ik 't fout heb..
"Ik heb zelf dus geen verstand van php. Wil het wel leren maar wil niet eerst weken leren om vervolgens dit bestand pas aan te kunnen passen, daar heb ik momenteel de tijd niet voor."
Als jouw auto kapot is dan breng je hem toch naar de garage en ga je niet op goed geluk zelf maar wat liggen prutsen? Ik denk dat het kan gebeuren dat je op deze manier onbewust functionaleit kapotmaakt en je cms openstelt aan veiligheidslekken.
Toevoegen en verwijderen gaat prima, het tonen ook.
Als ik op wijzigen klik dan verschijnt er bij code en bedrag keurig netjes de waarden die in de database staan, maar wil ik iets wijzigen dat werkt dat niet. Hij geeft de ingebouwde foutmelding aan.
Toen ik hulp vroeg kreeg ik van iemand te horen dat het script eerst verbeterd moet worden voor je naar zulke problemen gaat kijken.
Quotes moesten opgelost worden, empty waarde moest ik niet gebruiken en geen request meer gebruiken maar alleen post en get.
Dus ben nu die punten aan het aanpassen.
Dit is de hele code:
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
152
153
154
155
156
157
158
159
160
161
162
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
152
153
154
155
156
157
158
159
160
161
162
<?
include ('layout.php');
include ('../functies/autorisatie.php');
include('../class/cadeaubon.php');
$type = $_SESSION['admin']['type'];
$rechten = new Rechten('cadeaubon', $type);
$scriptnaam = 'cadeaubon.php';
$layout = new Layout();
if ($_SESSION['admin'])
{
if ($rechten->Verwijder && $_REQUEST['aktie'] == 'verw')
{
$c_cadeaubon = new Cadeaubon ($_REQUEST['id']);
if (!$_REQUEST['verwijderen'])
{
$HoofdContent .= '<table width="100%">
<form method="POST" enctype="multipart/form-data" id="form" action="$scriptnaam?id=$c_cadeaubon->Id&aktie=verw&verwijderen=1">
<tr><th>Cadeau en kortingsbonnen</th></tr>";
$HoofdContent .= "<tr><td>Weet u zeker dat deze code mag vervallen?</td></tr>
<tr><td><a href="javascript:document.forms["form"].submit();">Doorgaan met verwijderen</a> - <a href="../admin/cadeaubon.php">Terug</a></td></tr>';
$HoofdContent .= '</form></table>';
}
else if ($rechten->Verwijder)
{
$resultaat = $c_cadeaubon -> verwijder();
$HoofdContent .= '<table width="100%">
<tr><th>Cadeau en kortingsbonnen</th></tr>';
if ($resultaat)
{
$HoofdContent .= '<tr><td>De code is verwijderd.</td></tr><tr><td><a href="../admin/cadeaubon.php">Terug</a></td></tr>';
}
else
{
$HoofdContent .= '<tr><td>De code kon niet worden verwijderd.</td></tr><tr><td><a href="../admin/cadeaubon.php">Terug</a></td></tr>';
}
$HoofdContent .= '</table>';
}
}
else if ($_REQUEST['aktie'] == 'bew' || $_REQUEST['aktie'] == 'toev' || $_POST['opslaan'])
{
if ($_POST['opslaan'])
{
$c_cadeaubon = new cadeaubon ($_POST['id']);
$c_cadeaubon->Code = $_POST['code'];
$c_cadeaubon->Bedrag = $_POST['bedrag'];
if (strlen($c_cadeaubon->Id) > 0 && $rechten->Bewerk)
{
$resultaat = $c_cadeaubon->wijzigen();
}
else if ($rechten -> Toevoegen)
{
$resultaat = $c_cadeaubon->toevoegen();
}
$HoofdContent .= '<table width="100%">
<tr><th>Cadeau en kortingsbonnen</th></tr>';
if ($resultaat)
{
$HoofdContent .= '<tr><td>De code is aangemaakt.</td></tr><tr><td><a href="../admin/cadeaubon.php">Terug</a><br>';
}
else
{
$HoofdContent .= '<tr><td>De code kon niet worden aangemaakt.</td></tr><tr><td><a href="../admin/cadeaubon.php">Terug</a></td></tr>';
}
$HoofdContent .= '</table>';
}
if ($_REQUEST['aktie'] == 'toev' || $_REQUEST['aktie'] == 'bew')
{
if ($_REQUEST['aktie'] == 'bew')
{
$c_cadeaubon = new Cadeaubon ($_REQUEST['id']);
}
else
{
$c_cadeaubon = new Cadeaubon();
}
if ($rechten->Toevoegen || $rechten->Bewerk)
{
$HoofdContent .= '
<table width="100%">
<form action="'.$scriptnaam.'?id='.$c_cadeaubon->Id.'" method="POST" enctype="multipart/form-data" name="form">
<tr>
<th colspan="2">Cadeau en kortingsbonnen</th>
</tr>
<tr>
<td>Code:</td>
<td><input size="30" type="text" name="code" value="'. $c_cadeaubon ->Code . '"></td>
</tr>
<tr>
<td>Bedrag:</td>
<td><input size="30" type="text" name="bedrag" value="' . $c_cadeaubon->Bedrag . '"></td>
</tr>
<tr>
<td><input type="hidden" name="id" value="' . $c_cadeaubon -> Id . '"/>
<input type="submit" name="opslaan" value="Opslaan"/>
<input type="button" name="terug" value="Annuleren" onclick="javascript:parent.location=\'../admin/cadeaubon.php\'"/>
</td>
</tr>
</form>
</table>';
}
}
}
else if($rechten->Lees)
{
$query = 'select * from cadeaubon';
$resultaat = db_query($query);
if ($resultaat)
{
$aantal = mysql_num_rows($resultaat);
if ($aantal > 0)
{
$HoofdContent .= '<table width="100%"><tr><th colspan="3">Cadeau en kortingscodes</th></tr>
<tr><td colspan="3">Hieronder ziet u een overzicht van de cadeau en kortingsbonnen. Klik op bewerken om een code aan te passen.</td></tr>
<tr><th>Code</th><th>Bedrag</th><th>Acties</th></tr>';
for ($i=0; $i < $aantal ; $i++)
{
$rij = mysql_fetch_array($resultaat);
$cadeaubon = new Cadeaubon($rij['id']);
$HoofdContent .='<tr><td>$cadeaubon->Code</td><td>€ $cadeaubon->Bedrag</td><td>';
if ($rechten -> Bewerk)
{
$HoofdContent .='<a href="$scriptnaam?aktie=bew&id=$cadeaubon->Id">Bewerken </a>';
}
if ($rechten -> Verwijder)
{
$HoofdContent .='<a href="$scriptnaam?aktie=verw&id=$cadeaubon->Id">of verwijderen</a>';
}
$HoofdContent .='</td></tr>';
}
$HoofdContent .='<tr><td class="tabelonder" colspan="3">';
if ($rechten -> Toevoegen)
{
$HoofdContent .='<a href="$scriptnaam?aktie=toev">Code toevoegen</a>';
}
$HoofdContent .='</td></tr></table>';
}
else
{
$HoofdContent .='<table width="100%"><tr><th>Cadeau en kortingscodes</th></tr>
<tr><td>Hieronder ziet u een overzicht van de cadeau en kortingsbonnen. Klik op bewerken om een code aan te passen.</td></tr><tr><td>';
if ($rechten -> Toevoegen)
{
$HoofdContent .='<a href="$scriptnaam?aktie=toev">Code toevoegen</a>';
}
$HoofdContent .='</td></tr></table>';
}
}
}
}
$layout -> SetHoofdContent($HoofdContent);
$layout -> Tonen();
?>
include ('layout.php');
include ('../functies/autorisatie.php');
include('../class/cadeaubon.php');
$type = $_SESSION['admin']['type'];
$rechten = new Rechten('cadeaubon', $type);
$scriptnaam = 'cadeaubon.php';
$layout = new Layout();
if ($_SESSION['admin'])
{
if ($rechten->Verwijder && $_REQUEST['aktie'] == 'verw')
{
$c_cadeaubon = new Cadeaubon ($_REQUEST['id']);
if (!$_REQUEST['verwijderen'])
{
$HoofdContent .= '<table width="100%">
<form method="POST" enctype="multipart/form-data" id="form" action="$scriptnaam?id=$c_cadeaubon->Id&aktie=verw&verwijderen=1">
<tr><th>Cadeau en kortingsbonnen</th></tr>";
$HoofdContent .= "<tr><td>Weet u zeker dat deze code mag vervallen?</td></tr>
<tr><td><a href="javascript:document.forms["form"].submit();">Doorgaan met verwijderen</a> - <a href="../admin/cadeaubon.php">Terug</a></td></tr>';
$HoofdContent .= '</form></table>';
}
else if ($rechten->Verwijder)
{
$resultaat = $c_cadeaubon -> verwijder();
$HoofdContent .= '<table width="100%">
<tr><th>Cadeau en kortingsbonnen</th></tr>';
if ($resultaat)
{
$HoofdContent .= '<tr><td>De code is verwijderd.</td></tr><tr><td><a href="../admin/cadeaubon.php">Terug</a></td></tr>';
}
else
{
$HoofdContent .= '<tr><td>De code kon niet worden verwijderd.</td></tr><tr><td><a href="../admin/cadeaubon.php">Terug</a></td></tr>';
}
$HoofdContent .= '</table>';
}
}
else if ($_REQUEST['aktie'] == 'bew' || $_REQUEST['aktie'] == 'toev' || $_POST['opslaan'])
{
if ($_POST['opslaan'])
{
$c_cadeaubon = new cadeaubon ($_POST['id']);
$c_cadeaubon->Code = $_POST['code'];
$c_cadeaubon->Bedrag = $_POST['bedrag'];
if (strlen($c_cadeaubon->Id) > 0 && $rechten->Bewerk)
{
$resultaat = $c_cadeaubon->wijzigen();
}
else if ($rechten -> Toevoegen)
{
$resultaat = $c_cadeaubon->toevoegen();
}
$HoofdContent .= '<table width="100%">
<tr><th>Cadeau en kortingsbonnen</th></tr>';
if ($resultaat)
{
$HoofdContent .= '<tr><td>De code is aangemaakt.</td></tr><tr><td><a href="../admin/cadeaubon.php">Terug</a><br>';
}
else
{
$HoofdContent .= '<tr><td>De code kon niet worden aangemaakt.</td></tr><tr><td><a href="../admin/cadeaubon.php">Terug</a></td></tr>';
}
$HoofdContent .= '</table>';
}
if ($_REQUEST['aktie'] == 'toev' || $_REQUEST['aktie'] == 'bew')
{
if ($_REQUEST['aktie'] == 'bew')
{
$c_cadeaubon = new Cadeaubon ($_REQUEST['id']);
}
else
{
$c_cadeaubon = new Cadeaubon();
}
if ($rechten->Toevoegen || $rechten->Bewerk)
{
$HoofdContent .= '
<table width="100%">
<form action="'.$scriptnaam.'?id='.$c_cadeaubon->Id.'" method="POST" enctype="multipart/form-data" name="form">
<tr>
<th colspan="2">Cadeau en kortingsbonnen</th>
</tr>
<tr>
<td>Code:</td>
<td><input size="30" type="text" name="code" value="'. $c_cadeaubon ->Code . '"></td>
</tr>
<tr>
<td>Bedrag:</td>
<td><input size="30" type="text" name="bedrag" value="' . $c_cadeaubon->Bedrag . '"></td>
</tr>
<tr>
<td><input type="hidden" name="id" value="' . $c_cadeaubon -> Id . '"/>
<input type="submit" name="opslaan" value="Opslaan"/>
<input type="button" name="terug" value="Annuleren" onclick="javascript:parent.location=\'../admin/cadeaubon.php\'"/>
</td>
</tr>
</form>
</table>';
}
}
}
else if($rechten->Lees)
{
$query = 'select * from cadeaubon';
$resultaat = db_query($query);
if ($resultaat)
{
$aantal = mysql_num_rows($resultaat);
if ($aantal > 0)
{
$HoofdContent .= '<table width="100%"><tr><th colspan="3">Cadeau en kortingscodes</th></tr>
<tr><td colspan="3">Hieronder ziet u een overzicht van de cadeau en kortingsbonnen. Klik op bewerken om een code aan te passen.</td></tr>
<tr><th>Code</th><th>Bedrag</th><th>Acties</th></tr>';
for ($i=0; $i < $aantal ; $i++)
{
$rij = mysql_fetch_array($resultaat);
$cadeaubon = new Cadeaubon($rij['id']);
$HoofdContent .='<tr><td>$cadeaubon->Code</td><td>€ $cadeaubon->Bedrag</td><td>';
if ($rechten -> Bewerk)
{
$HoofdContent .='<a href="$scriptnaam?aktie=bew&id=$cadeaubon->Id">Bewerken </a>';
}
if ($rechten -> Verwijder)
{
$HoofdContent .='<a href="$scriptnaam?aktie=verw&id=$cadeaubon->Id">of verwijderen</a>';
}
$HoofdContent .='</td></tr>';
}
$HoofdContent .='<tr><td class="tabelonder" colspan="3">';
if ($rechten -> Toevoegen)
{
$HoofdContent .='<a href="$scriptnaam?aktie=toev">Code toevoegen</a>';
}
$HoofdContent .='</td></tr></table>';
}
else
{
$HoofdContent .='<table width="100%"><tr><th>Cadeau en kortingscodes</th></tr>
<tr><td>Hieronder ziet u een overzicht van de cadeau en kortingsbonnen. Klik op bewerken om een code aan te passen.</td></tr><tr><td>';
if ($rechten -> Toevoegen)
{
$HoofdContent .='<a href="$scriptnaam?aktie=toev">Code toevoegen</a>';
}
$HoofdContent .='</td></tr></table>';
}
}
}
}
$layout -> SetHoofdContent($HoofdContent);
$layout -> Tonen();
?>
En daarbij hoort nog de class, waar de functie wijzigen in staat:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?
function wijzigen()
{
$this -> Code = mysql_real_escape_string($this -> Code);
$this -> Bedrag = str_replace(",",".",$this->Bedrag);
$query = "update cadeaubon
set
code='$this->Code',
bedrag='$this->Bedrag',
where id='$this->Id'";
return db_query($query);
}
?>
function wijzigen()
{
$this -> Code = mysql_real_escape_string($this -> Code);
$this -> Bedrag = str_replace(",",".",$this->Bedrag);
$query = "update cadeaubon
set
code='$this->Code',
bedrag='$this->Bedrag',
where id='$this->Id'";
return db_query($query);
}
?>
Het was niet mijn idee om alles er eerst uit te halen en daarna pas op zoek te gaan naar de reden waarom ik hulp zoek, het niet kunnen wijzigen.
Gewijzigd op 15/01/2012 14:37:53 door J Jongman
Als je de tijd er niet voor kan nemen, ga 't dan inderdaad ook niet proberen. Als je PHP wilt leren moet je er echt even tijd voor nemen. Scheelt je een hoop frustraties..
Ik zou zeggen, klik je zelf naar de tutorials gedeelte op deze website, daar staan genoeg tutorials die jou kunnen helpen om PHP beter te begrijpen.
Het is niet mijn eigen bedoeling geweest om alles om te gooien, maar dat is mij verteld.
empty is dat 0, NULL, false, array() en alle mogelijke combinaties hiervan ook als empty rekent. Dit betekend dat als de var de waarde 0 heeft, wat gewoon een normaal cijfer is het ook als empty wordt doorgegeven en true geeft. Dit zorgt voor problemen:
@Cake Masher, het probleem van Maar je zou dan zelf wel moeten weten wanneer je de functie empty wel of niet kan gebruiken neem ik aan?
Cake Masher op 15/01/2012 14:46:34:
@Wouter J. Aaah zo, bedankt!
Maar je zou dan zelf wel moeten weten wanneer je de functie empty wel of niet kan gebruiken neem ik aan?
Maar je zou dan zelf wel moeten weten wanneer je de functie empty wel of niet kan gebruiken neem ik aan?
Ja, niet dus. Weet jij altijd wanneer je gebruiker wel of niet 0 invult? Als je isset() gebruikt en eventueel checkt op waarde (lengte van de string, count voor een array etc etc) heb je empty() niet meer nodig.
@Erwin, Toevallig weet ik altijd wel, of een gebruiker wel of niet 0 in vult. Als ik bijv. een login systeem ga maken, weet ik zowiezo dat de gebruikersnaam en wachtwoord meer dan 1 karakters moet zijn, en moet bestaan uit letters en cijfers. Idemdito voor email, geboorte datum etc.. Als er nou toch iets zou zijn, dan weet ik dat bij me zelf en pas ik dat toe op het systeem.
Zoals je wilt, als jij het wilt gebruiken moet je dat vooral doen. Weet echter dat er bepaalde situaties zijn dat empty() een andere uitkomst zal geven dan je denkt. Dat is dan wel belangrijk. Met dat in het achterhoofd wil ik dan nog even terug naar je eerste post:
Quote:
Sorry, maar is dit niet klinkklare onzin?
Waarom zou je de empty functie weg willen hebben??
Waarom zou je de empty functie weg willen hebben??
Die opmerking vertelt mij dat je dus blijkbaar NIET wist dat er problemen kunnen ontstaan met het gebruik van empty(). Dat mijn vriend, is dus de reden waarom het gebruik van empty() afgeraden zou moeten worden. Omdat veel mensen die het gebruiken niet precies begrijpen hoe het werkt. Het is dus GEEN klinklare onzin om het af te raden.
Voor de rest, doe wat je wilt, maar kijk niet raar op als er opeens iets niet werkt doordat je empty() gebruikt op de verkeerde manier.
Tips?
Verder is dus de empty functie er inmiddels uit. Dat is vervangen door:
if (strlen($c_cadeaubon->Id) > 0 && $rechten->Bewerk)
Maar is dat voldoende, of moet er meer controle op?
Geen $_REQUEST maar $_POST of $_GET of ... Tis maar net waar die vandaan komt.
Dus ik vervang al die request door post of get.
Maar hoe weet ik welke ik moet gebruiken?
Ze vervangen door post, of get zorgt namelijk voor fouten.
Met request wordt alles prima weergegeven en vertaald, maar met post of get de volgende problemen bij het script die je in het topic ziet.
$scriptnaam wordt niet meer vertaald naar cadeaubon.php
De waarden zijn niet meer de namen van de codes, maar: $cadeaubon->Code
En de waarden van de getallen zijn: $cadeaubon->Bedrag
De Id wordt niet meer opgehaald, in de url is dat: $cadeaubon->Id
Gewijzigd op 15/01/2012 21:29:02 door J Jongman
Nogmaals, als je niet weet waar je mee bezig bent dan kun je beter niet iets aanpassen. Zie mijn eerdere opmerking.
Dat is jou mening, maar ben van mening dat ik op deze manier ook best iets opsteek, als iemand mij meer informatie er over kan geven :)
Dan willen wij je vervolgens met alle plezier helpen. Maar het moet wel van 2 kanten komen. We gaan niet alles klakkeloos voorkauwen. Je zult er zelf ook tijd en enrgie in moeten steken. Dus... go for it!
Maar waar vind ik in het nederlands (engelse tuts gaat niet werken) hoe je juist niet die request moet gebruiken? Dat wordt dan weer niet beschreven..
J Jongman op 17/01/2012 17:35:19:
Maar waar vind ik in het nederlands (engelse tuts gaat niet werken)
Tja, die zijn er niet zo veel. Misschien weet Google er een paar te vinden.
Bijvoorbeeld:
if($_REQUEST['logged_in'] === true) {
// hiep hoi, je bent ingelogd
}
Het gevaar:
Ik roep jouw site als volgt aan:
www.jouwsite.nl/?logged_in=true
Door de url zoals hierboven aan te roepen ben ik plotseling ingelogd!
Hoe moet je $_REQUEST niet gebruiken? Je moet uitzoeken waar de betreffende waarde vandaan komt, uit GET POST COOKIE of SESSION. Als je weet dat de waarde bijvoorbeeld uit $_POST (een formulier) komt dan vervang je $_REQUEST['waarde'] door $_POST['waarde'].
Succes.