' en " errors

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Wim Selles

Wim Selles

11/08/2008 12:10:00
Quote Anchor link
Beste allemaal,

Ik ben net een beetje bezig met php en heb het, naar mijn idee, voor een beginner aardig onder de knie :).

Voor mijn werk heb ik een formulier aangemaakt om nieuwsberichten aan te vragen. Hierin zijn 5 velden te vinden, te weten:

Naam
Koptekst (van het bericht)
Intro
Artikel
Commentaar

De laatste 3 velden zijn RTE velden dmv NicEdit.
Nu loop ik tegen het volgende probleem aan. Als iemand een 'of een " invult in de velden levert dit niet echt een zichtbare error op voor de persoon die het invult, maar ik krijg maar een half bericht binnen via de mail.

(excuus voor het gebruik van ' en " door elkaar, beginner he ;-))

Hieronder staat de code.

Ik hoop dat jullie mij kunnen helpen.

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
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
<script src="http://js.nicedit.com/nicEdit-latest.js" type="text/javascript"></script>
<script type="text/javascript">bkLib.onDomLoaded(function()
{
    new nicEditor({buttonList : ['bold','italic','underline','ol','ul']}).panelInstance('intro','artikel','commentaar');
    new nicEditor({buttonList : ['bold','italic','underline','ol','ul']}).panelInstance('artikel');
    new nicEditor({buttonList : ['bold','italic','underline','ol','ul']}).panelInstance('commentaar');
});
</script>
<script type="text/javascript">

function checkData()

{
var correct = true
var msg ='';
if (document.Sample.mail.value == "") {correct = false; msg+="U bent vergeten uw naam in te vullen!\n";}
if (document.Sample.koptekst.value == "") {correct = false; msg+="U bent vergeten het veld koptekst in te vullen!\n";}

    if ( !correct ) alert(msg);
    return correct;}


</script>

<STYLE TYPE="text/css">
<!--
P { text-transform: uppercase; }
-->
</STYLE>                        
<?php
// HET STARTEN VAN EEN SESSIE OM GEGEVENS TE VERZAMELEN
//session_start ();

//ARRAYS GEDEFINIEERD

$naam=$_POST["mail"];
$koptekst=$_POST["koptekst"];
$intro=$_POST["intro"];
$mail=$_POST[mail];
$artikel=$_POST["artikel"];
$submit=$_POST["submit"];
$commentaar=$_POST["commentaar"];
$verplicht=array("mail", "koptekst", "intro", "artikel");
$sendmail=$_POST["mailversturen"];
$send_mailform=$_POST['send_mailform'];
$terug=$_POST['Terug'];

//DE VERSIE
$versie="0.92";

// IS DE SUBMIT- EN DE SEND_MAILFORM-KNOP GELIJK AAN 0 OF NOG NIET GEKLIKT    
if(empty($submit) and empty($send_mailform))
{

    //TOON HET VOLGENDE:
?>


        <form action="<?php echo $_SERVER[PHP_SELF];?>" name="Sample" method="post" onsubmit="return checkData()">
        <br /><br />
        <table>
            <tr>
                <td width="300px"><b>Naam aanvrager:*</b></td>
                <td><input type="text" id="naam" style="font-family:Verdana, Arial, Helvetica;font-size:11px" name="mail" size="52" /></td>
                <td>
                </td>    
            </tr>
            <tr>
                <td height="5"></td>
            </tr>    
            <tr>
                <td valign="top"><b>Koptekst:*</b><br />
                <i>Plaats hier de titel van het bericht</i></td>
                <td valign="top"><input type="text" id="koptekst" style="font-family:Verdana, Arial, Helvetica;font-size:11px" name="koptekst" size="52" /></td>
                <td>
                </td>    
            </tr>
            <tr>
                <td height="10"></td>
            </tr>    
            <tr>
                <td valign="top"><b>Intro:</b><br />
                <i>Maximaal 2 regels pakkende tekst</i></td>
                <td><textarea id="intro" name="intro" rows="4" cols="50" style="font-family:Verdana, Arial, Helvetica;font-size:11px;color:#999999"></textarea></td>
                <td>
                </td>    
            </tr>
            <tr>
                <td height="5"></td>
            </tr>    
            <tr>
                <td valign="top"><b>Het artikel:</b><br />
                </td>
                <td><textarea id="artikel" name="artikel" rows="8" cols="50" style="font-family:Verdana, Arial, Helvetica;font-size:11px;color:#999999"></textarea></td>
                <td>
                </td>    
            </tr>
            <tr>
                <td height="5"></td>
            </tr>    
            <tr>
                <td valign="top"><b>Commentaar:</b><br />
                <i>Geef hier bijvoorbeeld aan wanneer het bericht <br />geplaatst dient te worden</i></td>
                <td><textarea id="commentaar" name="commentaar" rows="4" cols="50" style="font-family:Verdana, Arial, Helvetica;font-size:11px;color:#999999"></textarea></td>
            </tr>        
        </table><br />
         <strong>Velden met een * zijn verplichte velden</strong><br />
        <input type="reset" style="font-family:Verdana, Arial, Helvetica;font-size:11px;font-weight:bold" name="reset" onclick="window.location.reload()" value="Alles wissen">         
        <input type="submit" style="font-family:Verdana, Arial, Helvetica;font-size:11px;font-weight:bold" name="submit" value="Controleren en versturen"></form>

<?php
    
    echo "    Versie $versie\n";    

}
//EINDE if(empty($submit) and empty($send_mailform))

//ALS ER OP DE SUBMIT-KNOP GEDRUKT IS

else
{     

    if(isset($submit) && $naam=="")
    {

        echo "<font style=\"color:#FF0000;font-weight:bold\">Het veld naam is niet gevuld</font><br />\n";
    }

    if (isset($submit) && $koptekst=="")
    {

        echo "<font style=\"color:#FF0000;font-weight:bold\">Het veld koptekst is niet gevuld</font><br />\n";
    }

}
//EINE else REGEL 86

    
//ALS ALLE VERPLICHTE VELDEN ZIJN INGEVULD EN DE SEND_MAILFORM-KNOP NOG NIET IS INGEDRUKT

if(isset($submit) and empty($send_mailform) && $naam!="" && $koptekst!="")
{

    //TOON DE VOLGENDE WAARDEN IN HET SCHERM
    echo "    <h3>Controle: </h3>\n";
    echo "    Controleer uw onderstaande bericht. Indien correct, klik op <b>\"Ja\"</b>.<br />\n";
    echo "    Indien niet correct, klik op <b>\"Nee\"</b>.<br /><br />\n";
    echo "    <table bgcolor=\"#CCCCCC\" border=\"0\">\n";
    echo "        <tr>\n";
    echo "            <td width=\"700px\">\n";
    echo "            <i><strong><p>" . stripslashes(nl2br($koptekst)) . "</p></strong></i><br /><br />\n";
    echo "            <i>" . stripslashes(nl2br($intro)) . "</i><br /><br />\n";
    echo "            <i>" . stripslashes(nl2br($artikel)) . "</i>\n";
    echo "            </td>\n";
    echo "        </tr>\n";
    echo "    </table><br />\n";
    echo "    Uw commentaar was:<br />\n";
    echo "    <table bgcolor=\"#CCCCCC\" border=\"0\">\n";
    echo "        <tr>\n";
    echo "            <td width=\"700px\">\n";
    echo "            <i>" . stripslashes(nl2br($commentaar)) . "</i>\n";
    echo "            </td>\n";
    echo "        </tr>\n";
    echo "    </table><br />\n";                        
    echo "    Is het bericht correct?<br /><br />\n";
    echo "    <form action=\"$_SERVER[PHP_SELF]\" method=\"post\">\n";
    echo "  <input type=\"hidden\" name=\"send_mailform\" value=\"1\">\n";
    echo "    <input type=\"hidden\" name=\"mail\" value='$naam'>\n";
    echo "    <input type=\"hidden\" name=\"koptekst\" value='$koptekst'>\n";    
    echo "    <input type=\"hidden\" name=\"intro\" value='$intro'>\n";    
    echo "    <input type=\"hidden\" name=\"artikel\" value='$artikel'>\n";    
    echo "    <input type=\"hidden\" name=\"commentaar\" value='$commentaar'>\n";    
    echo "    <input type=\"hidden\" name=\"message\" value='$message'>\n";
    echo "    <!-- DE TERUGKNOP ONDER AAN DE PAGINA MET JAVASCRIPT GEHEUGEN-->\n";                        
    echo "    <input type=\"button\" style=\"font-family:Verdana, Arial, Helvetica;font-size:11px;font-weight:bold\" value=\"Nee\" onclick=\"javascript:history.back()\">\n";
    echo "    <!-- WANNEER JAVASCRIPT UIT STAAT -->\n";                            
    echo "    <noscript>Gebruik de terug toets in je browser om naar de vorige pagina terug te keren !</noscript>\n";                        
    echo "    <input type=\"submit\" style=\"font-family:Verdana, Arial, Helvetica;font-size:11px;font-weight:bold;\" name=\"mailversturen\" value=\"Ja, en versturen\"></form>\n";

    }
//EINDE if(($correct) and empty($send_mailform))
    
//ALS ER GEDRUKT IS OP DE KNOP SENDMAIL, DOE DAN HET VOLGENDE

if(isset($sendmail))
{

    // ONDERWERP
    $subject=$koptekst;
    
    //DE PERSOON WAAR DE MAIL NAARTOE GESTUURD WORDT
    $to  = '[email protected]';
    
    // OM MAIL TE VERZENDEN WORDEN HIERONDER DE CONTENT-TYPE HEADERS GESPECIFICEERD
    $headers  = 'MIME-Version: 1.0' . "\r\n";
    $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
    $headers .= 'From:' . $naam . "\r\n";
    $headers .= 'Subject:' . $subject . "\r\n";

    //HET BERICHT WAT VERSTUURD WORDT IN HTML, DIT WORDT MEEGENOMEN DOOR DE MAIL.PHP
    $message ="
            Dit bericht is afkomstig van: "
.$naam. ".<br />
            <br />
            Dit is de koptekst:<br />
            <p style=\"text-transform: uppercase\">"
. stripslashes(nl2br($koptekst)) . "</p><br />
            <br />
            Dit is de intro:<br />
            <i>"
. stripslashes(nl2br($intro)) . "</i><br />
            <br />
            Dit is het artikel:<br />
            <i>"
. stripslashes(nl2br($artikel)) . "</i><br />
            <br />
            Het commentaar, indien ingevuld was:<br />
            <i>"
. stripslashes(nl2br($commentaar)) . "</i><br />
    "
;        
    
    //ALS DE NAAM BEKEND EN NIET LEEG IS
    if (isset($naam) && $naam != "")
    {

        //ALS HET MAILADRES, DE TITEL, HET BERICHT EN DE AFZENDER BEKEND ZIJN
        if(mail($to, $subject, $message, $headers))
        {

            //TOON "BESTE $NAAM, UW BERICHT IS ZOJUIST VERSTUURD NAAR DE CONTENTMANAGER"
            echo "    <br />\n <br />\n <br />\n";
            echo "    <strong>Beste ".$naam.", uw bericht is zojuist verstuurd naar de contentmanagers. <br />\n";
            echo "    U krijgt bericht van ons wanneer het bericht is geplaatst.</strong><br /><br /><br />\n";
        }

        
        //ALS DEZE NIET BEKEND ZIJN EN OF ER GEEN VERBINDING GEMAAKT KAN WORDEN
        else
        {
            //TOON HET BERICHT: "BESTE $NAAM, SORRY UW BERICHT KON NIET WORDEN VERZONDEN. PROBEER HET NOGMAALS"
            echo "    <h3>Beste ".$naam.",<br /> sorry uw bericht kon niet worden verzonden. Probeer het nogmaals</h3>";
        }
    }
}
//EINDE elseif(isset($sendmail))
?>
Gewijzigd op 01/01/1970 01:00:00 door Wim Selles
 
PHP hulp

PHP hulp

25/11/2024 04:47:46
 
Jacco Engel

Jacco Engel

11/08/2008 12:16:00
Quote Anchor link
Quote:
(excuus voor het gebruik van ' en " door elkaar, beginner he ;-))


Ik ben net een beetje bezig met php en heb het, naar mijn idee, voor een beginner aardig onder de knie :).


Nee dus :)

