Fout in $sql ?
Hij zou de waarden die ik bij het bewerken veranderd heb, moeten updaten. Hij zegt wel dat ie het doet, maar doet het niet. Ik zie niet waar de fout zit, omdat het script gewoon draait.
Dit is de 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
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
<?php
...
if(isset($_POST['submit'])) {
// Wijzigingen uitvoeren
$sql = "UPDATE gastenboek SET `naam` = '".$_POST['naam']."', `website` = '".$_POST['website']."', `email` = '".$_POST['mail']."', `zichtbaar` = '".$_POST['zichtbaar']."', `bericht` = '".$_POST['bericht']."' WHERE `id` = '".$_GET['bewerk']."'";
$query = mysql_query($sql);
if($query == TRUE) {
echo "Het bericht is succesvol gewijzigd en opgeslagen.<br>\n <a href='?pagina=edit_gastenboek'>« Terug naar 'Edit Gastenboek'</a>\n";
}else{
echo mysql_error();
}
}else{
// Bericht bewerken
$id = $_GET['bewerk'];
$query = "SELECT * FROM gastenboek WHERE id='".$id."'";
$r = mysql_query($query); // Run the query.
while ($row = mysql_fetch_array($r)) {
$naam = $row['naam'];
$ip = $row['ip'];
$mail = $row['email'];
$website = $row['website'];
$zichtbaar = $row['zichtbaar'];
$bericht = $row['bericht'];
?>
<form method='POST' action='<?=$_SERVER['PHP_SELF']?>?pagina=edit_gastenboek&menuid=7&bewerk=<? echo $id; ?>'>
<table border='0' cellspacing='0' class='text2'>
<tr>
<td>Naam:</td>
<td><input type='text' name='naam' maxlength='50' size='30' value='<?=$naam?>'></td>
</tr>
<tr>
<td>IP:</td>
<td><? echo $ip ?></td>
</tr>
<tr>
<td>E-mail:</td>
<td><input type='text' name='email' maxlength='70' size='30' value='<?=$mail?>'></td>
</tr>
<tr>
<td> </td>
<td valign='top' class='text1'><input type='checkbox' name='zichtbaar' value='<? if($zichtbaar == 1) { echo "1"; }else{ echo "0"; }?>'> <small>E-mailadres mag zichtbaar zijn in het gastenboek?</small></td>
</tr>
<tr>
<td>Website:</td>
<td><input type='text' name='website' maxlength='100' size='30' value='<?=$website?>'></td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td valign='top'>Bericht:</td>
<td><textarea name='bericht' cols='55' rows='10'><? echo stripslashes($bericht); ?></textarea></td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td><input type="hidden" name="id" value=<? echo $id; ?>><input class='inputbutton' type='submit' name='submit' value='Verzenden'></td>
</tr>
</table>
</form>
<?
}
}
...
?>
...
if(isset($_POST['submit'])) {
// Wijzigingen uitvoeren
$sql = "UPDATE gastenboek SET `naam` = '".$_POST['naam']."', `website` = '".$_POST['website']."', `email` = '".$_POST['mail']."', `zichtbaar` = '".$_POST['zichtbaar']."', `bericht` = '".$_POST['bericht']."' WHERE `id` = '".$_GET['bewerk']."'";
$query = mysql_query($sql);
if($query == TRUE) {
echo "Het bericht is succesvol gewijzigd en opgeslagen.<br>\n <a href='?pagina=edit_gastenboek'>« Terug naar 'Edit Gastenboek'</a>\n";
}else{
echo mysql_error();
}
}else{
// Bericht bewerken
$id = $_GET['bewerk'];
$query = "SELECT * FROM gastenboek WHERE id='".$id."'";
$r = mysql_query($query); // Run the query.
while ($row = mysql_fetch_array($r)) {
$naam = $row['naam'];
$ip = $row['ip'];
$mail = $row['email'];
$website = $row['website'];
$zichtbaar = $row['zichtbaar'];
$bericht = $row['bericht'];
?>
<form method='POST' action='<?=$_SERVER['PHP_SELF']?>?pagina=edit_gastenboek&menuid=7&bewerk=<? echo $id; ?>'>
<table border='0' cellspacing='0' class='text2'>
<tr>
<td>Naam:</td>
<td><input type='text' name='naam' maxlength='50' size='30' value='<?=$naam?>'></td>
</tr>
<tr>
<td>IP:</td>
<td><? echo $ip ?></td>
</tr>
<tr>
<td>E-mail:</td>
<td><input type='text' name='email' maxlength='70' size='30' value='<?=$mail?>'></td>
</tr>
<tr>
<td> </td>
<td valign='top' class='text1'><input type='checkbox' name='zichtbaar' value='<? if($zichtbaar == 1) { echo "1"; }else{ echo "0"; }?>'> <small>E-mailadres mag zichtbaar zijn in het gastenboek?</small></td>
</tr>
<tr>
<td>Website:</td>
<td><input type='text' name='website' maxlength='100' size='30' value='<?=$website?>'></td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td valign='top'>Bericht:</td>
<td><textarea name='bericht' cols='55' rows='10'><? echo stripslashes($bericht); ?></textarea></td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td><input type="hidden" name="id" value=<? echo $id; ?>><input class='inputbutton' type='submit' name='submit' value='Verzenden'></td>
</tr>
</table>
</form>
<?
}
}
...
?>
Gewijzigd op 01/01/1970 01:00:00 door Sven Onbekend
- gebruik om te versturen: $_SERVER['REQUEST_METHOD']=="POST"
- Ik mis foutafhandeling met mysql_error();
- foutafhandeling heb ik idd niet gemaakt.
Code (php)
Gewijzigd op 01/01/1970 01:00:00 door - Ariën -
http://us3.php.net/manual/en/reserved.variables.server.php zitten lezen over $_SERVER, maar snap niet waarom dit een SQL-injection voorkomt. Zou je dit uit kunnen leggen?
Ik heb op Als je dus als naam dit invult: naam'; DELETE FROM gastenboek;
Ben je alles kwijt. Gebruik daarom mysql_real_escape_string();
sven schreef op 25.08.2009 00:13:
Ik heb op http://us3.php.net/manual/en/reserved.variables.server.php zitten lezen over $_SERVER, maar snap niet waarom dit een SQL-injection voorkomt. Zou je dit uit kunnen leggen?
$_SERVER verkomt op helemaal geen SQL-injection, daarvoor heb je mysql_real_escape_string. $_SERVER['REQUEST_METHOD'] == POST is een betere manier om te controleren of een forum gepost is met POST als method.
Dat krijg je als je geen foutafhandeling maakt...
Als je iets wilt deleten, doe dat dan soft, door iets als verwijderd te markeren.
Gewijzigd op 01/01/1970 01:00:00 door - Ariën -
Code (php)
1
2
3
4
5
2
3
4
5
$sql = "UPDATE gastenboek SET `naam` = '".$_POST['naam']."', `website` = '".$_POST['website']."', `email` = '".$_POST['mail']."', `zichtbaar` = '".$_POST['zichtbaar']."', `bericht` = '".$_POST['bericht']."' WHERE `id` = '".$id."'";
// moet worden
$sql = "UPDATE gastenboek SET `naam` = '".$_POST['naam']."', `website` = '".$_POST['website']."', `email` = '".$_POST['mail']."', `zichtbaar` = '".$_POST['zichtbaar']."', `bericht` = '".$_POST['bericht']."' WHERE `id` = '".$_GET['bewerk']."'";
// moet worden
$sql = "UPDATE gastenboek SET `naam` = '".$_POST['naam']."', `website` = '".$_POST['website']."', `email` = '".$_POST['mail']."', `zichtbaar` = '".$_POST['zichtbaar']."', `bericht` = '".$_POST['bericht']."' WHERE `id` = '".$_GET['bewerk']."'";
$id was leeg :s....
waar staat dit script atm??
Hoe zet je database rechten in???
Gelieve Niet Bumpen::
Gewijzigd op 01/01/1970 01:00:00 door Matthias R