/ Forside/ Teknologi / Udvikling / PHP / Spørgsmål
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Form Mail
Fra : k_m_s
Vist : 1173 gange
100 point
Dato : 24-07-11 11:22

Hej.

Jeg har lavet en enkelt php form mail og vil gerne have brugeren sendt videre til en ny side når formen er valideret og sendt.

Jeg har denne kode:

if(empty($errorMessage))
   {
            
   $email_from = 'min email adr';
   $email_subject = "Ny Form meddelelse";
   $email_body = "Du har modtaget en besked fra hjemmesiden, fra $varNavnLH.\n\n".
                           "Her er beskeden:\n\n $varBeskedLH \n\n".
                           "$varMailLH \n\n\n\n".
            
            
            
   $to = "min email adr";
   $headers = "From: $email_from \r\n";
   $headers .= "Reply-To: $varMailLH \r\n";
               
               
   mail($to,$email_subject,$email_body,$headers);
            
            
   header('Location: sendt.php');
               
               
}


Men brugeren kommer ikke videre til den nye side, jeg får derimod den klasiske fejl header alredy sendt, men header('Location: sendt.php'); har da ikke noget med variablen $headers at gøre eller hvad?????

Hvad gør jeg forkert???



Desuden har jeg måtte ligge brugerens e-mail adr. ind i:

"Her er beskeden:\n\n $varBeskedLH \n\n".
                           "$varMailLH \n\n\n\n".

Ellers er det kun min egen e-mail adr. jeg får i mailen. (Er det en forkert måde jeg har gjort det på??)

Hilsen
Kim

 
 
Kommentar
Fra : urban


Dato : 25-07-11 22:09

Hej

Hvis du skriver noget som helst ud på skærmen, om det så bare er et linieskift, bliver der sendt en header afsted, og du kan så ikke senere lave en redirect ved at sende en header mere ud med header('Location: sendt.php');

Mvh
Urban

Kommentar
Fra : k_m_s


Dato : 26-07-11 19:36

OK
Det vil så sige at min kode skal være over doctype, allerførst på siden??

Men hvilken måde er så den rigtige når der ikke har været sendt noget til skærmen??

$headers .= "Reply-To: $varMailLH \r\n";
mail($to,$email_subject,$email_body,$headers);
header('Location: sendt.php');

ELLER:

$headers .= "Reply-To: $varMailLH \r\n";
header('Location: sendt.php');
mail($to,$email_subject,$email_body,$headers);

Hilsen
Kim

Kommentar
Fra : urban


Dato : 26-07-11 21:51

Da siden ikke vises, er der ingen grund til at skrive en doctype ud.
Det først af dine kodeeksempler vil jeg anse for at være det mest korrekte.

Mvh
Urban

Kommentar
Fra : k_m_s


Dato : 26-07-11 22:15

Det er fordi jeg har php scriptet på samme fil som mail formen.

Jeg har fået det til at virke nu ved at sætte koden øverst, men på den side den endeligt skal op på er der en session_start(); der vil jeg tro at jeg kan sætte scriptet under session_start(); og mellem samme <?php ?> tags.


Ang:
$headers .= "Reply-To: $varMailLH \r\n";
mail($to,$email_subject,$email_body,$headers);
header('Location: sendt.php');

Det virker men jeg forstår ikke rigtigt at jeg kan bruge header 2 gange. Før mail() og efter??
Er det fordi den første er en variabel?

Hilsen
Kim

Accepteret svar
Fra : urban

Modtaget 100 point
Dato : 26-07-11 22:27

Godt det virker... Du bruger ikke header to gange, du definerer bare en variabel $headers, som tilfældigvis hedder det samme som kommandoen header. Du kan udskifte alle de steder der står $headers med $mail_headers, hvis du vil, og det vil virke lige så fint og være mere retvisende.

session_start skal være før headers, vil jeg mene.

Mvh
Urban



Godkendelse af svar
Fra : k_m_s


Dato : 26-07-11 22:43

Super godt urban.
Så blev jeg det klogere
Mange tak for hjælpen
Kim

Du har følgende muligheder
Eftersom du ikke er logget ind i systemet, kan du ikke skrive et indlæg til dette spørgsmål.

Hvis du ikke allerede er registreret, kan du gratis blive medlem, ved at trykke på "Bliv medlem" ude i menuen.
Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408914
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste