Behöver hjälp med kontaktformulär i PHP

Tråden skapades och har fått 5 svar. Det senaste inlägget skrevs .
1
  • Medlem
  • Stockholm
  • 2010-02-06 16:07

Hej alla!
Har stött på lite patrull..

Det är som så att jag har kört samma kontaktformulär flera gånger utan några problem, men nu är det helt plötsligt knas och jag vet inte vad som är fel, är inte heller någon mästare i PHP så jag behöver lite proffs hjälp,, därav detta inlägg.

Formuläret hittas här:
Jensen Sjöqvist

Och förutom kontaktsidan så finns den en formmail.php och en success.html och en error.html beroende på om du fyllt i allt korrekt.

Saken är att själva mailat kommer fram men jag får ett konstigt felmeddelande istället för success sidan. Tanken är ju att när man skickat mailet så ska man hamna på en Tack för ditt mail sida (success.html), men detta funkar inte utan man får istället upp felmeddelandet nedan:

Warning: Cannot modify header information - headers already sent by (output started at /home/web177/domains/jensensjoqvist.se/public_html/formmail.php:1) in /home/web177/domains/jensensjoqvist.se/public_html/formmail.php on line 41

Och kollar jag vilken rad det är så är det denna:

header("Location: " . $succes);

Så det är här något skiter sig,, vad kan vara fel?? success.html och error.html ligger där och det funkade när jag flyttade sidan till mitt webbhotell,, är det något på deras server???

Hjäälp!

MVH
Fredrik
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Formmail.php koden ser ut som följande:

<?php

// Formmail

// ange mottagare av formmailen
// flera mottagare kan läggas till som
// $modtagere[1] = "adress@domain.se"
// $modtagere[2] = "adress2@domain.se"
// osv.
$modtagere[1] = "hello@fredrikharken.se";

// success och felsidor
$succes = "success.html";
$fejl = "error.html";

// standard textbox är
// namn
// emailadress
// ämne
// besked

// dessa ska vara "name" på de olika textboxarna på html-sidan
// t.ex. <input type="text" name="navn"></input>

// gör en lista över mottagare
$mail_modtagere = implode(",", $modtagere);

// klargör parameter
$namn = sanitize($_POST['namn']);
$emailadress = "From: " . sanitize($_POST['emailadress']);
$rubrik = " " . $namn . ": " . sanitize($_POST['rubrik']);
$meddelande = $_POST['meddelande'];

// send mail
$mail_status = mail($mail_modtagere, $rubrik, $meddelande, $emailadress);

if ($mail_status) {
header("Location: " . $succes);
} else {
header("Location: " . $fejl);
}

function sanitize($data) {
$safe_data = $data;

if ($pos = strpos($safe_data, "\n")) {
$safe_data = substr($safe_data, 0, $pos-1);
}
if ($pos = strpos($safe_data, "\r")) {
$safe_data = substr($safe_data, 0, $pos-1);
}
return $safe_data;
}
?>

  • Medlem
  • Stockholm
  • 2010-02-06 16:42

Det får inte skrivas ut ett endaste tecken innan header() körs, därav felmeddelandet.

Efter som den klagar på rad 1 är min gissning att du har fått med en tom rad eller ett mellanslag eller liknande innan <?php

  • Medlem
  • Stockholm
  • 2010-02-06 17:57

Du har så rätt!!

Vad skulle man göra utan er!

  • Medlem
  • Stockholm
  • 2010-02-06 18:05

Kan passa på att fråga en sak till,, det var tydligen ett mail som såg lite konstigt ut förut, misstänker att det är något med Character Encoding delen,, kan man påverka den på något sätt:

----
En del ur det konstiga mailet där å ä ö ser skumt ut:
I samband med försäljning av vår villa i Sollentuna har vår mäklare
----

Edit: HItta detta hos min host, vet inte om det har något med saken att göra, isf vart lägger jag in den delen?

https://surftown.se/support/hur-saetter-jag-character-encoding-i-ett-e-postformulaer-skrivet-i-php

  • Medlem
  • Linköping
  • 2010-02-08 12:23

Under blocket "// klargör parameter":

$emailadress = "From: " . sanitize($_POST['emailadress']) . "\nMIME-Version: 1.0\nContent-Type: text/plain; charset=ISO-8859-1";

Senast redigerat 2010-02-08 12:36
Ursprungligen av Lumago:

Under blocket "// klargör parameter":

$emailadress = "From: " . sanitize($_POST['emailadress']) . "\nMIME-Version: 1.0\nContent-Type: text/plain; charset=ISO-8859-1";

Fast om mejlet såg ut som ovan är det i unicode (utf-8) och då ska raden snarare vara:

$emailadress = "From: " . sanitize($_POST['emailadress']) .  "\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8";
1
Bevaka tråden