[php] textarea slashes probleem

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb een probleem met het opstellen van een nieuwsbrief. Het doel is om data uit een database te halen en te versturen als html mail.

Daartoe heb ik een pagina aangemaakt die de data ophaalt uit de DB en het html gedeelte ($html_part) van de mail opstelt. Op deze pagina echo ik $html_part om te kijken of de inhoud van de nieuwsbrief correct is. Dit gaat allemaal goed.

Om $html_part door te geven aan de pagina die de email opstelt en verstuurt, maak ik een form aan met een textarea waarin $html_part staat. Nu komt het probleem: automatisch komen er voor alle aanhalingtekens backslashes te staan (escape characters). Deze zorgen ervoor dat de html email niet goed wordt weergegeven.

Deze krijg ik met geen mogelijkheid weg. Ik heb al vele topics gelezen waarin mensen een zelfde soort probleem hebben, maar gelijk aan mijn probleem zijn die problemen niet. Ik heb stripslashes() al geprobeerd op allerlei plaatsen, maar kom er niet uit.

Kan iemand mij helpen?

Ik heb er al aan gedacht dat een mogelijke oplossing zou zijn om de email vanuit dezelfde pagina te versturen, maar hoe kan ik ervoor zorgen dat dat pas gebeurt als de inhoud van de nieuwsbrief gecontroleerd is?

[ Voor 3% gewijzigd door Verwijderd op 22-02-2004 12:58 ]


Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Je probleem zit waarschijnlijk in http://www.php.net/get-magic-quotes-gpc en/of http://www.php.net/get-magic-quotes-runtime

Check even de FAQ en de manual hoe je die configuraties aanpast.

Als het daarmee niet lukt ben ik wel benieuwd naar een stukje relevante code.,

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

  • JHS
  • Registratie: Augustus 2003
  • Laatst online: 16-09 16:02

JHS

Splitting the thaum.

Ik heb er al aan gedacht dat een mogelijke oplossing zou zijn om de email vanuit dezelfde pagina te versturen, maar hoe kan ik ervoor zorgen dat dat pas gebeurt als de inhoud van de nieuwsbrief gecontroleerd is?
Je zou 2 functies kunnen bouwen. Een die de email controleert, en 1 die hem verstuurt. als de email gecontroleerd is. (Hoeft overigens niet eens met functies, maar vind ik georganiseerder scripten).

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function chechmail($html_part)
{
   //controleer de mail, als deze niet klopt: $check='1', anders $check='0'
   return $check;
}

checkmail($html_part);
if $check == '1'
{
   sendmail();
}
else
{
   print "<h3>Het HTML deel klopt niet</h3>";
}

[ Voor 19% gewijzigd door JHS op 22-02-2004 13:32 ]

DM!


Acties:
  • 0 Henk 'm!

  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

zoek je dit misschien?
php.net/stripslashes

sorry ik had erover heengelezen

[ Voor 20% gewijzigd door Wolfboy op 22-02-2004 13:35 ]

Blog [Stackoverflow] [LinkedIn]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
idontlikepizza schreef op 22 februari 2004 @ 13:31:
[...]
Je zou 2 functies kunnen bouwen. Een die de email controleert, en 1 die hem verstuurt. als de email gecontroleerd is. (Hoeft overigens niet eens met functies, maar vind ik georganiseerder scripten).
Ik heb inderdaad ook gedacht aan een functie om de mail te versturen. Probleem blijft dat de gebruiker moet controleren of de inhoud van de mail juist is en dat dat niet uitbesteed kan worden aan een functie.
Wellicht zou ik wel met javascript een functie kunnen aanroepen als de gebruiker op een button drukt? Mijn kennis van javascript is echter nogal beperkt...
Uitgangspunt is dus dat de gebruiker de inhoud van de automatisch gegenereerde mail controleert en dat hij dan een fiat kan geven om de mail ook daadwerkelijk te versturen.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb het nu zo aangepakt: de data wordt nu in beide files opgehaald uit de DB, dus 2x wordt de inhoud van de mail gegenereerd, dit los ik later nog wel op...is alleen om te kijken of het werkt en het is wel zo duidelijk om het nu even uit te leggen.