Kijk verder eens naar addslashes
 
Wim Selles

Wim Selles

11/08/2008 12:19:00
Quote Anchor link
Bedankt voor je reactie,

Ik heb dit al geprobeerd, maar dat werkte ook niet.

Waar moet ik ze volgens jou plaatsen dan?

En dan krijg ik ze zeker ook in mijn email
 
Rotu

Rotu

11/08/2008 14:46:00
Quote Anchor link
Omdat je de mail als HTML code verstuurd moeten de " omgezet worden naar &quot;, er zijn ook nog wat andere karakters die moeten worden omgezet.
Probeer het eens m.b.v. de phpfuntie htmlentities(), je zou dan iets moeten maken in de trend van

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
<?php

$message
="
            Dit bericht is afkomstig van: "
.htmlentities($naam). ".<br />
            <br />
            Dit is de koptekst:<br />
            <p style=\"text-transform: uppercase\">"
. nl2br(htmlentities($koptekst)) . "</p><br />
            <br />
            Dit is de intro:<br />
            <i>"
. nl2br(htmlentities($intro)) . "</i><br />
            <br />
            Dit is het artikel:<br />
            <i>"
.nl2br(htmlentities($artikel)) . "</i><br />
            <br />
            Het commentaar, indien ingevuld was:<br />
            <i>"
. nl2br(htmlentities($commentaar)) . "</i><br />

?>
Gewijzigd op 01/01/1970 01:00:00 door Rotu
 
Wim Selles

Wim Selles

14/08/2008 19:51:00
Quote Anchor link
Thanxs voor alle hulp.

Ik kon het niet uitstaan dat het niet lukte dus ben er net zolang mee bezig gegaan zodat ik het wel voor elkaar kreeg. De oplossing was als volgt.

1 Ik heb een nieuwe RTE gevonden, TinyMCE, welke vet, cursief en onderstreept niet als een class, maar als <strong>, <em> en <u> weergeeft. Dit gaf mij het voordeel dat de dubbele quotes geen probleem gaven in de code.

Daarnaast heb ik de volgende regels toegevoegd:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
//VERVANG ALLE ' EN " NAAR HTML CODE
$intro = str_replace ("\'", "&#039", $intro);
$intro = str_replace ("\"","&quot;", $intro);
$artikel = str_replace ("\'", "&#039", $artikel);
$artikel = str_replace ("\"","&quot;", $artikel);
$commentaar = str_replace ("\'", "&#039", $commentaar);
$commentaar = str_replace ("\"","&quot;", $commentaar);
?>


en voor de zekerheid, mijn server plaatste af en toe, met het vorige onaangepaste script, extra slashes, de volgende regel:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$message
= str_replace ("\\\\\\","", $message);
?>


Bedankt voor jullie hulp.

Wim
Gewijzigd op 01/01/1970 01:00:00 door Wim Selles
 



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.