Sessie beveiling doet niet wat het moet doen
Ik zou zeggen, ga alle variabelen eens na met var_dump() en je ziet wat de inhoud is, en je kan zo achterhalen waarom een statement niet goed uitgevoerd wordt.
Verder is er ook SQL-inejection!!!!
Gewijzigd op 06/06/2022 13:46:58 door - Ariën -
Arno van Zanten op 06/06/2022 13:34:48:
Echter werkt de zelfde opbouw in de ene pagina wel, alleen in de andere niet.
Dat kan niet, dus: zoek de verschillen.
Of kopieer de code die wel werkt en werk daarmee verder.
Als user krijg ik op de ID van waar ik mee ingelogt ben geen toegang tot het ID waar ik mee ingelogt ben
Toevoeging op 06/06/2022 13:49:24:
Ward van der Put op 06/06/2022 13:47:41:
Dat kan niet, dus: zoek de verschillen.
Of kopieer de code die wel werkt en werk daarmee verder.
Arno van Zanten op 06/06/2022 13:34:48:
Echter werkt de zelfde opbouw in de ene pagina wel, alleen in de andere niet.
Dat kan niet, dus: zoek de verschillen.
Of kopieer de code die wel werkt en werk daarmee verder.
Heb de code wat in gekort.
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
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
<?php
$ID = $_GET['ID'];
$sql = 'SELECT * FROM Info WHERE ID="'.$ID.'"';
$result = mysqli_query($connect, $sql);
$info = mysqli_fetch_all($result, MYSQLI_ASSOC);
mysqli_free_result($result);
mysqli_close($connect);
foreach($info as $details) {
$name = $details['Name'];
$function = $details['Function'];
$phone = $details['Phone'];
$email = $details['Email'];
$info = $details['PersonalInfo'];
$id = $details['ID'];
}
if($_SESSION['Level'] == '9') {
echo "<center>
<form action='./inc/replaceinfo.php' method='post'>
<input type='text' name='name' value='".$name."' placeholder='".$name."'><br>
<input type='text' name='function' value='".$function."' placeholder='".$function."'><br>
<input type='text' name='phone' value='".$phone."' placeholder='".$phone."'><br>
<input type='text' name='email' value='".$email."' placeholder='".$email."'><br>
<textarea name='info' rows='25' cols='90'>".$info."</textarea><br>
<input type='hidden' name='ID' value='".$id."' size='92' placeholder='".$id."'><br>
<button type='submit' name='submit'>Edit profile</button><br>
</form>
</center>";
} else {
if($_SESSION['ID'] == $ID) {
echo "<center>
<form action='./inc/replaceinfo.php' method='post'>
<input type='text' name='name' value='".$name."' placeholder='".$name."'><br>
<input type='text' name='function' value='".$function."' placeholder='".$function."'><br>
<input type='text' name='phone' value='".$phone."' placeholder='".$phone."'><br>
<input type='text' name='email' value='".$email."' placeholder='".$email."'><br>
<textarea name='info' rows='25' cols='90'>".$info."</textarea><br>
<input type='hidden' name='ID' value='".$id."' size='92' placeholder='".$id."'><br>
<button type='submit' name='submit'>Edit profile</button><br>
</form>
</center>";
} else {
echo "<center><table><tr><td colspan='7' align='center'><h3>Not allowed</h3></td></tr></table></center>";
}
}
var_dump();
?>
$ID = $_GET['ID'];
$sql = 'SELECT * FROM Info WHERE ID="'.$ID.'"';
$result = mysqli_query($connect, $sql);
$info = mysqli_fetch_all($result, MYSQLI_ASSOC);
mysqli_free_result($result);
mysqli_close($connect);
foreach($info as $details) {
$name = $details['Name'];
$function = $details['Function'];
$phone = $details['Phone'];
$email = $details['Email'];
$info = $details['PersonalInfo'];
$id = $details['ID'];
}
if($_SESSION['Level'] == '9') {
echo "<center>
<form action='./inc/replaceinfo.php' method='post'>
<input type='text' name='name' value='".$name."' placeholder='".$name."'><br>
<input type='text' name='function' value='".$function."' placeholder='".$function."'><br>
<input type='text' name='phone' value='".$phone."' placeholder='".$phone."'><br>
<input type='text' name='email' value='".$email."' placeholder='".$email."'><br>
<textarea name='info' rows='25' cols='90'>".$info."</textarea><br>
<input type='hidden' name='ID' value='".$id."' size='92' placeholder='".$id."'><br>
<button type='submit' name='submit'>Edit profile</button><br>
</form>
</center>";
} else {
if($_SESSION['ID'] == $ID) {
echo "<center>
<form action='./inc/replaceinfo.php' method='post'>
<input type='text' name='name' value='".$name."' placeholder='".$name."'><br>
<input type='text' name='function' value='".$function."' placeholder='".$function."'><br>
<input type='text' name='phone' value='".$phone."' placeholder='".$phone."'><br>
<input type='text' name='email' value='".$email."' placeholder='".$email."'><br>
<textarea name='info' rows='25' cols='90'>".$info."</textarea><br>
<input type='hidden' name='ID' value='".$id."' size='92' placeholder='".$id."'><br>
<button type='submit' name='submit'>Edit profile</button><br>
</form>
</center>";
} else {
echo "<center><table><tr><td colspan='7' align='center'><h3>Not allowed</h3></td></tr></table></center>";
}
}
var_dump();
?>
Arno van Zanten op 06/06/2022 13:48:41:
var_dump() geeft geen response
Dan doe je iets fout!
En echt... lees de manual over hoe functies werken! Niet gokken en hopen dat het werkt, maar begrijpen hoe het werkt. Het klinkt bot, maar anders kan je net zo goed wat anders gaan doen dan dit.
Gewijzigd op 06/06/2022 13:50:30 door - Ariën -
User logt in en kan zijn eigen profile niet aanpassen terwijl hij wel dat ID heeft die in de $_SESSIE staat en in de $_GET mee komt
- Ariën - op 06/06/2022 13:46:43:
Ik zou zeggen, ga alle variabelen eens na met var_dump() en je ziet wat de inhoud is, en je kan zo achterhalen waarom een statement niet goed uitgevoerd wordt.
Dit, en neem rustig de tijd.
var_dump als admin : string(1) "9" NULL
Toevoeging op 06/06/2022 14:00:46:
Gevonden, bedankt voor de var_dump ;)
- Wat zegt een print_r() op $_SESSION['Level'] (tussen <pre>-tags voor de leesbaarheid)
- Zorg ook voor preventie tegen SQL-injection.
Is al opgelost, var_dump gaf precies aan wat ik fout had gedaan, en ja het had te maken met de $_SESSION['ID']; die was nog niet aangemaakt. Maar dat is nu opgelost.
Mooi :-)