In een ini-file 1 waarde wijzigen.
Mijn INI-file ziet er als volgt uit (Dit is een fragment er uit)
Deze wil ik wijzigen in:
Het versienummer is dan dus gewijzigd.
Het aanmaken van het bestand is geen probleem, dus dacht ik het op de zelfde manier te doen.
Hiervoor heb ik een functie:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
//functie om ini-bestand te maken
function write_ini($filename, $b) {
$output = '';
foreach ($b as $section => $settings) {
$output .= '[' . $section . ']' . PHP_EOL;
foreach ($settings as $key => $value) {
$output .= $key . ' = ' . $value . PHP_EOL;
}
$output .= PHP_EOL;
}
file_put_contents($filename, $output);
return true;
}
function write_ini($filename, $b) {
$output = '';
foreach ($b as $section => $settings) {
$output .= '[' . $section . ']' . PHP_EOL;
foreach ($settings as $key => $value) {
$output .= $key . ' = ' . $value . PHP_EOL;
}
$output .= PHP_EOL;
}
file_put_contents($filename, $output);
return true;
}
Met de volgende code dacht ik het muteren te kunnen doen, maar dat lijkt hij niet te doen.
Ik hoopte hiermee de volledige array die ik eerst heb uitgelezen, gemuteerd weer terug te plaatsen.
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
$b = array(
'algemeen'=>array(
'programmanaam'=>$programmanaam,
'versienummer'=>$versienummer),
....);
write_ini($filename, $b);
'algemeen'=>array(
'programmanaam'=>$programmanaam,
'versienummer'=>$versienummer),
....);
write_ini($filename, $b);
Iemand een tip?
Alvast bedankt voor de assistentie.
Vriendelijke groet,
Frits van Leeuwen
Wat gebeurt er dan wel precies?
Is het bestand/de directory schrijfbaar en is het bestand niet gelocked?
En wat @Ariën zegt, wat gebeurt er dan wel?
Dan over de functie zelf, wellicht kun je hier output buffering gebruiken? En ook, die return waarde zegt je niets - file_put_contents() retourneert false als het misgaat, dus wellicht kun je daar iets mee doen om na te gaan om te zien of alles goed gaat, dus zoiets?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
On-topic: werkt dit niet?
Ariën, er gebeurt niets. Ik krijg geen foutmelding en het bestand wordt niet aangepast.
Thomas van den Heuvel, Ik maak het bestand aan en even later probeer ik het op de zelfde manier te wijzigen. Ik ben dus dan de zelfde gebruiker en heb dus de zelfde rechten. De plek van het bestand is het zelfde, dus ook dat kan het niet zijn.
Er is niemand die het bestand gebruikt, dus niemand kan het locken. Wat misschien zou kunnen, is dat ik het zelf gelockt heb. Maar dan moet ik toch een melding krijgen denk ik.
Ik heb je code gebruikt maar het resultaat blijft onveranderd.
Rob Doemaarwat, Ik heb de code gebruikt maar helaas zonder resultaat. Bij wat jij aan gaf moest ik wel versie veranderen in versienummer, maar zelfs toen werkte het niet.
Ik ben wel verder gegaan met testen en merk dat ik het bestand niet op die plek zo kan veranderen door het te openen met een editor en dan op te slaan. Echter, ook dan krijg ik geen melding dat het opslaan niet lukt.
Met de volgende code maak ik het bestand aan. Ik schrijf dit naast de php bestanden op mijn nas. Daar het ik een soort intranet server van gemaakt. Volgens mij draait er op mijn nas Linux QNAP 3.4.6, PHP Version 5.6.36
Code (php)
1
2
3
4
5
2
3
4
5
$b = array(
'algemeen'=>array(
'programmanaam'=>'Testnaam',
'versienummer'=>'0.1.1'));
write_ini($filename, $b);
'algemeen'=>array(
'programmanaam'=>'Testnaam',
'versienummer'=>'0.1.1'));
write_ini($filename, $b);
touch() ken ik niet. Daar zal ik naar moeten kijken.
Als het echter een rechten probleem is heb je dan nog steeds hetzelfde probleem.
Zet anders de volgende code eens boven/voor al je anders code:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
error_reporting(E_ALL);
ini_set('display_startup_errors', true);
ini_set('display_errors', 'stdout');
// de rest van je code
// ...
?>
error_reporting(E_ALL);
ini_set('display_startup_errors', true);
ini_set('display_errors', 'stdout');
// de rest van je code
// ...
?>
Het klinkt namelijk alsof we iets voor de hand liggends vergeten.
Quote:
Zaken aannemen zolang we geen oorzaak hebben is dan ook niet verstandig. Je vindt dingen altijd op de laatste plek waar je kijkt :).De plek van het bestand is het zelfde, dus ook dat kan het niet zijn.
Ik heb wat foutjes hiermee opgelost, maar dat had geen invloed op waar we hier mee bezig zijn.
Het gekke is, dat als ik het ini bestand verwijder en een nieuwe er voor in de plaats zet. (Volledig buiten php om) Dan staat toch data in het bestand dat in het verwijderde bestand stond. Dus hier moet ik nog eens wat dieper onderzoek naar doen. Maar dus niet deze nacht meer. Bedankt voor zo ver en wordt vervolgd.
Frits van Leeuwen op 06/01/2019 00:58:23:
Het gekke is, dat als ik het ini bestand verwijder en een nieuwe er voor in de plaats zet. (Volledig buiten php om) Dan staat toch data in het bestand dat in het verwijderde bestand stond.
Waar/hoe wordt de variabele $versienummer ingesteld op de nieuwe versie?
Ik zou het pad nog een keer controleren :p.
Ik weet dat de schijvenstructuur op een QNAP er best exotisch uitziet, dus ik zou daar toch even naar kijken.
Maar zoals ik in mijn laatste berichte aan gaf, ik had nog wat anders waarvan ik denk dat hen nog gekker maakt.
Als ik een php-file wijzig en naar de zelfde directory verplaats gaat het goed. Dan zijn de wijzigingen actief. Maar als ik dat doe met de ini-file, dan lijkt dat niet te werken.
Als ik daar de ini-file echt weg gooi, dan is die weg lijkt mij. Een echt gewijzigde ini-fle die ik ergens anders vandaan haal zet ik op de plek van de verwijderde ini-file, met de zelfde naam, en ik check de gegevens en zie de inhoud van de verwijderde file. Ik vermoed dat ik dat probleem moet oplossen om in php het gewenste effect te krijgen. Ik hoop hier vanavond naar te kunnen zoeken.
Even voor de goede orde, op de QNAP heb ik een partitie die Share heet, Daar staat een mapping over heen, dat spreek ik aan met een driveletter.
En er is een partitie die Web heet en daarin staan de websites die ik gebruik. En daar dus ook de php en ini-files waar ik het hier over heb.
Gebruik anders iets anders, doe het in PHP zoals @Rob voorstelt, of sla het bijvoorbeeld op als JSON. Maar dan blijft waarschijnlijk het probleem met het geklooi met bestanden.
De vraag is eigenlijk, waarom gebruik je een .ini-bestand, en geen JSON, XML of normale variabelen/defines?
Frits van Leeuwen op 06/01/2019 18:18:10:
Ik stel in beide gevallen geen pad in.
Zit je dan niet de ene keer in een andere "working directory"? Probeer het eens met een absoluut pad (gewoon bij $_SERVER['DOCUMENT_ROOT'] beginnen).
Een JSON of XML moet overigens ook elke keer geparsed worden. Puur PHP heeft dat nadeel niet, en tegenwoordig wordt het zelfs netjes voor je in de opcode cache bewaard (= supersnel).
Het idee te beginnen met $_SERVER['DOCUMENT_ROOT'] lijkt me wel wat. Maar ik heb geen idee hoe.
Ariën, Ik vind het duidelijkst om instellingen, die bij het starten van php pagina gebruikt moeten of kunnen worden, vanuit een ini bestand in te lezen en te gebruiken. Het zijn instellingen die soms door bepaalde gebruikers mogen worden gewijzigd om zo het starten te veranderen.
Thomas van den Heuvel, Een JSON ken ik niet, en XML geeft inderdaad ook naar mijn idee het zelfde probleem. Mijn opvatting is dat data niet in een PHP bestand thuis hoort, tenzij het vaste gegevens zijn. Dat is in dit geval niet zo.
Gewijzigd op 07/01/2019 00:14:04 door Frits van Leeuwen
Als je niet weet wat je ermee kunt: Echo het dan, en kijk wat je er precies mee moet doen ;-)
Kun je even de complete code laten zien die je nu gebruikt?
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
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
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
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
<?php
error_reporting(E_ALL);
ini_set('display_startup_errors', true);
ini_set('display_errors', 'stdout');
//functie om ini-bestand te maken
function write_ini($filename, $b) {
$output = '';
foreach ($b as $section => $settings) {
$output .= '[' . $section . ']' . PHP_EOL;
foreach ($settings as $key => $value) {
$output .= $key . ' = ' . $value . PHP_EOL;
}
$output .= PHP_EOL;
}
file_put_contents($filename, $output);
return true;
}
$programmanaam = "testnaam";
$versienummer = "0.1.2.α.0";
$root = "root";
$root_password = "admin";
$filename = "testnaam.ini";
if (isset($_GET['vernr'])) { //versienummer wijkt af.
if ($_GET['vernr']!=substr($versienummer, 0,5)){
$b = parse_ini_file($filename,true);
// er moet geupdate worden!
$verbergregel_1 = "class = verbergregel"; //hiermee verberg je het gedeelte als er op install is gedrukt.
$verbergregel_2 = "class = verbergregel"; //hiermee verberg je het gedeelte als er niet op install of update is gedrukt.
$verbergregel_3 = ""; //hiermee toon je het gedeelte als er op update is gedrukt.
$verbergregel_4 = "class = verbergregel"; // verberg hiermee het eindresultaat.
//gegevens uit testnaam.ini lezen
if (isset($_POST['knop_update'])){
if($_POST['knop_update']) {
$b = parse_ini_file($filename,true);
$b['algemeen']['versienummer'] = $versienummer;
write_ini($filename,$b);
// check verbinding
if ($connect) { // wel verbinding
$goed = true;
//connect sql database
$connectdb = mysqli_connect($b['db_verbinding']['host'], $b['db_verbinding']['gebruiker'], $b['db_verbinding']['wachtwoord'], $b['db_verbinding']['database']);
if(!$connectdb){
$goed = false;
die('Kan geen verbinding maken: '.mysqli_connect_error());
} else {
echo "Verbinding met de database is gemaakt.<BR>";
}
} else {
$goed = false;
die("Connection failed: " . mysqli_connect_error());
}
}//einde update module
}
}else{
echo "Er is geen UPDATE!!!<BR>";//dit kan die niet weergeven als het goed is
}
} else {
// er is nog niets, dus een installatie is hier nodig
$verbergregel_1 = "class = verbergregel"; //hiermee verberg je het gedeelte als er op install is gedrukt.
$verbergregel_2 = ""; //hiermee toon je het gedeelte als er niet op install of update is gedrukt.
$verbergregel_3 = "class = verbergregel"; //hiermee verberg je het gedeelte als er op update is gedrukt.
$verbergregel_4 = "class = verbergregel"; // verberg hiermee het eindresultaat.
//gegevens voor testnaam.ini bepalen
$b = array(
'algemeen'=>array(
'programmanaam'=>$programmanaam,
'versienummer'=>$versienummer),
'db_verbinding'=>array(
'host'=>'localhost',
'gebruiker'=>'testnaam',
'wachtwoord'=>'testnaam',
'database'=>'db_testnaam'));
if (isset($_POST['knop_install'])){
if($_POST['knop_install']) {
$verbergregel_1 = ""; //dit toon je als er op install is gedrukt.
$verbergregel_2 = "class = verbergregel"; //hiermee verberg je het gedeelte dat je toont als er niet op install of update is gedrukt.
$verbergregel_3 = "class = verbergregel"; //hiermee verberg je het gedeelte dat je toont als er op update is gedrukt.
$verbergregel_4 = "class = verbergregel"; // verberg hiermee het eindresultaat.
//maak ini-bestand
$root = $_POST['Inp_User'];
$root_password = $_POST['Inp_Password'];
$b['db_verbinding']['host'] = $_POST['Inp_Host'];
$b['db_verbinding']['database'] = $_POST['Inp_DB'];
$b['db_verbinding']['gebruiker'] = $_POST['DB_User'];
$b['db_verbinding']['wachtwoord'] = $_POST['DB_Password'];
write_ini($filename, $b);
// maak verbinding
$connect = mysqli_connect($b['db_verbinding']['host'], $root, $root_password);
// check verbinding
if ($connect) { // wel verbinding
$goed = true;
// maak database
$sql = "CREATE DATABASE IF NOT EXISTS " . $b['db_verbinding']['database'];
if ($connect->query($sql) === TRUE) { // database is aangemaakt
echo "Database -" . $b['db_verbinding']['database'] . "- is succesvol aangemaakt.<BR>";
// create user
$sql = "CREATE USER '" . $b['db_verbinding']['gebruiker'] . "'@'" . $b['db_verbinding']['host'] . "' IDENTIFIED BY '" . $b['db_verbinding']['wachtwoord'] . "';";
if ($connect->query($sql) === TRUE) { // gebruiker is aangemaakt
echo "Gebruiker " . $b['db_verbinding']['gebruiker'] . " is succesvol aangemaakt.<BR>";
// grant additional
$sql = "GRANT ALL PRIVILEGES ON *.* TO '" . $b['db_verbinding']['gebruiker'] . "'@'" . $b['db_verbinding']['host'] . "';";
if ($connect->query($sql) === TRUE) { // gebruikers rechten toegekend
echo "De gebruiker " . $b['db_verbinding']['gebruiker'] . " heeft de rechten gekregen.<BR>";
} else {
$goed = false;
echo "Het toekennen van de rechten is niet goed gegaan.<BR>";
}
} else {
$goed = false;
echo "Het aanmaken van de gebruiker " . $b['db_verbinding']['gebruiker'] . " is niet goed gegaan.<BR>";
}
} else {
echo "Fout bij aanmaken van database " . $b['db_verbinding']['database'] . ": " . $connect->error . "<BR>";
}
} else { // geen verbinding
$goed = false;
die("Connection failed: " . mysqli_connect_error());
}
if ($goed) {
//connect sql database
$connectdb = mysqli_connect($b['db_verbinding']['host'], $b['db_verbinding']['gebruiker'], $b['db_verbinding']['wachtwoord'], $b['db_verbinding']['database']);
if(!$connectdb){
die('Kan geen verbinding maken: '.mysqli_connect_error());
} else {
echo "Verbinding met de database is gemaakt.<BR>";
}
//tabel_administraties
$sql = "CREATE TABLE tabel_administraties (administraties_id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
administraties_naam VARCHAR(255) NOT NULL,
administraties_straat VARCHAR(255),
administraties_huisnr VARCHAR(10),
administraties_postcode VARCHAR(7),
administraties_plaats VARCHAR(255),
administraties_telefoonnr VARCHAR(15),
administraties_kvk VARCHAR(10),
administraties_btwnr VARCHAR(14),
administraties_website VARCHAR(128),
administraties_email VARCHAR(128),
administraties_reg_date TIMESTAMP)";
if (mysqli_query($connectdb, $sql)) {
echo "Tabel tabel_administraties is aangemaakt.<BR>";
} else {
echo "Tabel tabel_administraties is niet aangemaakt. " . $connectdb->error . "<BR>";
}
//tabel_journaalposten
$sql = "CREATE TABLE tabel_journaalposten(journaalposten_id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
journaalposten_administratie INT(6) NOT NULL,
journaalposten_datum DATE NOT NULL,
journaalposten_nummer INT(3),
journaalposten_bedrag NUMERIC(10,2),
journaalposten_omschrijving VARCHAR(255),
journaalposten_inkomsten BOOLEAN,
journaalposten_btw_1 NUMERIC(5,2),
journaalposten_btw_2 NUMERIC(5,2),
journaalposten_debetrek_1 VARCHAR(5),
journaalposten_creditrek_1 VARCHAR(5),
journaalposten_debetrek_2 VARCHAR(5),
journaalposten_creditrek_2 VARCHAR(5),
journaalposten_debetrek_3 VARCHAR(5),
journaalposten_creditrek_3 VARCHAR(5),
journaalposten_reg_date TIMESTAMP)";
if (mysqli_query($connectdb, $sql)) {
echo "Tabel tabel_journaalposten is aangemaakt.<BR>";
} else {
echo "Tabel tabel_journaalposten is niet aangemaakt." . $connectdb->error . "<BR>";
}
} else {
$melding = "Er ging iets mis!";
}
} else {
$verbergregel_1 = "class = verbergregel"; //hiermee verberg je het gedeelte dat je toont als er op install is gedrukt.
$verbergregel_2 = ""; //hiermee toon je als er niet op install of update is gedrukt.
$verbergregel_3 = "class = verbergregel"; //hiermee verberg je het gedeelte dat je toont als er op update is gedrukt.
$verbergregel_4 = "class = verbergregel"; // verberg hiermee het eindresultaat.
}
}
}
if (isset($_POST['knop_update']) or isset($_POST['knop_install'])) {
if (($_POST['knop_update']) or ($_POST['knop_install'])){
/*
switch($_GET['vernr']){
case "0.1.1"; // update naar versie 0.1.2
//tabel_instellingen
$sql = "CREATE TABLE tabel_instellingen(instellingen_id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
instellingen_administratie INT(6) NOT NULL,
instellingen_sorteer_jp_datum BOOLEAN,
instellingen_sorteer_jp_nummer BOOLEAN,
instellingen_reg_date TIMESTAMP)";
if (mysqli_query($connectdb, $sql)) {
echo "Tabel tabel_instellingen is aangemaakt.<BR>";
} else {
echo "Tabel tabel_instellingen is niet aangemaakt." . $connectdb->error . "<BR>";
}
//tabel_btw
$sql = "CREATE TABLE tabel_btw(btw_id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
btw_omschrijving VARCHAR(55),
btw_percentage NUMERIC(5,2),
btw_datum_ingang DATE,
btw_datum_einde DATE,
btw_reg_date TIMESTAMP)";
if (mysqli_query($connectdb, $sql)) {
echo "Tabel tabel_btw is aangemaakt.<BR>";
} else {
echo "Tabel tabel_btw is niet aangemaakt." . $connectdb->error . "<BR>";
}
case "0.1.2"; // update naar versie 0.1.3
//Hier is (nog) geen update voor
}*/
$verbergregel_1 = "class = verbergregel"; //hiermee verberg je het gedeelte dat je toont als er op install is gedrukt.
$verbergregel_2 = "class = verbergregel"; //hiermee verberg je het gedeelte dat je toont als er niet op install of update is gedrukt.
$verbergregel_3 = "class = verbergregel"; //hiermee verberg je het gedeelte dat je toont als er op update is gedrukt.
$verbergregel_4 = ""; // verberg hiermee het eindresultaat.
}
}
?><!DOCTYPE html>
<html>
<head>
<title>testnaam installatie</title>
<link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<body>
<table class="empty">
<tr>
<td width="270" class="vak1">
</td>
<td class="programmadeel">
<form action="install.php" method="post">
<table>
<tr <?php echo $verbergregel_1; ?>><td>
<table>
<tr class="form1"><td colspan="2">
<h1>Installatie van <?php echo $programmanaam . " versie " . $versienummer; ?></h1>
<p>Voor het gebruik van het boekhoudprogramma <?php echo $programmanaam; ?>, is het van belang dat er een database genstalleerd wordt.</p>
<p>Vul daarom op deze pagina de gevraagde gegevens in.</p>
</td></tr>
<tr><td><br></td><td></td></tr>
<tr class="form1"><td align="right">
<div class="pf">Host-gebruiker : </div></td><td> : <B><?php echo $_POST['Inp_User']; ?></B></td></tr>
<tr class="form1"><td align="right">
<div class="pf">Host Wachtwoord : </div></td><td> : <B><?php echo $_POST['Inp_Password']; ?></B></td></tr>
<tr class="form1"><td align="right">
<div class="pf">Host-adres : </div></td><td> : <B><?php echo $_POST['Inp_Host']; ?></B></td></tr>
<tr class="form1"><td align="right">
<div class="pf">Database naam : </div></td><td> : <B><?php echo $_POST['Inp_DB']; ?></B></td></tr>
<tr class="form1"><td align="right">
<div class="pf">DB-gebruiker : </div></td><td> : <B><?php echo $_POST['DB_User']; ?></B></td></tr>
<tr class="form1"><td align="right">
<div class="pf">DB Wachtwoord : </div></td><td> : <B><?php echo $_POST['DB_Password']; ?></B></td></tr>
<tr><td>
<p><button type="submit" formaction=index.php>Click hier om te beginnen</button></p></td></tr>
</table>
</td></tr>
<tr <?php echo $verbergregel_2; ?>><td>
<table>
<tr class="form1"><td align="center" colspan="2">
<h1>Installatie van <?php echo $programmanaam . " versie " . $versienummer; ?></h1>
<p>Voor het gebruik van het boekhoudprogramma <?php echo $programmanaam; ?>, is het van belang dat er een database genstalleerd wordt.</p>
<p>Vul daarom op deze pagina de gevraagde gegevens in.</p>
</td></tr>
<tr><td><br></td><td></td></tr>
<tr class="form1"><td align="right">
<div class="pf">Host-gebruiker : </div></td><td><input type="text" id="Inp_User" name="Inp_User" value="<?php echo $root; ?>" tabindex="1"></td></tr>
<tr class="form1"><td align="right">
<div class="pf">Host Wachtwoord : </div></td><td><input type="password" id="Inp_Password" name="Inp_Password" value="<?php echo $root_password; ?>" tabindex="2"></td></tr>
<tr class="form1"><td align="right">
<div class="pf">Host-adres : </div></td><td><input type="text" id="Inp_Host" name="Inp_Host" value="<?php echo $b['db_verbinding']['host']; ?>" tabindex="3"></td></tr>
<tr class="form1"><td align="right">
<div class="pf">Database naam : </div></td><td><input type="text" id="Inp_DB" name="Inp_DB" value="<?php echo $b['db_verbinding']['database']; ?>" tabindex="4"></td></tr>
<tr class="form1"><td align="right">
<div class="pf">DB-gebruiker : </div></td><td><input type="text" id="DB_User" name="DB_User" value="<?php echo $b['db_verbinding']['gebruiker']; ?>" tabindex="5"></td></tr>
<tr class="form1"><td align="right">
<div class="pf">DB Wachtwoord : </div></td><td><input type="password" id="DB_Password" name="DB_Password" value="<?php echo $b['db_verbinding']['wachtwoord']; ?>" tabindex="6"></td></tr>
<tr><td align="right">
<input type="reset" value="Default instellingen" id="knop_reset" name="knop_reset" alt="Alle velden terug zetten in de default waarde" tabindex="7">
</td><td align="left">
<input type="submit" value="Installeren"; id="knop_install" name="knop_install" alt="Installatie starten" tabindex="8">
</td></tr>
</table>
</td></tr>
<tr <?php echo $verbergregel_3; ?>><td>
<table>
<tr class="form1"><td align="center" colspan="2">
<h1>Update van <?php echo $programmanaam . " versie " . $b['algemeen']['versienummer'] . " naar versie " . $versienummer; ?></h1>
<p>Voor het gebruik van het boekhoudprogramma <?php echo $programmanaam; ?>, is het van belang dat er de database geupdate wordt.</p>
<p>Controleer deze gegevens en druk op <b>update</b>.</p>
</td></tr>
<tr><td><br></td><td></td></tr>
<tr class="form1"><td align="right">
<div class="pf">Host-adres : </div></td><td align="left"><?php echo $b['db_verbinding']['host']; ?></td></tr>
<tr class="form1"><td align="right">
<div class="pf">Database naam : </div></td><td align="left"><?php echo $b['db_verbinding']['database']; ?></td></tr>
<tr class="form1"><td align="right">
<div class="pf">DB-gebruiker : </div></td><td align="left"><?php echo $b['db_verbinding']['gebruiker']; ?></td></tr>
<tr class="form1"><td align="right">
<div class="pf">DB Wachtwoord : </div></td><td align="left"><?php echo $b['db_verbinding']['wachtwoord']; ?></td></tr>
<tr><td><br></td><td></td></tr>
<tr><td align="center" colspan="2">
<input type="submit" value="update"; id="knop_update" name="knop_update" alt="update starten" tabindex="8">
</td></tr>
</table>
</td></tr>
<tr <?php echo $verbergregel_4; ?>><td align="center" colspan="2">
<table>
<tr class="form1"><td align="center">
<h1>Update naar <?php echo $programmanaam . " versie " . $versienummer; ?> is voltooid</h1>
<p>Om het boekhoudprogramma <?php echo $programmanaam; ?> in gebruik te nemen,</p>
<p>druk je op de onderstaand knop.</p>
</td></tr><tr><td><BR></td></tr>
<tr><td align="center">
<a href="index.php"><button>Start testnaamhost (versie <?php echo $versienummer?> )</button></a>
</td></tr>
</table>
</td></tr>
</table>
</form>
</td>
</tr>
</table>
</body>
</html>
error_reporting(E_ALL);
ini_set('display_startup_errors', true);
ini_set('display_errors', 'stdout');
//functie om ini-bestand te maken
function write_ini($filename, $b) {
$output = '';
foreach ($b as $section => $settings) {
$output .= '[' . $section . ']' . PHP_EOL;
foreach ($settings as $key => $value) {
$output .= $key . ' = ' . $value . PHP_EOL;
}
$output .= PHP_EOL;
}
file_put_contents($filename, $output);
return true;
}
$programmanaam = "testnaam";
$versienummer = "0.1.2.α.0";
$root = "root";
$root_password = "admin";
$filename = "testnaam.ini";
if (isset($_GET['vernr'])) { //versienummer wijkt af.
if ($_GET['vernr']!=substr($versienummer, 0,5)){
$b = parse_ini_file($filename,true);
// er moet geupdate worden!
$verbergregel_1 = "class = verbergregel"; //hiermee verberg je het gedeelte als er op install is gedrukt.
$verbergregel_2 = "class = verbergregel"; //hiermee verberg je het gedeelte als er niet op install of update is gedrukt.
$verbergregel_3 = ""; //hiermee toon je het gedeelte als er op update is gedrukt.
$verbergregel_4 = "class = verbergregel"; // verberg hiermee het eindresultaat.
//gegevens uit testnaam.ini lezen
if (isset($_POST['knop_update'])){
if($_POST['knop_update']) {
$b = parse_ini_file($filename,true);
$b['algemeen']['versienummer'] = $versienummer;
write_ini($filename,$b);
// check verbinding
if ($connect) { // wel verbinding
$goed = true;
//connect sql database
$connectdb = mysqli_connect($b['db_verbinding']['host'], $b['db_verbinding']['gebruiker'], $b['db_verbinding']['wachtwoord'], $b['db_verbinding']['database']);
if(!$connectdb){
$goed = false;
die('Kan geen verbinding maken: '.mysqli_connect_error());
} else {
echo "Verbinding met de database is gemaakt.<BR>";
}
} else {
$goed = false;
die("Connection failed: " . mysqli_connect_error());
}
}//einde update module
}
}else{
echo "Er is geen UPDATE!!!<BR>";//dit kan die niet weergeven als het goed is
}
} else {
// er is nog niets, dus een installatie is hier nodig
$verbergregel_1 = "class = verbergregel"; //hiermee verberg je het gedeelte als er op install is gedrukt.
$verbergregel_2 = ""; //hiermee toon je het gedeelte als er niet op install of update is gedrukt.
$verbergregel_3 = "class = verbergregel"; //hiermee verberg je het gedeelte als er op update is gedrukt.
$verbergregel_4 = "class = verbergregel"; // verberg hiermee het eindresultaat.
//gegevens voor testnaam.ini bepalen
$b = array(
'algemeen'=>array(
'programmanaam'=>$programmanaam,
'versienummer'=>$versienummer),
'db_verbinding'=>array(
'host'=>'localhost',
'gebruiker'=>'testnaam',
'wachtwoord'=>'testnaam',
'database'=>'db_testnaam'));
if (isset($_POST['knop_install'])){
if($_POST['knop_install']) {
$verbergregel_1 = ""; //dit toon je als er op install is gedrukt.
$verbergregel_2 = "class = verbergregel"; //hiermee verberg je het gedeelte dat je toont als er niet op install of update is gedrukt.
$verbergregel_3 = "class = verbergregel"; //hiermee verberg je het gedeelte dat je toont als er op update is gedrukt.
$verbergregel_4 = "class = verbergregel"; // verberg hiermee het eindresultaat.
//maak ini-bestand
$root = $_POST['Inp_User'];
$root_password = $_POST['Inp_Password'];
$b['db_verbinding']['host'] = $_POST['Inp_Host'];
$b['db_verbinding']['database'] = $_POST['Inp_DB'];
$b['db_verbinding']['gebruiker'] = $_POST['DB_User'];
$b['db_verbinding']['wachtwoord'] = $_POST['DB_Password'];
write_ini($filename, $b);
// maak verbinding
$connect = mysqli_connect($b['db_verbinding']['host'], $root, $root_password);
// check verbinding
if ($connect) { // wel verbinding
$goed = true;
// maak database
$sql = "CREATE DATABASE IF NOT EXISTS " . $b['db_verbinding']['database'];
if ($connect->query($sql) === TRUE) { // database is aangemaakt
echo "Database -" . $b['db_verbinding']['database'] . "- is succesvol aangemaakt.<BR>";
// create user
$sql = "CREATE USER '" . $b['db_verbinding']['gebruiker'] . "'@'" . $b['db_verbinding']['host'] . "' IDENTIFIED BY '" . $b['db_verbinding']['wachtwoord'] . "';";
if ($connect->query($sql) === TRUE) { // gebruiker is aangemaakt
echo "Gebruiker " . $b['db_verbinding']['gebruiker'] . " is succesvol aangemaakt.<BR>";
// grant additional
$sql = "GRANT ALL PRIVILEGES ON *.* TO '" . $b['db_verbinding']['gebruiker'] . "'@'" . $b['db_verbinding']['host'] . "';";
if ($connect->query($sql) === TRUE) { // gebruikers rechten toegekend
echo "De gebruiker " . $b['db_verbinding']['gebruiker'] . " heeft de rechten gekregen.<BR>";
} else {
$goed = false;
echo "Het toekennen van de rechten is niet goed gegaan.<BR>";
}
} else {
$goed = false;
echo "Het aanmaken van de gebruiker " . $b['db_verbinding']['gebruiker'] . " is niet goed gegaan.<BR>";
}
} else {
echo "Fout bij aanmaken van database " . $b['db_verbinding']['database'] . ": " . $connect->error . "<BR>";
}
} else { // geen verbinding
$goed = false;
die("Connection failed: " . mysqli_connect_error());
}
if ($goed) {
//connect sql database
$connectdb = mysqli_connect($b['db_verbinding']['host'], $b['db_verbinding']['gebruiker'], $b['db_verbinding']['wachtwoord'], $b['db_verbinding']['database']);
if(!$connectdb){
die('Kan geen verbinding maken: '.mysqli_connect_error());
} else {
echo "Verbinding met de database is gemaakt.<BR>";
}
//tabel_administraties
$sql = "CREATE TABLE tabel_administraties (administraties_id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
administraties_naam VARCHAR(255) NOT NULL,
administraties_straat VARCHAR(255),
administraties_huisnr VARCHAR(10),
administraties_postcode VARCHAR(7),
administraties_plaats VARCHAR(255),
administraties_telefoonnr VARCHAR(15),
administraties_kvk VARCHAR(10),
administraties_btwnr VARCHAR(14),
administraties_website VARCHAR(128),
administraties_email VARCHAR(128),
administraties_reg_date TIMESTAMP)";
if (mysqli_query($connectdb, $sql)) {
echo "Tabel tabel_administraties is aangemaakt.<BR>";
} else {
echo "Tabel tabel_administraties is niet aangemaakt. " . $connectdb->error . "<BR>";
}
//tabel_journaalposten
$sql = "CREATE TABLE tabel_journaalposten(journaalposten_id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
journaalposten_administratie INT(6) NOT NULL,
journaalposten_datum DATE NOT NULL,
journaalposten_nummer INT(3),
journaalposten_bedrag NUMERIC(10,2),
journaalposten_omschrijving VARCHAR(255),
journaalposten_inkomsten BOOLEAN,
journaalposten_btw_1 NUMERIC(5,2),
journaalposten_btw_2 NUMERIC(5,2),
journaalposten_debetrek_1 VARCHAR(5),
journaalposten_creditrek_1 VARCHAR(5),
journaalposten_debetrek_2 VARCHAR(5),
journaalposten_creditrek_2 VARCHAR(5),
journaalposten_debetrek_3 VARCHAR(5),
journaalposten_creditrek_3 VARCHAR(5),
journaalposten_reg_date TIMESTAMP)";
if (mysqli_query($connectdb, $sql)) {
echo "Tabel tabel_journaalposten is aangemaakt.<BR>";
} else {
echo "Tabel tabel_journaalposten is niet aangemaakt." . $connectdb->error . "<BR>";
}
} else {
$melding = "Er ging iets mis!";
}
} else {
$verbergregel_1 = "class = verbergregel"; //hiermee verberg je het gedeelte dat je toont als er op install is gedrukt.
$verbergregel_2 = ""; //hiermee toon je als er niet op install of update is gedrukt.
$verbergregel_3 = "class = verbergregel"; //hiermee verberg je het gedeelte dat je toont als er op update is gedrukt.
$verbergregel_4 = "class = verbergregel"; // verberg hiermee het eindresultaat.
}
}
}
if (isset($_POST['knop_update']) or isset($_POST['knop_install'])) {
if (($_POST['knop_update']) or ($_POST['knop_install'])){
/*
switch($_GET['vernr']){
case "0.1.1"; // update naar versie 0.1.2
//tabel_instellingen
$sql = "CREATE TABLE tabel_instellingen(instellingen_id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
instellingen_administratie INT(6) NOT NULL,
instellingen_sorteer_jp_datum BOOLEAN,
instellingen_sorteer_jp_nummer BOOLEAN,
instellingen_reg_date TIMESTAMP)";
if (mysqli_query($connectdb, $sql)) {
echo "Tabel tabel_instellingen is aangemaakt.<BR>";
} else {
echo "Tabel tabel_instellingen is niet aangemaakt." . $connectdb->error . "<BR>";
}
//tabel_btw
$sql = "CREATE TABLE tabel_btw(btw_id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
btw_omschrijving VARCHAR(55),
btw_percentage NUMERIC(5,2),
btw_datum_ingang DATE,
btw_datum_einde DATE,
btw_reg_date TIMESTAMP)";
if (mysqli_query($connectdb, $sql)) {
echo "Tabel tabel_btw is aangemaakt.<BR>";
} else {
echo "Tabel tabel_btw is niet aangemaakt." . $connectdb->error . "<BR>";
}
case "0.1.2"; // update naar versie 0.1.3
//Hier is (nog) geen update voor
}*/
$verbergregel_1 = "class = verbergregel"; //hiermee verberg je het gedeelte dat je toont als er op install is gedrukt.
$verbergregel_2 = "class = verbergregel"; //hiermee verberg je het gedeelte dat je toont als er niet op install of update is gedrukt.
$verbergregel_3 = "class = verbergregel"; //hiermee verberg je het gedeelte dat je toont als er op update is gedrukt.
$verbergregel_4 = ""; // verberg hiermee het eindresultaat.
}
}
?><!DOCTYPE html>
<html>
<head>
<title>testnaam installatie</title>
<link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<body>
<table class="empty">
<tr>
<td width="270" class="vak1">
</td>
<td class="programmadeel">
<form action="install.php" method="post">
<table>
<tr <?php echo $verbergregel_1; ?>><td>
<table>
<tr class="form1"><td colspan="2">
<h1>Installatie van <?php echo $programmanaam . " versie " . $versienummer; ?></h1>
<p>Voor het gebruik van het boekhoudprogramma <?php echo $programmanaam; ?>, is het van belang dat er een database genstalleerd wordt.</p>
<p>Vul daarom op deze pagina de gevraagde gegevens in.</p>
</td></tr>
<tr><td><br></td><td></td></tr>
<tr class="form1"><td align="right">
<div class="pf">Host-gebruiker : </div></td><td> : <B><?php echo $_POST['Inp_User']; ?></B></td></tr>
<tr class="form1"><td align="right">
<div class="pf">Host Wachtwoord : </div></td><td> : <B><?php echo $_POST['Inp_Password']; ?></B></td></tr>
<tr class="form1"><td align="right">
<div class="pf">Host-adres : </div></td><td> : <B><?php echo $_POST['Inp_Host']; ?></B></td></tr>
<tr class="form1"><td align="right">
<div class="pf">Database naam : </div></td><td> : <B><?php echo $_POST['Inp_DB']; ?></B></td></tr>
<tr class="form1"><td align="right">
<div class="pf">DB-gebruiker : </div></td><td> : <B><?php echo $_POST['DB_User']; ?></B></td></tr>
<tr class="form1"><td align="right">
<div class="pf">DB Wachtwoord : </div></td><td> : <B><?php echo $_POST['DB_Password']; ?></B></td></tr>
<tr><td>
<p><button type="submit" formaction=index.php>Click hier om te beginnen</button></p></td></tr>
</table>
</td></tr>
<tr <?php echo $verbergregel_2; ?>><td>
<table>
<tr class="form1"><td align="center" colspan="2">
<h1>Installatie van <?php echo $programmanaam . " versie " . $versienummer; ?></h1>
<p>Voor het gebruik van het boekhoudprogramma <?php echo $programmanaam; ?>, is het van belang dat er een database genstalleerd wordt.</p>
<p>Vul daarom op deze pagina de gevraagde gegevens in.</p>
</td></tr>
<tr><td><br></td><td></td></tr>
<tr class="form1"><td align="right">
<div class="pf">Host-gebruiker : </div></td><td><input type="text" id="Inp_User" name="Inp_User" value="<?php echo $root; ?>" tabindex="1"></td></tr>
<tr class="form1"><td align="right">
<div class="pf">Host Wachtwoord : </div></td><td><input type="password" id="Inp_Password" name="Inp_Password" value="<?php echo $root_password; ?>" tabindex="2"></td></tr>
<tr class="form1"><td align="right">
<div class="pf">Host-adres : </div></td><td><input type="text" id="Inp_Host" name="Inp_Host" value="<?php echo $b['db_verbinding']['host']; ?>" tabindex="3"></td></tr>
<tr class="form1"><td align="right">
<div class="pf">Database naam : </div></td><td><input type="text" id="Inp_DB" name="Inp_DB" value="<?php echo $b['db_verbinding']['database']; ?>" tabindex="4"></td></tr>
<tr class="form1"><td align="right">
<div class="pf">DB-gebruiker : </div></td><td><input type="text" id="DB_User" name="DB_User" value="<?php echo $b['db_verbinding']['gebruiker']; ?>" tabindex="5"></td></tr>
<tr class="form1"><td align="right">
<div class="pf">DB Wachtwoord : </div></td><td><input type="password" id="DB_Password" name="DB_Password" value="<?php echo $b['db_verbinding']['wachtwoord']; ?>" tabindex="6"></td></tr>
<tr><td align="right">
<input type="reset" value="Default instellingen" id="knop_reset" name="knop_reset" alt="Alle velden terug zetten in de default waarde" tabindex="7">
</td><td align="left">
<input type="submit" value="Installeren"; id="knop_install" name="knop_install" alt="Installatie starten" tabindex="8">
</td></tr>
</table>
</td></tr>
<tr <?php echo $verbergregel_3; ?>><td>
<table>
<tr class="form1"><td align="center" colspan="2">
<h1>Update van <?php echo $programmanaam . " versie " . $b['algemeen']['versienummer'] . " naar versie " . $versienummer; ?></h1>
<p>Voor het gebruik van het boekhoudprogramma <?php echo $programmanaam; ?>, is het van belang dat er de database geupdate wordt.</p>
<p>Controleer deze gegevens en druk op <b>update</b>.</p>
</td></tr>
<tr><td><br></td><td></td></tr>
<tr class="form1"><td align="right">
<div class="pf">Host-adres : </div></td><td align="left"><?php echo $b['db_verbinding']['host']; ?></td></tr>
<tr class="form1"><td align="right">
<div class="pf">Database naam : </div></td><td align="left"><?php echo $b['db_verbinding']['database']; ?></td></tr>
<tr class="form1"><td align="right">
<div class="pf">DB-gebruiker : </div></td><td align="left"><?php echo $b['db_verbinding']['gebruiker']; ?></td></tr>
<tr class="form1"><td align="right">
<div class="pf">DB Wachtwoord : </div></td><td align="left"><?php echo $b['db_verbinding']['wachtwoord']; ?></td></tr>
<tr><td><br></td><td></td></tr>
<tr><td align="center" colspan="2">
<input type="submit" value="update"; id="knop_update" name="knop_update" alt="update starten" tabindex="8">
</td></tr>
</table>
</td></tr>
<tr <?php echo $verbergregel_4; ?>><td align="center" colspan="2">
<table>
<tr class="form1"><td align="center">
<h1>Update naar <?php echo $programmanaam . " versie " . $versienummer; ?> is voltooid</h1>
<p>Om het boekhoudprogramma <?php echo $programmanaam; ?> in gebruik te nemen,</p>
<p>druk je op de onderstaand knop.</p>
</td></tr><tr><td><BR></td></tr>
<tr><td align="center">
<a href="index.php"><button>Start testnaamhost (versie <?php echo $versienummer?> )</button></a>
</td></tr>
</table>
</td></tr>
</table>
</form>
</td>
</tr>
</table>
</body>
</html>
Gewijzigd op 07/01/2019 08:46:52 door Frits van Leeuwen