WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   charset troligvis enkel fråga (https://www.wn.se/forum/showthread.php?t=1037731)

v800 2009-08-29 01:05

charset troligvis enkel fråga
 
Jag kör ett mail script på min hemsida (för besökare) i flash och flashfilen läser av en separat php fil. Jag har hållit på i flera dagar nu att experimentera med olika charsets både i html filen som flashfilen ligger i samt i php filen men min webprovider one.com kan för allt i världen inte ta emot mailet och visa det normalt utan det lagras en fil som heter "Data" i mailet och den måste man öppna separat för att sedan upptäcka att alla svenska tecken är helt skruvade. Använder jag min hotmail som mottagare så funkar det något bättre men de måste ju va nåt charset fel eftersom jag inte har nått problem att få till vanliga html form mails utan flash.

Här är php filen, ska jag ha nån header eller? De står ju redan charset längre ner i koden...

<?
$name=$_POST['name'];
$email=$_POST['email'];
$phone=$_POST['phone'];
$message=$_POST['message'];

$ToEmail = "test@mindomän.se";
$ToSubject = "Meddelande websidan";

$EmailBody = "Namn: $name\n
E-mail address: $mail\n
Telefon:$phone\n
Meddelande: $comm\n";

$Message = $EmailBody;


$headers .= "Content-type: text; charset=iso-8859-1\r\n";
$headers .= "From:".$email."\r\n";

mail($ToEmail,$ToSubject,$Message, $headers);

?>



Hjälp uppskattas!

Draqir 2009-08-29 01:34

Testa; Content-type: text/html; charset=UTF-8

Om det inte fungerar så är det fel i din hantering mellan flash->php.

KarlRoos 2009-08-29 01:37

Om man kör allt i UTF-8 så fungerar det. Sätt charset överallt det går, tvinga script/databas att använda det där du kan göra det och det kommer att fungera.

v800 2009-08-29 13:27

Nu funkar det
 
Tror mime-grejjen gjorde susen, har provat utf-8 tidigare utan att lyckas men verkar haft en ofuständig sträng.
Anyhow, nån som vet hur jag ska få scriptet att tvinga mailservern att skriva in fälten som besökaren skriver in så att de hamnar på olika rader som den struktur som finns nedan?
Just nu så kommer allt på samma rad i mailets body. Hotmail ex. tolkar strukturen som den är uppspaltad här nedan men inte one.com...

<?
$name=$_POST['name'];
$email=$_POST['email'];
$phone=$_POST['phone'];
$message=$_POST['message'];

$ToEmail = "[email protected]";
$ToSubject = "Meddelande websidan";

$EmailBody = "Namn: $name\n
E-mail address: $email\n
Telefon: $phone\n
Meddelande: $message\n";

$Message = $EmailBody;

$headers= 'MIME-Version: 1.0' . "\r\n";
$headers.= "Content-type: text/html; charset=UTF-8\r\n";
$headers .= "From :".$email."\r\n";

mail($ToEmail,$ToSubject,$Message, $headers);

?>

Jonas 2009-08-29 20:29

Tack för att du hjälper till för att öka spammen på internet :)

Du escapar inte ett enda värde du tar emot. Utan spottar bara iväg rubbet. Kan du inte escapa korrekt, testa phpMailer och använd detta istället.

taz76 2009-08-29 21:08

Testa att lägga newline för sig:

$EmailBody = 'Namn: '.$name."\n".
'E-mail address: '.$email."\n"
'Telefon: '.$phone."\n"
'Meddelande: '.$message2."\n";

Har du enkelcitat också så minskas belastningen lite på servern (många bäckar små..)

v800 2009-08-30 02:31

ja ja hade inte för avsikt att lära mej hel php spektrat bara för ett mailformulär

Escapa?

Jonas 2009-08-30 03:58

http://www.roscripts.com/Escape_string_with_PHP-87.html

Men detta är inte allt du behöver.
Google är din vän.

v800 2009-08-30 13:33

Okey tack!
Men är detta verkligen relevant i sammanhanget?
Formuläret finns på en relativt liten site och gissningsvis handlar det om kanske 10 mail via den per år.

