Nieuwssysteem: Error op lijn 26 maar waarom?
Ik ben nu bezig om een nieuwssysteem te maken.
De code hieronder is om een reactie toe te voegen maar het is nog in de beginfase.
Nu is nog SPAM mogelijk enzovoort.
Ik krijg een error op lijn 26 maar zou niet weten hoe dit komt.
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
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
<?php
# errors weergeven
ini_set('display_errors',1); // 1 == aan , 0 == uit
error_reporting(E_ALL | E_STRICT);
# sql debug
define('DEBUG_MODE',true); // true == aan, false == uit
# functie voor sql debug
function showSQLError($sql,$error,$text='Error')
{
if (DEBUG_MODE)
{
return '<pre>Error: ' . $error . '<br />' . $sql . '</pre>';
}
else
{
return $text;
}
}
include(config.php)
if($_SERVER['REQUEST_METHOD'] == 'POST')
{ $sql = "
INSERT INTO balk
(
naam,
bericht,
ip,
datum
)
VALUES
(
'".mysql_real_escape_string($_POST['naam'])."',
'".mysql_real_escape_string($_POST['bericht'])."',
'".mysql_real_escape_string($_SERVER['REMOTE_ADDR'])."',
DATE_ADD(NOW(), INTERVAL 6 HOUR)
)
";
# Check of query is gelukt
if (($result_insert_reactie = mysql_query($sql_insert_reactie)) === false)
{
# als de query fout is -> foutafhandeling
echo showSQLError($sql_insert_reactie,mysql_error(),'Fout bij het invoegen van een gebruikerreactie.');
}
else
{
# De query is geluk! :)
echo 'Bericht succesvol geplaatsts.';
}
else { // Er is niet op de knop Verzenden geklikt dus laten we het formuliertje weer zien
?>
<html>
<title>Nieuwssysteem - Plaats reactie</title>
<body>
<form action='reactie.php' method='post'>
<input type='text' name='naam' maxlength='30'/>
<input type="text" name="bericht" />
<input type="submit" value="Plaats reactie"/>
<?php
}
?>
# errors weergeven
ini_set('display_errors',1); // 1 == aan , 0 == uit
error_reporting(E_ALL | E_STRICT);
# sql debug
define('DEBUG_MODE',true); // true == aan, false == uit
# functie voor sql debug
function showSQLError($sql,$error,$text='Error')
{
if (DEBUG_MODE)
{
return '<pre>Error: ' . $error . '<br />' . $sql . '</pre>';
}
else
{
return $text;
}
}
include(config.php)
if($_SERVER['REQUEST_METHOD'] == 'POST')
{ $sql = "
INSERT INTO balk
(
naam,
bericht,
ip,
datum
)
VALUES
(
'".mysql_real_escape_string($_POST['naam'])."',
'".mysql_real_escape_string($_POST['bericht'])."',
'".mysql_real_escape_string($_SERVER['REMOTE_ADDR'])."',
DATE_ADD(NOW(), INTERVAL 6 HOUR)
)
";
# Check of query is gelukt
if (($result_insert_reactie = mysql_query($sql_insert_reactie)) === false)
{
# als de query fout is -> foutafhandeling
echo showSQLError($sql_insert_reactie,mysql_error(),'Fout bij het invoegen van een gebruikerreactie.');
}
else
{
# De query is geluk! :)
echo 'Bericht succesvol geplaatsts.';
}
else { // Er is niet op de knop Verzenden geklikt dus laten we het formuliertje weer zien
?>
<html>
<title>Nieuwssysteem - Plaats reactie</title>
<body>
<form action='reactie.php' method='post'>
<input type='text' name='naam' maxlength='30'/>
<input type="text" name="bericht" />
<input type="submit" value="Plaats reactie"/>
<?php
}
?>
Heb al verschillende dingen geprobeert maar kan het niet vinden.
Met vriendelijke groet
Dem
Gewijzigd op 13/01/2012 17:37:40 door - Diov -
Toevoeging op 13/01/2012 17:31:40:
Laat maar, ik denk dat ik het al zie. Een vergeten ; op regel 24 wellicht?
nou je bent de ; vergeten achter je inlcude op line 24...
Dit is de error maar vind niet echt veel fouten in mijn statement.
Misschien mijn syntax.
Toevoeging op 13/01/2012 17:33:38:
Marco PHPJunkie op 13/01/2012 17:31:43:
nou je bent de ; vergeten achter je inlcude op line 24...
Oh bedankt. Had ik even over het hoofd gezien. De error duide ook een verkeerde regel aan naja.
Als mens heb je het gevoel dat de fout op lijn 24 staat, maar php ziet dat anders.
Het is pas wanneer php iets anders tegen komt, dat hij denkt: oei, dit had ik niet verwacht. Ik verwachtte een puntkomma.
En dat gebeurt dus op lijn 26.
Na lijn 55 moest er nog een '}' komen.
Nu werkt het :)
Dem Ian op 13/01/2012 17:32:08:
De error duide ook een verkeerde regel aan naja.
Strikt genomen niet. De parser verwacht namelijk nog een ; te zien. Die ziet hij niet, maar wel een IF. De fout zit dus op regel 26, want daar komt als eerste iets wat de parser niet verwacht. Dat de ; een paar regels eerder moet kan die parser niet goed zien.
Anyway, het is een fout die iedereen een paar keer maakt.... per dag :-)
Ik zou graag hebben als je voorbeeld in een form hebt, dat je dan action gewoon de pagina naam neemt. Zonder hem leeg te laten.
Heb dit nodig in php misschien zijn er ook nog andere oplossingen.
Dat van in een form is een voorbeeld.
Ik snap je niet?
Dem Ian op 13/01/2012 18:23:28:
Ik zou graag hebben als je voorbeeld in een form hebt, dat je dan action gewoon de pagina naam neemt. Zonder hem leeg te laten.
Wat staat hier?
Als ik een nieuwssysteem maak, zal ik dit ook niet kunnen gebruiken.
Ik zal een andere oplossing moeten zoeken :)
Heb nu dit:
Code (php)
1
2
2
header('Refresh: 2; url=""');
echo 'U wordt automatisch teruggestuurd. Als dit niet het geval is, druk dan <a href="">Hier</a>';
echo 'U wordt automatisch teruggestuurd. Als dit niet het geval is, druk dan <a href="">Hier</a>';
Maar ik had ooit eens gelezen om voorbeeld met tags ofzo zoiets te doen maar weet niet waar ik dat gezien had.
Gewijzigd op 13/01/2012 18:41:05 door - Diov -
" method="post">
</form>
Bedoel je denk ik? Het komt veel voor, maar is erg XSS gevoelig.
<form action="</form>
Bedoel je denk ik? Het komt veel voor, maar is erg XSS gevoelig.
Oh ok, dus het is eigenlijk beter om het gewoon leeg te laten?
Jep en natuurlijk veel escapen e.d.