Avatar billede krummel Juniormester
03. maj 2014 - 19:48 Der er 9 kommentarer

\r\n linjeskift virker ikke når gemmes i db

Hej,

Jeg bruger et mailing script (Simple Mailing List 1.5) som gemmer mails/inut i mysql database. Min host er unoeuro. Det har virket perfekt i et par år.

Men her i foråret bliver linjeskift ikke konverteret når mails gemmes i db. Før så korrekte beskeder fx sådan ud i db:


------
Hej bruger

Her er en mail

Hilsen din ven
------


Nu gemmes de således:


-----
Hej Bruger\r\nHer er en mail\r\nHilsen din ven
-----


Det dur jo ikke at sende sådan en mail ud uden linjeskift.

Nogen der ved hvad der kan være sket - og evt en løsning? Har host måske opgraderet PHP eller mysql, som ikke understøtter en gammel kommando?

Nogen løsning?
Avatar billede repox Seniormester
03. maj 2014 - 20:19 #1
Må vi se din kode?
Avatar billede krummel Juniormester
03. maj 2014 - 20:28 #2
Det er dette mailing script jeg bruger:
http://notonebit.com/projects/mailing-list/

Downloadlink er nederst på siden.

http://www.notonebit.com/projects/download-manager/secure/download.php?4


Nu er jeg ikke superkoder, så ved ikke lige hvad jeg skulle pille ud og vise her. Men vil tro det er i config.inc.php eller send.php der skal kigges.
Avatar billede madslundholm Novice
03. maj 2014 - 22:35 #3
Kan du se i din database om de gemmes med linjeskift?
Hvis de gør er det måske outputtet du skal lege med.
Her skal du nok kigge på nl2br funktionen i PHP
Avatar billede krummel Juniormester
03. maj 2014 - 23:33 #4
#3

Det bliver gemt i db sådan her:

----
Hej Bruger\r\nHer er en mail\r\nHilsen din ven
----

tidligere blev det gemt sådan her i db:

------
Hej bruger

Her er en mail

Hilsen din ven
------


Jeg har intet ændret overhovedet, så det undrer mig, at den lige pludselig gemmer uden linjeskift. Det eneste jeg lige kan komme på er, at Unoeuro måske har opgraderet php eller mysql - men nu er jeg heller ikke programmør :)
Avatar billede madslundholm Novice
03. maj 2014 - 23:50 #5
Prøv at kigge på konstanten PHP_EOL - er den overens med \r\n?

Når du udskriver beskeden, laver du så linjeskiftene om til HTML breaks?
Avatar billede krummel Juniormester
04. maj 2014 - 12:41 #6
#5

1. "Prøv at kigge på konstanten PHP_EOL - er den overens med \r\n?"
Hvordan tjekker jeg det?

2. Mener du udskriver beskeden til db? Det er vel ikke relevant hvis du mener udskriver til mails. Mails tager jo bare det der står i db text felter.
Jeg kan ikke umiddelbart finde et eneste sted i scriptet, hvor <br /> er anvendt, så det tror jeg ikke.
Avatar billede madslundholm Novice
04. maj 2014 - 12:48 #7
Prøv: echo stripslashes(PHP_EOL)

Er det en HTML mail eller bare en alm text mail du sender?
Avatar billede krummel Juniormester
04. maj 2014 - 13:25 #8
Skal jeg bare smide echo stripslashes(PHP_EOL); øverst på siden?
Der kommer ikke noget frem, og intet er ændret.

Det er tekst mail - ikke html. I Scriptet kan jeg vælge html, men bruger kun 'plain text'. Har lige prøvet at vælge html - ingen ændringer.
Avatar billede madslundholm Novice
04. maj 2014 - 21:04 #9
Prøv at se kildekoden for den side med PHP_EOL.

Og prøv at lav en HTML-mail, og brug funktionen nl2br.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester