Versio

Blokkeer Persoon

Overzicht Reageren

Pagina: 1 2 volgende »

Henke van der bunt

Henke van der bunt

25/03/2011 14:44:29
Quote Anchor link
Hallo,
Ik heb nog steeds een probleem met dit blokkeer script:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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>'
;
}

?>


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
 
PHP hulp

PHP hulp

23/05/2012 23:23:34
Gesponsorde koppelingen:
BHosted Hosting al vanaf € 1,- per maand

Controleer nu gratis jouw domeinnaam:

  
 
Gerhard l

gerhard l

25/03/2011 14:47:22
Quote Anchor link
wil je eerst je titel aanpassen?
 
Henke van der bunt

Henke van der bunt

25/03/2011 14:52:43
Quote Anchor link
kan je me nu helpen ?
 
Gerhard l

gerhard l

25/03/2011 14:53:09
Quote Anchor link
ok nu kijk ik verder, ik zie dat je doet if(!$controlle) de vraag die je hier stelt is:
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
 
Henke van der bunt

Henke van der bunt

25/03/2011 15:01:46
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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>'
;
}

?>


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
 
Jordi kroon
Redacteur

jordi kroon

25/03/2011 15:04:57
Quote Anchor link
kun je de hele foutmelding posten?
 
Gerhard l

gerhard l

25/03/2011 15:06:08
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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>'
;
}

?>



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
 
Karl Karl

Karl Karl

25/03/2011 15:09:20
Quote Anchor link
Ondanks dat je al een 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.
 
Henke van der bunt

Henke van der bunt

25/03/2011 15:18:53
Quote Anchor link
hij zegt nu telkens mysql error.

Ook als ik niks invul
 
- Aar -

- Aar -

25/03/2011 15:26:50
Quote Anchor link
mysql_error() lijkt me een handige functie.
 
Henke van der bunt

Henke van der bunt

25/03/2011 15:37:23
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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?';
?>

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
 
Jordi kroon
Redacteur

jordi kroon

25/03/2011 20:33:58
Quote Anchor link
als mysql error weergeven word dan weet je dat er een fout is maar je weet niet welke

vandaar gebruik je mysql_error()

Ook is er mysql injectie mogelijk
 
Karl Karl

Karl Karl

25/03/2011 20:38:23
Quote Anchor link
Jordi kroon op 25/03/2011 20:33:58:
(...)

Ook is er mysql injectie mogelijk


Waar dan?
 
Jan Koehoorn

Jan Koehoorn

25/03/2011 22:29:23
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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>';
    }

?>
 
Jordi kroon
Redacteur

jordi kroon

25/03/2011 23:03:43
Quote Anchor link
@ Karl

Dit bedoelde ik :)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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);    
              
?>
 
Karl Karl

Karl Karl

25/03/2011 23:14:26
Quote Anchor link
Jordi kroon op 25/03/2011 23:03:43:
@ Karl

Dit bedoelde ik :)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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.
 
Henke van der bunt

Henke van der bunt

26/03/2011 10:56:21
Quote Anchor link
Jan Koehoorn op 25/03/2011 22:29:23:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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>';
    }

?>


Kijk, dit werkt wel.

Nu heb ik nog 1 probleempje, wanneer er niks ingevuld wordt wordt hij toch geplaatst.
 
PHP Jasper

PHP Jasper

26/03/2011 10:59:42
Quote Anchor link
dan moet je eerst met behulp van php kijken of alles is ingevuld. ;)
 
Henke van der bunt

Henke van der bunt

26/03/2011 11:10:14
Quote Anchor link
dat doe ik toch ook !

Toevoeging op 26/03/2011 11:10:52:

Gerhard l op 25/03/2011 15:06:08:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
    if (!isset($_POST['comment']))
    {
        echo "U bent vergeten een bericht in te vullen";
    }
    else
    {


;)
 
Jan Koehoorn

Jan Koehoorn

26/03/2011 13:55:10
Quote Anchor link
Als het formulier verzonden is, zal $_POST['comment'] altijd bestaan. Isset () is dus geen goede check. Je kunt beter met empty () controleren.
 
PHP Jasper

PHP Jasper

26/03/2011 14:07:59
Quote Anchor link
Doe het zo:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
if(strlen($_POST['comment']) < 2)
{

    echo 'u moet minstens 2 tekens invullen';
}

?>
 

Pagina: 1 2 volgende »



Overzicht Reageren

Get Adobe Flash player