Dit is de code die ik nu heb:
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
<html>
<head>
<title>Verstuur nieuwsbrief</title>
</head>
<body>
<?
/* Haal data op uit DB */

$html_head = "\n\n\n<html>\n  <head>\n    <title>Nieuwsbrief</title>\n  </head>\n<body>\n";

$html_part = "<table>\n";
$html_part .= "  <tr>\n";
$html_part .= "    <td>\n";
$html_part .= "      <p>\n";
$html_part .= "      [img]\"logo.gif\"[/img]\n";
$html_part .= "      <font face=\"Century Schoolbook\" size=\"5\"><b>Nieuwsbrief</b></font>\n";
$html_part .= "    </td>\n";
$html_part .= "  </tr>\n";
$html_part .= "</table>\n";

while (...) {
    $html_part .= "<table border=\"0\" width=\"100%\" cellspacing=\"0\" cellpadding=\"0\">\n";
    $html_part .= "  <tr>\n";
    $html_part .= "    <td><font size=5>$data[1]</font></td>\n";
    $html_part .= "  </tr>\n";
    $html_part .= "  <tr>\n";
    $html_part .= "     <td><i>$data[2]</i></td>\n";    
    $html_part .= "  </tr>\n";
    $html_part .= "</table>\n";

    /* Hier nog meer toevoegen op dezelfde manier */

    $html_part .= "<br/>\n";

    /* ook voor tekst de data toevoegen */

    $text_part .= "$data[1]\n";
    $text_part .= "blabla: $data[2]\n";
    $text_part .= "\n";
}

$html_foot = "</body>\n";
$html_foot .= "</html>\n";

$html_part = $html_head.$html_part.$html_foot;

$email = "mail@me.nl";
$bcc = "";

/* Maak random key's voor de boundary's */
$key = md5(mt_rand());

/* Bepaal de boundary's */
$boundary = "----=_$key";

/* Stel de headers samen */
$headers  = "From: nieuwsbrief <mail@me.nl>\n";
$headers .= "Reply-To: mail@me.nl\n";
$headers .= "Bcc: $bcc\n";

$headers .= "Content-type: multipart/alternative; boundary=\"$boundary\"\n";
$headers .= "MIME-Version: 1.0\n";
$headers .= "X-Mailer: PHP / ".phpversion()."\n";

/* Begin het samenstellen van de body */
$message  = "--$boundary\n";

$message .= "Content-Type: text/plain;\n charset=\"iso-8859-1\"\n";
$message .= "Content-Transfer-Encoding: 8bit\n\n";

/* Plaats hier je text/plain bericht. */
$message .= $text_part;

$message .= "\n--$boundary\n";
$message .= "Content-Type: text/html;\n charset=\"iso-8859-1\"\n";
$message .= "Content-Transfer-Encoding: quoted-printable\n\n";

/* Plaats hier je text/html bericht. */

$message .= $html_part;

/* In deze textarea laat ik de inhoud van $message even zien, alleen om het even te checken */

echo "<form><textarea rows=20 cols=99>$message</textarea></form>\n";

$message .= "--$boundary\n";

$subject = "Nieuwsbrief";

if (isset($submit)) { /* ...als de inhoud is gecontroleerd op de vorige pagina */
    if (mail($email, $subject, addslashes($message), $headers)) echo"nieuwsbrief verstuurd";
         else echo "probleem met versturen... nieuwsbrief niet verstuurd";
}   else {
    echo "probleem met versturen... nieuwsbrief niet verstuurd";
}
?>

</body>
</html>


Nog steeds doet ie het niet goed met de slashes. Met deze code zou de html code in de mail voor de image tag van het logo zijn
code:
1
[img]logo.gif\"[/img]


Ik snap het niet!!!

Acties:
  • 0 Henk 'm!

  • JHS
  • Registratie: Augustus 2003
  • Laatst online: 16-09 16:02

JHS

Splitting the thaum.

Verwijderd schreef op 22 februari 2004 @ 14:32:
[...]

Ik heb inderdaad ook gedacht aan een functie om de mail te versturen. Probleem blijft dat de gebruiker moet controleren of de inhoud van de mail juist is en dat dat niet uitbesteed kan worden aan een functie.
Ok, dan begreep ik je verkeerd, ik dacht dat het moest worden gecontroleerd door een script :)

Misschien valt het te omzeilen door eerst de tekst te laten controleren en pas daarna deze in de database te stoppen (samen met het versturen van het mailbericht dus)

Overigens, waarom werk je steeds met \"s, dit moet ook kunnen dmv 's :)

[ Voor 45% gewijzigd door JHS op 22-02-2004 15:53 . Reden: Quote toegevoegd, reactie op \"s toegevoegd ]

DM!


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
idontlikepizza schreef op 22 februari 2004 @ 15:50:
Misschien valt het te omzeilen door eerst de tekst te laten controleren en pas daarna deze in de database te stoppen (samen met het versturen van het mailbericht dus)
De tekst van is juist afkomstig uit de database, dus er hoeft niets naar de database geschreven te worden.
Overigens, waarom werk je steeds met \"s, dit moet ook kunnen dmv 's :)
Maakt niets uit, met enkele aanhalingstekens doet ie hetzelfde:(

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
drm schreef op 22 februari 2004 @ 13:18:
Je probleem zit waarschijnlijk in http://www.php.net/get-magic-quotes-gpc en/of http://www.php.net/get-magic-quotes-runtime

Check even de FAQ en de manual hoe je die configuraties aanpast.

Als het daarmee niet lukt ben ik wel benieuwd naar een stukje relevante code.,
Ik heb de configuratie bekeken en magic_quotes_gpc staat aan. Ook heb ik de FAQ gelezen, maar wordt er niet echt wijs uit... wellicht zou je me hier iets meer over kunnen vertellen?

ps. inmiddels gaat het niet meer over een textarea probleem, maar over het samenvoegen van strings... de slashes blijven echter een probleem:(

Acties:
  • 0 Henk 'm!

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
PHP is nog niet helemaal mijn taal, maar zit je probleem niet gewoon in de addslashes die je doet bij de aanroep van mail?
Volgens mij hoef je strings die je verstuurt naar die functie niet nog eens te escapen.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
bigbeng schreef op 23 februari 2004 @ 14:49:
PHP is nog niet helemaal mijn taal, maar zit je probleem niet gewoon in de addslashes die je doet bij de aanroep van mail?
Volgens mij hoef je strings die je verstuurt naar die functie niet nog eens te escapen.
Dat dacht ik eerst ook, maar later bleek toch dat dat ook niet goed was.
Als dit de html code is die ik wil versturen in de mail
code:
1
[img]'logo.gif'[/img]

is dit het resultaat in de html bron van de mail
code:
1
[img]ogo.gif'[/img]

waarom haalt ie dan de eerste aanhalingstekens met het eerste karakter wat erna komt weg??? Vandaar dat ik addslashes doe...
Met addslashes ziet het er zo uit:
code:
1
][img]'logo.gif'[/img]

wordt
code:
1
[img]logo.gif\'[/img]

hier haalt ie dus de backslash en het aanhalingsteken weg, maar dan wel alleen de eerste na '='... het blijft voor mij een groot mysterie...

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03:42

.oisyn

Moderator Devschuur®

Demotivational Speaker

Euh nee, het is helemaal geen probleem met quotes, maar een probleem met = in de email zelf. Een =xy wordt vertaald naar het teken met de (hex?)code xy. Om een = te gebruiken moet je die dus omzetten naar de code van het = teken zelf, =3D geloof ik

[ Voor 3% gewijzigd door .oisyn op 23-02-2004 16:13 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
.oisyn schreef op 23 februari 2004 @ 16:12:
Euh nee, het is helemaal geen probleem met quotes, maar een probleem met = in de email zelf. Een =xy wordt vertaald naar het teken met de (hex?)code xy. Om een = te gebruiken moet je die dus omzetten naar de code van het = teken zelf, =3D geloof ik
Dit was inderdaad het probleem!!!
Door = overal te vervangen door =3d werkt het nu wel goed!
Ontzettend bedankt voor het meedenken _/-\o_
Pagina: 1