webForumDet fria alternativet

Radbrytning från formulär

PHPur PHP

11 svar · 611 visningar · startad av bluespot

Medlem sedan nov. 200093 inlägg
Frågan#1

Jag har sökt och testat olika lösningar här på forumet utan resultat, så jag fär nog ställa frågan igen.

Jag har ett nyhetsbrev där meddelandet fylls i ett formulär från en webbplats och sedan skickas med Php till e-postadresser. Problemet är att när jag trycker på enter så blir det dubbla radbrytningar i mailen.

Formuläret:

<form action="<? echo ADMINHREF; ?>send.php" method="post" enctype="multipart/form-data">
<h1>Rubrik</h1><input name="subject" type="text" size="50" />
<h1>Meddelande</h1><textarea name="message" cols="80" rows="20"></textarea>
<p><input type="submit" name="submit" value="Skicka nyhetsbrevet" class="fm_button" /></p>
</form>

Något bra tips på hur man löser detta?

Medlem sedan mars 20025 907 inlägg
#2

Hur ser koden ut som tar emot texten och skickar iväg mailet?

Medlem sedan nov. 200093 inlägg
#3
<?

	$sql2 = "select email from mail";

	$res2 = mysql_query($sql2) or die("Fel! Kan ej n&aring; adresserna.");

	$headers = "From: \"".FROMNAME."\" <".FROMEMAIL.">\n";

	while ($row = mysql_fetch_array($res2)) {

		$email_addr = $row[0];

        if (INSERTLINK == "true") {
            $fullmessage = $_POST[message] . "

:: Avregistrering ::
http://www.xxx.se/avregistrering.php?email=" . $email_addr . "
";
        } else {
            $fullmessage = $_POST[message];
        }

        mail("$email_addr", "$_POST[subject]", $fullmessage, $headers);

	}

	echo "<h2>Nyhetsbrevet &auml;r nu skickat!</h2>";

?>
Medlem sedan nov. 200093 inlägg
#4

Kan nl2br och denna kodrad vara lösningen på något sätt?

$fullmessage = $_POST[message] . "
Medlem sedan nov. 200093 inlägg
#5

Ingen som har någon idé?

Förtydligar mitt problem. I formuläret skriver jag:
Rad1
Rad2

Rad 3

I mailet som skickas ut står det:
Rad 1

Rad 2

Rad3

Medlem sedan juli 20023 617 inlägg
#6

Ser det normalt ut om du skriver ut $fullmessage på skärmen med print?

Medlem sedan nov. 200093 inlägg
#7

fiddler skrev:

Ser det normalt ut om du skriver ut $fullmessage på skärmen med print?

Vet ej om detta är normalt men så här blir det då: Rad1 Rad2 Rad3

Kan väl tillägga att jag gör detta på OS X och sidan ligger på en OS X Server, i fall nu detta kan ha någon betydelse.

Medlem sedan juli 20023 617 inlägg
#8

bluespot skrev:

Vet ej om detta är normalt men så här blir det då: Rad1 Rad2 Rad3

Kan väl tillägga att jag gör detta på OS X och sidan ligger på en OS X Server, i fall nu detta kan ha någon betydelse.

Det är normalt. Då vete sjutton var felet ligger...

Medlem sedan aug. 20002 975 inlägg
#9

Blir det någon skillnad om du istället skriver:

$fullmessage = preg_replace("/(\r\n|\r|\n)/", "\n", $_POST[message]);
Medlem sedan nov. 200093 inlägg
#10

Vet du hur länge och hur många varianter jag har testat för att lösa detta?
Tack så hemskt mycket, det fungerade klockrent!

Medlem sedan apr. 20012 427 inlägg
#11

Jag hade varit mer nyfiken på orsaken till problemet. Att bara ersätta dubbelradbrytningarna mot enkla känns som en nödlösning.

Medlem sedan aug. 20002 975 inlägg
#12

Min tanke när jag såg den effekt bluspot fick var att radbrytningarna räknades dubbelt på Mac.

Klassiskt brukar man säga \r\n är radbrytning i Windows, \n är radbrytning i Linux/unix medan \r är radbrytning på Mac.

OSX är ju i grunden någon BSD-klon har jag för mig, och jag misstänker att det då går att ställa in så att den läser \n som radbrytning. Samtidigt kanske stödet för \r som radbrytning finns kvar.

Postar man då från en Windowsmaskin så kommer \r\n att skickas som radbrytning, dock kommer det hos mottagaren att läsas som en radbrytning för \r samt ytterligare en radbrytning för \n.

Det var teorin/min tanke bakom hacket/nödlösningen.
Kanske det finns inställningar att göra i servern som tar hand om detta stället.

133 ms totalt · 3 externa anrop · v20260731065814-full.b746b907
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)