herlade = post
ik heb een soutbox gemaakt met eronder een post form. nu iedere keer dat ik de home ( waar die box op staat ) herlaad na het posten van iets post hij het opnieuw. hoe kan ik er voor zorgen dat hij niet iedere keer weer post na het herladen?
alvast bedankt
laat je code eens zien?
Variabele leeg maken?
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
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
<?php
$sql = "SELECT bericht, poster_id FROM scoutbox ORDER BY id desc";
if(!$res = mysql_query($sql))
{
trigger_error(mysql_error().'<br />In query: '.$sql);
}
elseif(mysql_num_rows($res) == 0)
{
echo 'Geen resultaten gevonden,Wees de eerste!';
}
else
{
echo '<div id="scouts">';
while ($gegevens = mysql_fetch_assoc($res)){
$gebruiker_ophaal = mysql_query("SELECT avatar, gebruikersnaam FROM gebruikers WHERE id=".$gegevens['poster_id']."");
$gebruiker = mysql_fetch_assoc($gebruiker_ophaal);
#kijken of de gebruiker een avatar heeft
if (empty($gebruiker['avatar'])) {
$avatar = "member/no_avatar.jpg";
} else {
$avatar = $gebruiker['avatar'];
}
echo '<div id="post"><img src="'.$avatar.'" alt="avatar" height="42" width="42" title="'.$gebruiker['gebruikersnaam'].'" align="left" />';
echo $gegevens['bericht'];
echo '</div><br><hr>';
}
echo '</div>';
}
if( $_SERVER['REQUEST_METHOD'] == 'POST' )
{
if($_SESSION['rang'] = "3") {
$maxtekens = "1000";
} else {
$maxtekens = "160";
}
if(empty($_POST['scout'])) {
echo 'Sorry.<br>Een lege scout wordt niet aanvaardt.<br><a href="">probeer opnieuw</a>';
}
elseif($_POST['scout'] == "Voeg zelf iets toe") {
echo 'Sorry.<br>Gelieve een geldige scout in te voegen<br><a href="">probeer opnieuw</a>';
} elseif(strlen($_POST['scout']) > $maxtekens) {
echo 'Sorry,<br>U scout is te groot (max. '.$maxtekens.' tekens).<br><a href="">probeer opnieuw</a>';
} else {
##-->posten
$date = date("d-m-Y G:i:s");
$sql = "
INSERT INTO scoutbox
(
bericht,
poster_id,
toegevoegd_op
)
VALUES
(
'".mysql_real_escape_string($_POST['scout'])."',
'".mysql_real_escape_string($_SESSION['gebruiker'])."',
'".mysql_real_escape_string($date)."'
)
";
if(!$res = mysql_query($sql))
{
trigger_error(mysql_error().'<br />In query: '.$sql);
echo '<div id="error">ERROR,<br>Sorry er is een error opgetreden toen we probeerde gegevens in te voegen. Gelieve de webmaister te contacteren.</div>';
}
else
{
echo 'De gegevens zijn ingevoegd.<br>Bedankt!';
}
##<--posten
}
} else {
echo '<FORM action="'.$_SERVER['PHP_SELF'].'" method="post">';
echo '<textarea name="scout" rows="2" cols="20">Voeg zelf iets toe</textarea>';
echo '<INPUT type="submit" value="Toevoegen"></FORM>';
}
?>
$sql = "SELECT bericht, poster_id FROM scoutbox ORDER BY id desc";
if(!$res = mysql_query($sql))
{
trigger_error(mysql_error().'<br />In query: '.$sql);
}
elseif(mysql_num_rows($res) == 0)
{
echo 'Geen resultaten gevonden,Wees de eerste!';
}
else
{
echo '<div id="scouts">';
while ($gegevens = mysql_fetch_assoc($res)){
$gebruiker_ophaal = mysql_query("SELECT avatar, gebruikersnaam FROM gebruikers WHERE id=".$gegevens['poster_id']."");
$gebruiker = mysql_fetch_assoc($gebruiker_ophaal);
#kijken of de gebruiker een avatar heeft
if (empty($gebruiker['avatar'])) {
$avatar = "member/no_avatar.jpg";
} else {
$avatar = $gebruiker['avatar'];
}
echo '<div id="post"><img src="'.$avatar.'" alt="avatar" height="42" width="42" title="'.$gebruiker['gebruikersnaam'].'" align="left" />';
echo $gegevens['bericht'];
echo '</div><br><hr>';
}
echo '</div>';
}
if( $_SERVER['REQUEST_METHOD'] == 'POST' )
{
if($_SESSION['rang'] = "3") {
$maxtekens = "1000";
} else {
$maxtekens = "160";
}
if(empty($_POST['scout'])) {
echo 'Sorry.<br>Een lege scout wordt niet aanvaardt.<br><a href="">probeer opnieuw</a>';
}
elseif($_POST['scout'] == "Voeg zelf iets toe") {
echo 'Sorry.<br>Gelieve een geldige scout in te voegen<br><a href="">probeer opnieuw</a>';
} elseif(strlen($_POST['scout']) > $maxtekens) {
echo 'Sorry,<br>U scout is te groot (max. '.$maxtekens.' tekens).<br><a href="">probeer opnieuw</a>';
} else {
##-->posten
$date = date("d-m-Y G:i:s");
$sql = "
INSERT INTO scoutbox
(
bericht,
poster_id,
toegevoegd_op
)
VALUES
(
'".mysql_real_escape_string($_POST['scout'])."',
'".mysql_real_escape_string($_SESSION['gebruiker'])."',
'".mysql_real_escape_string($date)."'
)
";
if(!$res = mysql_query($sql))
{
trigger_error(mysql_error().'<br />In query: '.$sql);
echo '<div id="error">ERROR,<br>Sorry er is een error opgetreden toen we probeerde gegevens in te voegen. Gelieve de webmaister te contacteren.</div>';
}
else
{
echo 'De gegevens zijn ingevoegd.<br>Bedankt!';
}
##<--posten
}
} else {
echo '<FORM action="'.$_SERVER['PHP_SELF'].'" method="post">';
echo '<textarea name="scout" rows="2" cols="20">Voeg zelf iets toe</textarea>';
echo '<INPUT type="submit" value="Toevoegen"></FORM>';
}
?>
als ik een variabel leeg maak dan post hij toch een lege text?
mysql_real_escape_string op regel 16, dat maakt je script onveilig. En mysql_real_escape_string zonder '' in de query werkt ook niet. Zet die er dus ook in, verder als het een getal is kun je het typecasten met (int) $var, maar geen real_escape_string gebruiken (bij een getal dus, niet bij een string).
$_SERVER['PHP_SELF'] is ook hack gevoelig, dit kun je beter gewoon weglaten dan werkt je script ook.
Zet na het toevoegen eens: $_POST = Array(). Hierdoor leeg je de post variabele en kan er niks meer gepost worden.
Ik mis $_SERVER['PHP_SELF'] is ook hack gevoelig, dit kun je beter gewoon weglaten dan werkt je script ook.
Zet na het toevoegen eens: $_POST = Array(). Hierdoor leeg je de post variabele en kan er niks meer gepost worden.
Toevoeging op 08/01/2012 13:52:22:
ok gebeurt ( dat van die regel 16 " ik dagt dat dat niet moest omdat dat werdt bedacht door mijn box ")
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
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
<?php
$sql = "SELECT bericht, poster_id FROM scoutbox ORDER BY id desc";
if(!$res = mysql_query($sql))
{
trigger_error(mysql_error().'<br />In query: '.$sql);
}
elseif(mysql_num_rows($res) == 0)
{
echo 'Geen resultaten gevonden,Wees de eerste!';
}
else
{
echo '<div id="scouts">';
while ($gegevens = mysql_fetch_assoc($res)){
$gebruiker_ophaal = mysql_query("SELECT avatar, gebruikersnaam FROM gebruikers WHERE id=". mysql_real_escape_string($gegevens['poster_id'])."");
$gebruiker = mysql_fetch_assoc($gebruiker_ophaal);
#kijken of de gebruiker een avatar heeft
if (empty($gebruiker['avatar'])) {
$avatar = "member/no_avatar.jpg";
} else {
$avatar = $gebruiker['avatar'];
}
echo '<div id="post"><img src="'.$avatar.'" alt="avatar" height="42" width="42" title="'.$gebruiker['gebruikersnaam'].'" align="left" />';
echo $gegevens['bericht'];
echo '</div><br><hr>';
}
echo '</div>';
}
if( $_SERVER['REQUEST_METHOD'] == 'POST' )
{
if($_SESSION['rang'] = "3") {
$maxtekens = "1000";
} else {
$maxtekens = "160";
}
if(empty($_POST['scout'])) {
echo 'Sorry.<br>Een lege scout wordt niet aanvaardt.<br><a href="">probeer opnieuw</a>';
}
elseif($_POST['scout'] == "Voeg zelf iets toe") {
echo 'Sorry.<br>Gelieve een geldige scout in te voegen<br><a href="">probeer opnieuw</a>';
} elseif(strlen($_POST['scout']) > $maxtekens) {
echo 'Sorry,<br>U scout is te groot (max. '.$maxtekens.' tekens).<br><a href="">probeer opnieuw</a>';
} else {
##-->posten
$date = date("d-m-Y G:i:s");
$sql = "
INSERT INTO scoutbox
(
bericht,
poster_id,
toegevoegd_op
)
VALUES
(
'".mysql_real_escape_string($_POST['scout'])."',
'".mysql_real_escape_string($_SESSION['gebruiker'])."',
'".mysql_real_escape_string($date)."'
)
";
if(!$res = mysql_query($sql))
{
trigger_error(mysql_error().'<br />In query: '.$sql);
echo '<div id="error">ERROR,<br>Sorry er is een error opgetreden toen we probeerde gegevens in te voegen. Gelieve de webmaister te contacteren.</div>';
}
else
{
echo 'De gegevens zijn ingevoegd.<br>Bedankt!';
$_POST = Array()
}
##<--posten
}
}
echo '<FORM action="" method="post">';
echo '<textarea name="scout" rows="2" cols="20">Voeg zelf iets toe</textarea>';
echo '<INPUT type="submit" value="Toevoegen"></FORM>';
?>
$sql = "SELECT bericht, poster_id FROM scoutbox ORDER BY id desc";
if(!$res = mysql_query($sql))
{
trigger_error(mysql_error().'<br />In query: '.$sql);
}
elseif(mysql_num_rows($res) == 0)
{
echo 'Geen resultaten gevonden,Wees de eerste!';
}
else
{
echo '<div id="scouts">';
while ($gegevens = mysql_fetch_assoc($res)){
$gebruiker_ophaal = mysql_query("SELECT avatar, gebruikersnaam FROM gebruikers WHERE id=". mysql_real_escape_string($gegevens['poster_id'])."");
$gebruiker = mysql_fetch_assoc($gebruiker_ophaal);
#kijken of de gebruiker een avatar heeft
if (empty($gebruiker['avatar'])) {
$avatar = "member/no_avatar.jpg";
} else {
$avatar = $gebruiker['avatar'];
}
echo '<div id="post"><img src="'.$avatar.'" alt="avatar" height="42" width="42" title="'.$gebruiker['gebruikersnaam'].'" align="left" />';
echo $gegevens['bericht'];
echo '</div><br><hr>';
}
echo '</div>';
}
if( $_SERVER['REQUEST_METHOD'] == 'POST' )
{
if($_SESSION['rang'] = "3") {
$maxtekens = "1000";
} else {
$maxtekens = "160";
}
if(empty($_POST['scout'])) {
echo 'Sorry.<br>Een lege scout wordt niet aanvaardt.<br><a href="">probeer opnieuw</a>';
}
elseif($_POST['scout'] == "Voeg zelf iets toe") {
echo 'Sorry.<br>Gelieve een geldige scout in te voegen<br><a href="">probeer opnieuw</a>';
} elseif(strlen($_POST['scout']) > $maxtekens) {
echo 'Sorry,<br>U scout is te groot (max. '.$maxtekens.' tekens).<br><a href="">probeer opnieuw</a>';
} else {
##-->posten
$date = date("d-m-Y G:i:s");
$sql = "
INSERT INTO scoutbox
(
bericht,
poster_id,
toegevoegd_op
)
VALUES
(
'".mysql_real_escape_string($_POST['scout'])."',
'".mysql_real_escape_string($_SESSION['gebruiker'])."',
'".mysql_real_escape_string($date)."'
)
";
if(!$res = mysql_query($sql))
{
trigger_error(mysql_error().'<br />In query: '.$sql);
echo '<div id="error">ERROR,<br>Sorry er is een error opgetreden toen we probeerde gegevens in te voegen. Gelieve de webmaister te contacteren.</div>';
}
else
{
echo 'De gegevens zijn ingevoegd.<br>Bedankt!';
$_POST = Array()
}
##<--posten
}
}
echo '<FORM action="" method="post">';
echo '<textarea name="scout" rows="2" cols="20">Voeg zelf iets toe</textarea>';
echo '<INPUT type="submit" value="Toevoegen"></FORM>';
?>
Gewijzigd op 08/01/2012 13:54:49 door php knipper
Php knipper op 08/01/2012 13:45:41:
bevijlegingsfouten
De wat???
Gewijzigd op 08/01/2012 13:55:55 door php knipper
Je springt niet consequent in, de ene keer plaats je { aan het eind van de regel de andere keer aan het begin.
Als je gestructureerd te werk gaat, zie je wat er gebeurt.
Ik heb het idee dat je fout gaat bij je controle of het formulier verzonden is. Zo ja, dan vinden er een aantal controles plaats. Zo niet, dan gaat de else op: inserten...
Zelf code (leren) lezen en (leren) debuggen --> je kunt toch zelf controleren wat er stap voor stap gebeurt.
ik wil graag mijn code overzichtelijk houden ( witregels, inspringen bij haakjes ) maar wat is nu de beste manier op dat te doen.
debuggen lukt me al aardig ( ik krijg die post gewoon niet terug weg na het invoegen van gegevens )
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
$mijnVar = 'Hello World';
if( isset($mijnVar) && ($mijnVar === 'Hello World') )
{ # Handle mijnVar = 'Hello World'
// Replace World to Wereld
$mijnVar = str_replace('World', 'Wereld', $mijnVar);
// Show the var
echo $mijnVar;
if( $mijnVar === 'Hello Wereld' )
{
// Make hello netherlands
$mijnVar = str_replace('Hello', 'Hallo', $mijnVar);
echo $mijnVar;
}
else
{
echo '$mijnVar is niet gelijk aan Hello Wereld';
}
}
?>
$mijnVar = 'Hello World';
if( isset($mijnVar) && ($mijnVar === 'Hello World') )
{ # Handle mijnVar = 'Hello World'
// Replace World to Wereld
$mijnVar = str_replace('World', 'Wereld', $mijnVar);
// Show the var
echo $mijnVar;
if( $mijnVar === 'Hello Wereld' )
{
// Make hello netherlands
$mijnVar = str_replace('Hello', 'Hallo', $mijnVar);
echo $mijnVar;
}
else
{
echo '$mijnVar is niet gelijk aan Hello Wereld';
}
}
?>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
session_start();
$_SESSION['timer'] = isset($_SESSION['timer']) ? $_SESSION['timer'] : 0;
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
if(time() < $_SESSION['timer'])
{
echo 'Je mag niet posten';
}
else
{
$_SESSION['timer'] = time() + 60;
echo 'Afhandelen formulier';
}
}
else
{
echo 'Formulier';
}
echo 'Pagina';
?>
session_start();
$_SESSION['timer'] = isset($_SESSION['timer']) ? $_SESSION['timer'] : 0;
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
if(time() < $_SESSION['timer'])
{
echo 'Je mag niet posten';
}
else
{
$_SESSION['timer'] = time() + 60;
echo 'Afhandelen formulier';
}
}
else
{
echo 'Formulier';
}
echo 'Pagina';
?>
Php knipper op 08/01/2012 14:27:13:
ik wil graag mijn code overzichtelijk houden ( witregels, inspringen bij haakjes ) maar wat is nu de beste manier op dat te doen.
Prima, maar dat zie ik niet terug in je voorbeeldcode hierboven.
Denk dat Wouter je een mooi voorbeeld geeft.
@wouter: ik zou $mijnVar op regel 20 buiten de quote plaatsen.
Obelix en Idefix op 08/01/2012 15:05:10:
@wouter: ik zou $mijnVar op regel 20 buiten de quote plaatsen.
Volgens mij is dit bewust gedaan.
- SanThe - op 08/01/2012 15:08:05:
Volgens mij is dit bewust gedaan.
Obelix en Idefix op 08/01/2012 15:05:10:
@wouter: ik zou $mijnVar op regel 20 buiten de quote plaatsen.
Volgens mij is dit bewust gedaan.
nee, of $mijnVar.'tekst'; of '{$mijnVar} tekst';
Volgens mij wil ie de tekst '$mijnVar' op het scherm hebben.
@Jaron, SanThe heeft gelijk. Ik wil gewoon $mijnVar (dus als tekst) op de pagina hebben. En met enkele quotes hoef je die niet te escapen.
ok dan zal ik mijn code is "leesbaar maken " (maar hoe verwijder je dat je hebt gepost ) dus alsje drukt op post in een form dan krijg je iets van dat form wat die if($_SERVER['REQUEST_METHOD'] == 'POST') laat afgaan ( dat wil ik weg )
Php knipper op 08/01/2012 15:45:41:
ok dan zal ik mijn code is "leesbaar maken " (maar hoe verwijder je dat je hebt gepost ) dus alsje drukt op post in een form dan krijg je iets van dat form wat die if($_SERVER['REQUEST_METHOD'] == 'POST') laat afgaan ( dat wil ik weg )
En nu in het Nederlands.
if($_SERVER['REQUEST_METHOD'] == 'POST')
hoe doe ik dat?
Heb je mijn scriptje al bekeken. Daarmee kan je pas na een minuut weer posten. Uiteraard in te stellen.