Op mijn site twee resultaten met gastenboek...

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Dennis  van DUin

Dennis van DUin

02/04/2015 21:02:09
Quote Anchor link
Beste mensen,

Ik probeer een gastenboek te maken aan de hand van deze tutorail: http://www.html-site.nl/forum/topic/php-gastenboek-met-mysql-captcha-ubb-codes Nu werkt het op mijn test site waar ik hem op heb gemaakt perfect, ik krijg de berichtjes goed te zien en ze staan goed in de database! Tot dan toe eigenlijk niks aan de hand!

Nu maak ik op mijn .nl site van yourhosting een pagina aan die ik gastenboek noem. De codes zijn precies hetzelfde... maar hier wordt de tekst veranderd in tekens en letters: (Hieronder gekopieerd;

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
dvdtv
2015-04-02 20:57:52
D11i>b>]Denn1b]


dvdtv
2015-04-02 20:47:44
Ho1b>> <1> Waarom he1er11t ineen1 dan dat zou moeten?


dvdtv
2015-04-02 20:47:09
D11i>chtje!


In de database staat de tekst wel goed geschreven.... kan iemand in de code zien hoe het komt dat het op de ene site wel werkt en op de andere niet? Beide tests zijn uitgevoerd in chrome!

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
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
<?php
   session_start();
   include_once "config.php";
?>


<title>Gastenboek</title>
  <link href="/css/stylegastenboek.css" type="text/css" rel="stylesheet" />
  <script type="text/javascript" language="javascript">
    function showHide(shID) {
    if (document.getElementById(shID)) {
      if (document.getElementById(shID+'-show').style.display != 'none') {
        document.getElementById(shID+'-show').style.display = 'none';
        document.getElementById(shID).style.display = 'block';
      }
      else {
        document.getElementById(shID+'-show').style.display = 'inline';
        document.getElementById(shID).style.display = 'none';
        }
      }
    }
  </script>
  <script type="text/javascript">
    function reloadImg(id) {
      var obj = document.getElementById(id);
      var src = obj.src;
      var pos = src.indexOf('?');
    if (pos >= 0) {
      src = src.substr(0, pos);
    }
      var date = new Date();
      obj.src = src + '?v=' + date.getTime();
    return false;
    }
  </script>
  
  <?php
  // Gegevens ophalen uit de database en sorteren op id
  $sql = mysql_query("SELECT * FROM gastenboek ORDER BY datum DESC");
  if (mysql_num_rows($sql) == 0) {
    // Als er nog geen reacties geplaatst zijn:
    echo 'Er zijn nog geen reacties geplaatst, plaats als eerste een reactie.';
  }
else {
    while($data = mysql_fetch_assoc($sql)) {
      // Als er wel reacties zijn geplaatst worden deze nu weergegeven:
  echo'<div class="bericht">
        <div class="info">
          <img src="avatar.jpg" alt="" /><br />
          '
.htmlspecialchars(stripslashes($data['naam'])).'<br />
          '
.htmlspecialchars(stripslashes($data['datum'])).'<br />
        </div>
        <div class="image">
          <img src="comment.png" alt="" />
        </div>
        <div class="tekst">
          '
.ubb($data['bericht']).'<br /><br />
        </div>
      </div>
  '
;    
    }
  }

?>


<div id="reactie">
    <h3>Reactie plaatsen</h3><br />
<?php
                  // Foutmeldingen + reactie plaatsen:
                if ($_SERVER['REQUEST_METHOD'] == 'POST') {
                    // Als er een veld niet ingevuld is
                    if (empty($_POST['naam']) || empty($_POST['security_code']) || empty($_POST['bericht']) || empty($_POST['email'])) {
                        echo '<div class="fout">Niet alle  velden zijn ingevuld.</div><br />';
                  }
else {
                    if($_SESSION['security_code'] != $_POST['security_code']){
                      $code = $_SESSION['security_code'];
                      $mycode= $_POST['security_code'];
                      echo '<div class="fout">De code die je overtypte was incorrect.</div>';
                      unset($_SESSION['security_code']);
                    }
else {
                      if(($_SESSION['security_code'] == $_POST['security_code']) && (!empty($_SESSION['security_code'])) && (mysql_query("INSERT INTO gastenboek (naam, email, bericht, datum, ip) VALUES ('".trim(mysql_real_escape_string($_POST['naam']))."', '".trim(mysql_real_escape_string($_POST['email']))."', '".trim(mysql_real_escape_string($_POST['bericht']))."', NOW(), '".mysql_real_escape_string($_SERVER['REMOTE_ADDR'])."')")) ) {
                        $code = $_SESSION['security_code'];
                          $mycode= $_POST['security_code'];
                        echo '<div id="succesvolgeplaatst">Je reactie is succesvol geplaatst! <a href="'. $_SERVER["PHP_SELF"] .'">Bekijk je reactie</a></div><br />';
                        unset($_SESSION['security_code']);
                      }
else {
                      
                      }
                    }
                  }
                }

                ?>

<br />
        <form method="post" action="" name="form1">
            Naam:*<br />
            <input type="text" name="naam" maxlength="50" /><br /><br />

            Emailadres (niet gepubliceerd):*<br />
            <input type="text" name="email" maxlength="50" type="email" /><br /><br />

            Code overtypen:*<br />
            <img src="captcha.php" name="vertimg" id="vertimg"><br />
                <div id="newafb">
                    <a href="#" onclick="refreshimage()">Nieuwe afbeelding</a>
                </div><br />
            <input type="text" name="security_code"  /><br /><br />
    
            Bericht:*<br />
            <textarea name="bericht" id="tekst" rows="6" cols="37" maxlength="500"></textarea><br />
            UBB-codes zijn toegestaan
            <a href="#" id="example-show" class="showLink" onclick="showHide('example');return false;">
            <div class="what">Wat is dit?</div></a>
                <div id="example" class="show-hide">
                    <br />
                    Met UBB-codes kan je de volgende dingen doen:<br /><br />
                    [b]tekst[/b]  &raquo; <b>tekst</b><br />
                    [u]tekst[/u]  &raquo; <u>tekst</u><br />
                    [i]tekst[/i]  &raquo; <i>tekst</i><br />
                    [s]tekst[/s]  &raquo; <s>tekst</s><br /><br />
                <a href="#" id="example-hide" class="hideLink" onclick="showHide('example');return false;">(Verbergen)</a>
                </div>
            
        <br/><br/>
        <input type="submit" value="Reactie toevoegen" onclick="this.value='Reactie wordt geplaatst...';" />
        </form>
</div>


Alvast heel erg bedankt voor de gene die mij hiermee kan helpen? Want ik heb gekeken, gezocht maar kon niet vinden waarom ik twee resultaten kreeg bij twee hosts.

Groeten,
Dennis
 
PHP hulp

PHP hulp

20/04/2024 00:32:47
 
- Ariën  -
Beheerder

- Ariën -

02/04/2015 21:06:53
Quote Anchor link
Ziet er vreemd uit, misschien iets met karakter-encoding, maar dan zou ik toch eerder andere karakters verwachten.

Heb je een voorbeeld van de pagina met de foute tekens, en desnoods een testmogelijkheid?
 
Frank Nietbelangrijk

Frank Nietbelangrijk

02/04/2015 21:20:53
Quote Anchor link
En een live voorbeeld?
 
Dennis  van DUin

Dennis van DUin

02/04/2015 21:26:12
Quote Anchor link
Fout: (let niet op de rest van de site ben ik mee bezig om het een stuk beter te scripten nu ik steeds meer snap)
http://haastrechtloop.nl/guestbook.php

Goed;
http://dvdtv.altervista.org/gastenboek.php

Codes zijn hetzelfde! Ik snap het dus ook niet...
Gewijzigd op 02/04/2015 21:26:52 door Dennis van DUin
 
- Ariën  -
Beheerder

- Ariën -

02/04/2015 21:36:26
Quote Anchor link
Ik dnek dat ik het weet. het heeft te maken dat je gastenboek geen UTF-8 encoding heeft (je hele doctype en body mist overigens), waardoor je in de PHP versies van 5.4 en 5.5 bij gebruik van speciale karakters (zoals ëáíù etc..) een lege string krijgt.

Stap over op UTF-8 of forceer htmlspecialchars door ISO-8859-1 te gebruiken.

Gebruik dus: htmlspecialchars($val, ENT_QUOTES,'ISO-8859-1',false);
Densoods kan je het in een nieuwe functie verpakken voor de makkelijkheid.
Gewijzigd op 02/04/2015 21:37:17 door - Ariën -
 
Dennis  van DUin

Dennis van DUin

