webForumDet fria alternativet

Problem med ÅÄÖ i webbforumulär:

PHP

11 svar · 955 visningar · startad av Hampan90

Medlem sedan feb. 2007137 inlägg
Frågan#1

Hallå, sitter och mixtrar med aleborg, mitt webbhotell.

Jag har gjort ett kontakt formulär enligt webbdesignskolans guide.

När jag skriver in detta i medelande:

Märker du att ÅÄÖ är fel?

Så får jag detta:

Märker du att ÅÄÖ är fel?

Sen hammnar alla email från formuläret i skräppost, går det att påverka på något sätt i scriptet eller måste man tillåta adressen i sin egen email client?

Medlem sedan aug. 20068 090 inlägg
#2

Länk till formuläret?
Hur ftp:ar du upp formuläret?

Medlem sedan feb. 2007137 inlägg
#3

Länk:
http://www.ergonomeva.se/test.php

Hur menar du ftp:ar upp?
Jag lägger in bägge PHP filerna med aleborgs online filediterare.

Medlem sedan jan. 2005953 inlägg
#4

Filen ser ut att vara kodad i UTF-8, men du anger ingen charset på sidan vilket gör att den defaultar till ISO-8859-1

Medlem sedan feb. 2007137 inlägg
#5

Nu är filen uppdaterad (test.php) med charset UTF-8, fortfarande ingen skillnad

Medlem sedan feb. 2007137 inlägg
#6

Ingen som vet vad det är för fel?

Medlem sedan juni 20014 421 inlägg
#7

Jag ser inget fel (kör opera)? Har du tömt din cache innan du försökte igen?

Medlem sedan aug. 20068 090 inlägg
#8

Hampan90 skrev:

Länk:
http://www.ergonomeva.se/test.php

Hur menar du ftp:ar upp?
Jag lägger in bägge PHP filerna med aleborgs online filediterare.

Jag antar att deras "filediterare" är nåt slags formlär eller nåt där du klistrar in kod? I så fall kanske du ska fråga dom om den påverkar koden på nåt sätt.

Normalt skickar man annars upp filer via "ftp" som är ett särskilt protokoll just för detta och som kräver särskilda program. Man kan där ställa in så att filerna skickas som t.ex. binära filer eller textfiler. Gör man fel där, så inträffar ofta att icke-engelska tecken blir konstiga.

I ditt fall är det ju två filer det handlar om. Dels formuläret http://www.ergonomeva.se/test.php som faktiskt har en massa fel (det är INTE xhtml strict fastän DD:n säger så): http://validator.w3.org/check?verbose=1&uri=http%3A%2F%2Fwww.ergonomeva.se%2Ftest.php

Dels har du ju filen som processar formuläret, dvs "formmail.php" som ingen kan se hur den ser ut eftersom man måste se originalfilen. Att kolla i en browser visar bara hur den renderar och man ser inte all kod.

Medlem sedan feb. 2007137 inlägg
#9

Deras "Filhanterare" är inte att man klistrar in koden, det fungerar som FTP, man väljer en mapp, sedan bläddrar man i sin egen dator och laddar upp de filerna.

Nu validerar bägge strict!

Här är formmail.php:

<?php

// anger en variabel som kan lagra de eventuella felaktigheterna
$errors = array();
// kontrollera om ett Namn angivits
if (!$_POST["name"])
$errors[] = "- ditt namn";
// kontrollera om ett Ämne angivits
if (!$_POST["subject"])
$errors[] = "- ärende i ämnesraden";

// kontrollera om en Epostadress angivits
$emailcheck = $_POST["email"];
if(!preg_match("/^[a-z0-9\å\ä\ö._-]+@[a-z0-9\å\ä\ö.-]+\.[a-z]{2,6}$/i", $emailcheck))
$errors[] = "- din epostadress saknas eller är felaktig";    

// kontrollera om ett Meddelande angivits
if (!$_POST["message"])
$errors[] = "- inget meddelande har skrivits!";
// om felaktig information finns visas detta meddelande
if (count($errors)>0){
echo "<span class='text'>";
echo "<h2>Följande information måste anges innan du kan skicka formuläret:</h2><br /><br />";
foreach($errors as $fel)
echo "<span class='textbakgrund'> $fel <br /><br /></span>";
echo "<br />Ange den information som saknas och skicka formuläret igen. Tack! <br /><br />";
echo "<a href='javascript:history.go(-1)'>&laquo; klicka här för att komma tillbaka till formuläret</a></span>";
}

else {
// formuläret är korrekt ifyllt och informationen bearbetas
$to = "XXXXXX@XXXXX.se";
$from = $_POST["email"];
$subject = $_POST["subject"];
$name = $_POST["name"];
$message = $_POST["message"];

if (mail($to, $subject, $message ,"From: $name <$from>"))
echo nl2br("<span class='text'><h2>Ditt meddelande har skickats!</h2>
<b>ämne:</b> $subject
<b>meddelande:</b>
$message
</span>");
    
    else
    echo "Det gick inte att skicka ditt meddelande";
}
?>

XXXXXX@XXXXX.se = min mail

Problemet är:
Det som folk skickar genom forumuläret hammnar i min inbox, fast alla ÅÄÖ ser missbildade ut..
Men på webbsidan så ser ju medelandet normalt ut.

Medlem sedan feb. 2007137 inlägg
#10

OK, antar att ingen kan luska ut vad problemet är, men kan någon länka till eller skriva någon kod som ni använder och vet fungerar?

Medlem sedan aug. 2001153 inlägg
#11

Prova lägga till lite fler headers för charset

$headers = "Content-type: text/html; charset=iso-8859-1" . "\r\n"; 
$headers .= "From: $name <$from>" . "\r\n";
if (mail($to, $subject, $message ,$headers))
Medlem sedan feb. 2007137 inlägg
#12

Knet.J

Kan du förklara lite närmre hur jag skall använda din kod?

266 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
139 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)