Blokkeer Persoon
Ik heb nog steeds een probleem met dit blokkeer script:
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
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
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
if (!isset($_POST['comment']))
{
echo "U bent vergeten een bericht in te vullen";
}
else
{
$controlle = mysql_query("SELECT blocked FROM users WHERE id='".$_SESSION['id']."'");
$controll = mysql_query("SELECT blockreden FROM users WHERE blocked=1 AND id='".$_SESSION['id']."'");
while($row = mysql_fetch_array($controll))
{
if(!$controlle)
{
$posted_on = date("M j, Y g:i A");
$comment = htmlentities(strip_tags ($_POST['comment']));
$query = mysql_query("INSERT INTO site_news_comments (article, userid, comment, posted_on) VALUES ('".mysql_real_escape_string($news_article_id)."', '".mysql_real_escape_string($_SESSION['id'])."', '".mysql_real_escape_string($comment)."', '".$posted_on."' ") or die (mysql_error());
if($query)
{
echo 'Je hebt een reactie geplaatst!<br /><br />';
}
}
else
{
echo 'Wij hebben bepaalt dat jij geen reacties meer mag plaatsen.<br>De reden is: <b>'.$row['blockreden'].' </b> </div> ';
}
}
}
}
else
{
echo'
<form action="" method="post">
<textarea name="comment" maxlength="500"></textarea><br /><br />
<input type="submit" name="post_comment" value="Plaats Reactie" />
</form>
</div>';
}
?>
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
if (!isset($_POST['comment']))
{
echo "U bent vergeten een bericht in te vullen";
}
else
{
$controlle = mysql_query("SELECT blocked FROM users WHERE id='".$_SESSION['id']."'");
$controll = mysql_query("SELECT blockreden FROM users WHERE blocked=1 AND id='".$_SESSION['id']."'");
while($row = mysql_fetch_array($controll))
{
if(!$controlle)
{
$posted_on = date("M j, Y g:i A");
$comment = htmlentities(strip_tags ($_POST['comment']));
$query = mysql_query("INSERT INTO site_news_comments (article, userid, comment, posted_on) VALUES ('".mysql_real_escape_string($news_article_id)."', '".mysql_real_escape_string($_SESSION['id'])."', '".mysql_real_escape_string($comment)."', '".$posted_on."' ") or die (mysql_error());
if($query)
{
echo 'Je hebt een reactie geplaatst!<br /><br />';
}
}
else
{
echo 'Wij hebben bepaalt dat jij geen reacties meer mag plaatsen.<br>De reden is: <b>'.$row['blockreden'].' </b> </div> ';
}
}
}
}
else
{
echo'
<form action="" method="post">
<textarea name="comment" maxlength="500"></textarea><br /><br />
<input type="submit" name="post_comment" value="Plaats Reactie" />
</form>
</div>';
}
?>
Ik heb dit stukje Code.
Wanneer een user geblokkerd is dus Blocked = 1
Komt er netjes te staan dat deze persoon geblokkeerd is.
Maar is blocked 0, dan gebeurt er niks.
Wat is hier verkeerd?
Mvg
Gewijzigd op 25/03/2011 14:48:56 door Henke van der bunt
wil je eerst je titel aanpassen?
kan je me nu helpen ?
als de query fout is gegaan, doe dan dit
En dat is volgens mij niet de bedoeling.
ik weet niet wat voor resultaat jij in je database hebt staan, maar je moet dus eerst kijken of je query gelukt is en daarna iets van if $row['blocked'] == ja, niet reageren, en anders doorgaan
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
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
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
if (!isset($_POST['comment']))
{
echo "U bent vergeten een bericht in te vullen";
}
else
{
$controlle = mysql_query("SELECT blocked,blockreden FROM users WHERE id='".$_SESSION['id']."' AND blocked=1");
$controll = mysql_query("SELECT blockreden FROM users WHERE blocked=1 AND id='".$_SESSION['id']."'");
while($row = mysql_fetch_array($controlle))
{
if $controlle == 0
{
$posted_on = date("M j, Y g:i A");
$comment = htmlentities(strip_tags ($_POST['comment']));
$query = mysql_query("INSERT INTO site_news_comments (article, userid, comment, posted_on) VALUES ('".mysql_real_escape_string($news_article_id)."', '".mysql_real_escape_string($_SESSION['id'])."', '".mysql_real_escape_string($comment)."', '".$posted_on."' ") or die (mysql_error());
if($query)
{
echo 'Je hebt een reactie geplaatst!<br /><br />';
}
}
else
{
echo 'Wij hebben bepaalt dat jij geen reacties meer mag plaatsen.<br>De reden is: <b>'.$row['blockreden'].' </b> </div> ';
}
}
}
}
else
{
echo'
<form action="" method="post">
<textarea name="comment" maxlength="500"></textarea><br /><br />
<input type="submit" name="post_comment" value="Plaats Reactie" />
</form>
</div>';
}
?>
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
if (!isset($_POST['comment']))
{
echo "U bent vergeten een bericht in te vullen";
}
else
{
$controlle = mysql_query("SELECT blocked,blockreden FROM users WHERE id='".$_SESSION['id']."' AND blocked=1");
$controll = mysql_query("SELECT blockreden FROM users WHERE blocked=1 AND id='".$_SESSION['id']."'");
while($row = mysql_fetch_array($controlle))
{
if $controlle == 0
{
$posted_on = date("M j, Y g:i A");
$comment = htmlentities(strip_tags ($_POST['comment']));
$query = mysql_query("INSERT INTO site_news_comments (article, userid, comment, posted_on) VALUES ('".mysql_real_escape_string($news_article_id)."', '".mysql_real_escape_string($_SESSION['id'])."', '".mysql_real_escape_string($comment)."', '".$posted_on."' ") or die (mysql_error());
if($query)
{
echo 'Je hebt een reactie geplaatst!<br /><br />';
}
}
else
{
echo 'Wij hebben bepaalt dat jij geen reacties meer mag plaatsen.<br>De reden is: <b>'.$row['blockreden'].' </b> </div> ';
}
}
}
}
else
{
echo'
<form action="" method="post">
<textarea name="comment" maxlength="500"></textarea><br /><br />
<input type="submit" name="post_comment" value="Plaats Reactie" />
</form>
</div>';
}
?>
heb m nu zo, maar nu zegt ie T_VARIABLE, expecting '('
op if $controlle == 0
Gewijzigd op 25/03/2011 15:08:37 door Henke van der bunt
kun je de hele foutmelding posten?
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
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
<?php
//zag nog geen session start staan misschien had je dat al ergens eerder gedaaan
session_start();
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
if (!isset($_POST['comment']))
{
echo "U bent vergeten een bericht in te vullen";
}
else
{
$query2 = ("SELECT blocked,blockreden FROM users WHERE id='".mysql_real_escape_string($_SESSION['id'])."'");
$controlle = mysql_query($query2);
if($controlle){
while($row = mysql_fetch_assoc($controlle)){
//variabelen vastzetten
$reden = $row['blockreden']
$blocked = $row['blocked'];
}
//is de user geblokt?
if($blocked == '0'){
$posted_on = date("M j, Y g:i A");
$comment = htmlentities(strip_tags ($_POST['comment']));
$query =("INSERT INTO site_news_comments (article, userid, comment, posted_on) VALUES ('".mysql_real_escape_string($news_article_id)."', '".mysql_real_escape_string($_SESSION['id'])."', '".mysql_real_escape_string($comment)."', '".$posted_on."' ");
$sql = mysql_query($query);
if($sql)
{
echo 'Je hebt een reactie geplaatst!<br /><br />';
}
else{
echo 'mysql error';
}
}
else
{
echo 'De Ferbo staff heeft bepaalt dat jij geen reacties meer mag plaatsen.<br>De reden is: <b>'.$reden.' </b> </div> ';
}
}
else{
echo 'mysql error';
}
}
}
else
{
echo'
<form action="" method="post">
<textarea name="comment" maxlength="500"></textarea><br /><br />
<input type="submit" name="post_comment" value="Plaats Reactie" />
</form>
</div>';
}
?>
//zag nog geen session start staan misschien had je dat al ergens eerder gedaaan
session_start();
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
if (!isset($_POST['comment']))
{
echo "U bent vergeten een bericht in te vullen";
}
else
{
$query2 = ("SELECT blocked,blockreden FROM users WHERE id='".mysql_real_escape_string($_SESSION['id'])."'");
$controlle = mysql_query($query2);
if($controlle){
while($row = mysql_fetch_assoc($controlle)){
//variabelen vastzetten
$reden = $row['blockreden']
$blocked = $row['blocked'];
}
//is de user geblokt?
if($blocked == '0'){
$posted_on = date("M j, Y g:i A");
$comment = htmlentities(strip_tags ($_POST['comment']));
$query =("INSERT INTO site_news_comments (article, userid, comment, posted_on) VALUES ('".mysql_real_escape_string($news_article_id)."', '".mysql_real_escape_string($_SESSION['id'])."', '".mysql_real_escape_string($comment)."', '".$posted_on."' ");
$sql = mysql_query($query);
if($sql)
{
echo 'Je hebt een reactie geplaatst!<br /><br />';
}
else{
echo 'mysql error';
}
}
else
{
echo 'De Ferbo staff heeft bepaalt dat jij geen reacties meer mag plaatsen.<br>De reden is: <b>'.$reden.' </b> </div> ';
}
}
else{
echo 'mysql error';
}
}
}
else
{
echo'
<form action="" method="post">
<textarea name="comment" maxlength="500"></textarea><br /><br />
<input type="submit" name="post_comment" value="Plaats Reactie" />
</form>
</div>';
}
?>
ik heb een aantal puntjes aangepast, de rest van Karl's punten moet je zelf even verbeteren
Gewijzigd op 25/03/2011 15:13:02 door gerhard l
topic hebt geef ik nog maar weer eens antwoord:
- Zie trim.
- Zie wat elke functie (zoals mysql_query) teruggeeft en bouw daarmee een nette foutafhandeling.
- Als je toch al de assoc manier van fetch_array gebruikt, gebruik dan gewoon mysql_fetch_assoc.
- Zie if.
- Zie mysql date and time functions.
- Haal pas functies als htmlentities over je data heen als je het uit de database haalt.
- 'or die' is geen foutafhandeling.
- Toon nooit de php / sql fout aan de gebruiker.
Ondanks dat je al een - Zie trim.
- Zie wat elke functie (zoals mysql_query) teruggeeft en bouw daarmee een nette foutafhandeling.
- Als je toch al de assoc manier van fetch_array gebruikt, gebruik dan gewoon mysql_fetch_assoc.
- Zie if.
- Zie mysql date and time functions.
- Haal pas functies als htmlentities over je data heen als je het uit de database haalt.
- 'or die' is geen foutafhandeling.
- Toon nooit de php / sql fout aan de gebruiker.
Ook als ik niks invul
mysql_error() lijkt me een handige functie.
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
$query =("INSERT INTO site_news_comments (article, userid, comment, posted_on) VALUES ('".$news_article_id."', '".$_SESSION['id']."', '".$comment."', '".$posted_on."' ");
$sql = mysql_query($query);
if($sql)
{
echo 'Je hebt een reactie geplaatst!<br /><br />';
}
else{
echo 'Mysql error?';
?>
$query =("INSERT INTO site_news_comments (article, userid, comment, posted_on) VALUES ('".$news_article_id."', '".$_SESSION['id']."', '".$comment."', '".$posted_on."' ");
$sql = mysql_query($query);
if($sql)
{
echo 'Je hebt een reactie geplaatst!<br /><br />';
}
else{
echo 'Mysql error?';
?>
Wat is hier fout dan?
Toevoeging op 25/03/2011 16:11:55:
??
Gewijzigd op 25/03/2011 15:39:45 door Henke van der bunt
vandaar gebruik je mysql_error()
Ook is er mysql injectie mogelijk
Jordi kroon op 25/03/2011 20:33:58:
(...)
Ook is er mysql injectie mogelijk
Ook is er mysql injectie mogelijk
Waar dan?
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
$sql = "
INSERT INTO site_news_comments
(
article,
userid,
comment,
posted_on
)
VALUES
(
'" . mysql_real_escape_string ($news_article_id) . "',
'" . mysql_real_escape_string ($_SESSION['id']) . "',
'" . mysql_real_escape_string ($comment) . "',
'" . mysql_real_escape_string ($posted_on) . "'
)
";
if (mysql_query ($sql)) {
echo '<p>Reactie geplaatst.</p>';
}
else {
echo '<p>' . mysql_error () . '</p>';
}
?>
$sql = "
INSERT INTO site_news_comments
(
article,
userid,
comment,
posted_on
)
VALUES
(
'" . mysql_real_escape_string ($news_article_id) . "',
'" . mysql_real_escape_string ($_SESSION['id']) . "',
'" . mysql_real_escape_string ($comment) . "',
'" . mysql_real_escape_string ($posted_on) . "'
)
";
if (mysql_query ($sql)) {
echo '<p>Reactie geplaatst.</p>';
}
else {
echo '<p>' . mysql_error () . '</p>';
}
?>
Dit bedoelde ik :)
Code (php)
1
2
3
4
5
2
3
4
5
<?php
$query =("INSERT INTO site_news_comments (article, userid, comment, posted_on) VALUES ('".$news_article_id."', '".$_SESSION['id']."', '".$comment."', '".$posted_on."' ");
$sql = mysql_query($query);
?>
$query =("INSERT INTO site_news_comments (article, userid, comment, posted_on) VALUES ('".$news_article_id."', '".$_SESSION['id']."', '".$comment."', '".$posted_on."' ");
$sql = mysql_query($query);
?>
Jordi kroon op 25/03/2011 23:03:43:
@ Karl
Dit bedoelde ik :)
Dit bedoelde ik :)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
$query =("INSERT INTO site_news_comments (article, userid, comment, posted_on) VALUES ('".$news_article_id."', '".$_SESSION['id']."', '".$comment."', '".$posted_on."' ");
$sql = mysql_query($query);
?>
[/quote]
Ja, maar jij weet niet waar die variabelen vandaan komen, ze hoeven dus niet per se onveilig te zijn. In theorie horen ze veilig te zijn omdat ze niet meer in $_POST zitten.
Session variabelen zijn in principe veilig omdat die op de server worden geset en beheerd.
$query =("INSERT INTO site_news_comments (article, userid, comment, posted_on) VALUES ('".$news_article_id."', '".$_SESSION['id']."', '".$comment."', '".$posted_on."' ");
$sql = mysql_query($query);
?>
[/quote]
Ja, maar jij weet niet waar die variabelen vandaan komen, ze hoeven dus niet per se onveilig te zijn. In theorie horen ze veilig te zijn omdat ze niet meer in $_POST zitten.
Session variabelen zijn in principe veilig omdat die op de server worden geset en beheerd.
Jan Koehoorn op 25/03/2011 22:29:23:
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
$sql = "
INSERT INTO site_news_comments
(
article,
userid,
comment,
posted_on
)
VALUES
(
'" . mysql_real_escape_string ($news_article_id) . "',
'" . mysql_real_escape_string ($_SESSION['id']) . "',
'" . mysql_real_escape_string ($comment) . "',
'" . mysql_real_escape_string ($posted_on) . "'
)
";
if (mysql_query ($sql)) {
echo '<p>Reactie geplaatst.</p>';
}
else {
echo '<p>' . mysql_error () . '</p>';
}
?>
$sql = "
INSERT INTO site_news_comments
(
article,
userid,
comment,
posted_on
)
VALUES
(
'" . mysql_real_escape_string ($news_article_id) . "',
'" . mysql_real_escape_string ($_SESSION['id']) . "',
'" . mysql_real_escape_string ($comment) . "',
'" . mysql_real_escape_string ($posted_on) . "'
)
";
if (mysql_query ($sql)) {
echo '<p>Reactie geplaatst.</p>';
}
else {
echo '<p>' . mysql_error () . '</p>';
}
?>
Kijk, dit werkt wel.
Nu heb ik nog 1 probleempje, wanneer er niks ingevuld wordt wordt hij toch geplaatst.
dan moet je eerst met behulp van php kijken of alles is ingevuld. ;)
Toevoeging op 26/03/2011 11:10:52:
Gerhard l op 25/03/2011 15:06:08:
;)
Als het formulier verzonden is, zal $_POST['comment'] altijd bestaan. Isset () is dus geen goede check. Je kunt beter met empty () controleren.