02/04/2015 21:38:03
Quote Anchor link
Ohhh kan het daarom wel op de ene host werken en de andere niet?

Ik ga er even mee aan slag ;)
 
- Ariën  -
Beheerder

- Ariën -

02/04/2015 21:39:22
Quote Anchor link
Ja, ik snap ook niet waarom de PHP-developers hiervoor gekozen hebben. In PHP 5.6 is de characterset aanpasbaar in met ini_set of php.ini.
 
Ivo P

Ivo P

02/04/2015 21:42:01
Quote Anchor link
stripslashes()

als er slashes in je database staan, dan heb je bij het opslaan een probleem.

bij het echo-en zou je die stripslashes() niet nodig moeten hebben. (die functie zou je sowieso nooit nodig moeten hebben)

Hooguit als jouw server een oeroude magic-quotes setting aan heeft staan.
http://wiki.pfz.nl/magicquotes
 
Dennis  van DUin

Dennis van DUin

02/04/2015 21:42:09
Quote Anchor link
Ik heb me code nu aangepast me de URF-8 erbij. Deze had ik op elke pagina wel staan maar niet op het gastenboek::

code is nu: ( ik hou hetzelfde probleem... Hoe kan ik jou regel goed invoegen?)
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
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
<?php
   session_start();
   include_once "config1.php";
?>

<html>

<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="/CSS/stylegastenboek.css" type="text/css" rel="stylesheet" />

</head>

<body>
<title>Gastenboek</title>
  <script type="text/javascript" language="javascript">
    function showHide(shID) {
    if (document.getElementById(shID)) {
      if (document.getElementById(shID+'-show').style.display != 'none') {
        document.getElementById(shID+'-show').style.display = 'none';
        document.getElementById(shID).style.display = 'block';
      }
      else {
        document.getElementById(shID+'-show').style.display = 'inline';
        document.getElementById(shID).style.display = 'none';
        }
      }
    }
  </script>
  <script type="text/javascript">
    function reloadImg(id) {
      var obj = document.getElementById(id);
      var src = obj.src;
      var pos = src.indexOf('?');
    if (pos >= 0) {
      src = src.substr(0, pos);
    }
      var date = new Date();
      obj.src = src + '?v=' + date.getTime();
    return false;
    }
  </script>
  
  <?php
  // Gegevens ophalen uit de database en sorteren op id
  $sql = mysql_query("SELECT * FROM gastenboek ORDER BY datum DESC");
  if (mysql_num_rows($sql) == 0) {
    // Als er nog geen reacties geplaatst zijn:
    echo 'Er zijn nog geen reacties geplaatst, plaats als eerste een reactie.';
  }
else {
    while($data = mysql_fetch_assoc($sql)) {
      // Als er wel reacties zijn geplaatst worden deze nu weergegeven:
  echo'<div class="bericht">
        <div class="info">
          <img src="img/avatar.jpg" alt="" /><br />
         '
.htmlspecialchars(stripslashes($data['naam'])).'<br />
          '
.htmlspecialchars(stripslashes($data['datum'])).'<br />
        </div>
        <div class="image">
          <img src="img/comment.png" alt="" />
        </div>
        <div class="tekst">
          '
.ubb($data['bericht']).'<br /><br />
        </div>
      </div>
  '
;    
    }
  }

?>


<div id="reactie">
    <h3>Reactie plaatsen</h3><br />
<?php
                  // Foutmeldingen + reactie plaatsen:
                if ($_SERVER['REQUEST_METHOD'] == 'POST') {
                    // Als er een veld niet ingevuld is
                    if (empty($_POST['naam']) || empty($_POST['security_code']) || empty($_POST['bericht']) || empty($_POST['email'])) {
                        echo '<div class="fout">Niet alle  velden zijn ingevuld.</div><br />';
                  }
else {
                    if($_SESSION['security_code'] != $_POST['security_code']){
                      $code = $_SESSION['security_code'];
                      $mycode= $_POST['security_code'];
                      echo '<div class="fout">De code die je overtypte was incorrect.</div>';
                      unset($_SESSION['security_code']);
                    }
else {
                      if(($_SESSION['security_code'] == $_POST['security_code']) && (!empty($_SESSION['security_code'])) && (mysql_query("INSERT INTO gastenboek (naam, email, bericht, datum, ip) VALUES ('".trim(mysql_real_escape_string($_POST['naam']))."', '".trim(mysql_real_escape_string($_POST['email']))."', '".trim(mysql_real_escape_string($_POST['bericht']))."', NOW(), '".mysql_real_escape_string($_SERVER['REMOTE_ADDR'])."')")) ) {
                        $code = $_SESSION['security_code'];
                          $mycode= $_POST['security_code'];
                        echo '<div id="succesvolgeplaatst">Je reactie is succesvol geplaatst! <a href="'. $_SERVER["PHP_SELF"] .'">Bekijk je reactie</a></div><br />';
                        unset($_SESSION['security_code']);
                      }
else {
                      
                      }
                    }
                  }
                }

                ?>

<br />
        <form method="post" action="" name="form1">
            Naam:*<br />
            <input type="text" name="naam" maxlength="50" /><br /><br />

            Emailadres (niet gepubliceerd):*<br />
            <input type="text" name="email" maxlength="50" type="email" /><br /><br />

            Code overtypen:*<br />
            <img src="captcha.php" name="vertimg" id="vertimg"><br />
                <div id="newafb">
                    <a href="#" onclick="refreshimage()">Nieuwe afbeelding</a>
                </div><br />
            <input type="text" name="security_code"  /><br /><br />
    
            Bericht:*<br />
            <textarea name="bericht" id="tekst" rows="6" cols="37" maxlength="500"></textarea><br />
            UBB-codes zijn toegestaan
            <a href="#" id="example-show" class="showLink" onclick="showHide('example');return false;">
            <div class="what">Wat is dit?</div></a>
                <div id="example" class="show-hide">
                    <br />
                    Met UBB-codes kan je de volgende dingen doen:<br /><br />
                    [b]tekst[/b]  &raquo; <b>tekst</b><br />
                    [u]tekst[/u]  &raquo; <u>tekst</u><br />
                    [i]tekst[/i]  &raquo; <i>tekst</i><br />
                    [s]tekst[/s]  &raquo; <s>tekst</s><br /><br />
                <a href="#" id="example-hide" class="hideLink" onclick="showHide('example');return false;">(Verbergen)</a>
                </div>
            
        <br/><br/>
        <input type="submit" value="Reactie toevoegen" onclick="this.value='Reactie wordt geplaatst...';" />
        </form>
</div>

</body>
</html>
 
Ivo P

Ivo P

02/04/2015 21:43:21
Quote Anchor link
heeft de funtie htmlspecialchars() niet een 2e parameter voor de tekenset?
 
Dennis  van DUin

Dennis van DUin

02/04/2015 21:44:34
Quote Anchor link
Ivo P op 02/04/2015 21:42:01:
stripslashes()

als er slashes in je database staan, dan heb je bij het opslaan een probleem.

bij het echo-en zou je die stripslashes() niet nodig moeten hebben. (die functie zou je sowieso nooit nodig moeten hebben)

Hooguit als jouw server een oeroude magic-quotes setting aan heeft staan.
http://wiki.pfz.nl/magicquotes



Wat bedoel je hiermee? Ik heb hier specifiek nog nooit echt mee gewerkt... Ik probeer de example in te voegen en deze later aan te passen. Want ik leer heel veel van het invoegen van iets en dan ermee gaan spelen...

En van alles goede antwoorden die ik hier krijg in hulp!
 
Ivo P

Ivo P

02/04/2015 21:44:34
Quote Anchor link
volgens mij mis je ook nog een http-header waarin je aangeeft dat het unicode is.

Toevoeging op 02/04/2015 21:46:18:

stripslashes() stript zo gezegd slashes uit je tekst.

"foto\'s" wordt dan "foto's"

Alleen: waarom zou er in jouw database "foto\'s" staan???
 
Dennis  van DUin

Dennis van DUin

02/04/2015 21:49:22
Quote Anchor link
Dat staat er ook niet... In de databse staat bijvoorbeeld:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
Hoi allemaal,

Waarom heb ik nu ineens zon vreemd berichtje en is de tekst ineens anders dan dat zou moeten?


En dat wordt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
Ho1b>> <1> Waarom he1er11t ineen1 dan dat zou moeten?


Dat en op de altervista site waar ik het teste werkte het wel...


Toevoeging op 02/04/2015 22:18:54:

Ik heb nu een ander example gebruikt! Deze werkt ook leuk en valt weer heel veel van te leren!
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.