Kan man på nått vis (av orätta händer) använda detta formulär till att sprida saker utanför den mail som står angiven i scriptet?

Den förra siten jag hade ett liknande på kom ungefär 3-4 spam / år max av robotar med "buy this and buy that"

Jonas 2009-08-30 14:59

Formuläret kan användas för att sprida spam. Vill man det? Nej, och därför ser man till att det inte skall gå.

crazzy 2009-08-30 17:42

Citat:

Ursprungligen postat av v800 (Inlägg 20320210)
Okey tack!
Men är detta verkligen relevant i sammanhanget?
Formuläret finns på en relativt liten site och gissningsvis handlar det om kanske 10 mail via den per år.

Kan man på nått vis (av orätta händer) använda detta formulär till att sprida saker utanför den mail som står angiven i scriptet?

Den förra siten jag hade ett liknande på kom ungefär 3-4 spam / år max av robotar med "buy this and buy that"

Jag tänkte likadant för ett par år sedan med ett gästboks-script jag skrev. Kom väl ett spam i månaden elr nåt..

Sedan hittade några jäkla ryska spambotar skiten och fyllde databasen på nolltid. DELETE * FROM `guestbook`; Och sedan vart den fylld igen....osv..

Tips: Fixa formuläret innan du blir tvingad till det. :P

taz76 2009-08-30 20:05

Finns det säkerhetshål som t.ex brist på validering i ett script så kan det användas för hackarens egna onda syften... som att göra om scriptet och skicka ut tusentals mail med din server som avsändare vilket kan resultatera i att ip'n blir svartlistad.. och har du webmail ifrån samma ip så blir dina mail svartlistade som spam - det låter väl skoj? ;)

objx 2009-08-31 11:24

Citat:

Ursprungligen postat av taz76 (Inlägg 20320146)
Har du enkelcitat också så minskas belastningen lite på servern (många bäckar små..)

Jag är ingen expert på servrar eller hur man optimerar dessa, men menar du att om man använder enkelcitat istället för "vanligt" citat så minskar belastningen på servern?

Eller hade detta något med huruvida spam tar sig förbi eller ej?

Blev lite lätt förbryllad när jag läste detta.

taz76 2009-08-31 12:19

Citat:

Ursprungligen postat av objx (Inlägg 20320290)
Jag är ingen expert på servrar eller hur man optimerar dessa, men menar du att om man använder enkelcitat istället för "vanligt" citat så minskar belastningen på servern?

Eller hade detta något med huruvida spam tar sig förbi eller ej?

Blev lite lätt förbryllad när jag läste detta.

php skiljer på dubbelcitat och enkelcitat.. om det är dubbelcitat så går php igenom hela strängen och söker efter variabler = mer resurser krävs. tänk sedan att om du använder endast dubbelcitat i ett script med 2000 rader - då går php igenom varenda sträng och söker efter eventuella variabler. enkelcitat så görs inte detta.. visst är det enklare och smidigt att använda dubbelcitat men det kräver lite mer och många små bäckar blir till slut en stor bäck.

har man följande kod:

$var = 'hello';
$var2 = "$var world";

så går php igenom strängen med dubbelcitat.. en sådan där situation är onödigt resurskrävande för det är inte mer jobbigare att skriva så här:

$var2 = $var.' world';

.. eller en sträng som bara är en sträng fast det är dubbelcitat så kommer ändå php att söka efter variabler.

$var = "hello world";

objx 2009-08-31 12:40

Att man har missat en sådan både enkel och viktig detalj i PHP-språket efter 5 års erfarenhet.
Nästan så att man får ställa sig i skamvrån! :-)

Tack för förklaringen!

Jonas 2009-09-01 10:17

Skillnaden är knappt märkbar.

Jag gjorde ett test och mätte tiden (microsekunder m. PHP) och skrev ut en mängd text 1 miljon gånger. Det skiljde sig inte många millisekunder, och det är inget varken serveransvarig/programmerare/användare kommer att märka.


Alla tider är GMT +2. Klockan är nu 02:08.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson