Avatar billede jetobi Juniormester
14. juni 2011 - 20:00 Der er 14 kommentarer og
1 løsning

PHP mail form

Hej eksperten, gad godt have en mail form, hvor brugeren kan sende en email til en af hans venner og skrive kom med i følleskabet eller noget.
Hvergang jeg laver det, blir den sendt til spam filter, eller virker det ikke. Jeg kan ikke finde ud af det jeg vil.
jeg vil gerne have
navn: <input >
til hvem: <input>
besked: <input>

noget ligne det, hvor den ikke blir blokeret i spam, og personen kan sende en besked til en ven?
Tak på forhånd.
Avatar billede majbom Novice
14. juni 2011 - 20:05 #1
har du søgt?

der kommer en tråd om samme emne mindst én gang om ugen...
Avatar billede jetobi Juniormester
14. juni 2011 - 20:21 #2
jeg kan ikke finde det specefike emne jeg mangler?
Avatar billede majbom Novice
14. juni 2011 - 20:30 #3
okay, jamen jeg synes du skal prøve at tage et kig på phpmailer så...
Avatar billede pstidsen Novice
14. juni 2011 - 20:47 #4
Tag et kig ud til højre i guides boksen. Så vil du finde: http://www.eksperten.dk/guide/1410

Når du har fået det som står i guiden til at virke, så kan jeg lige skrive hvad du skal gøre for selv at bestemme modtager.
Avatar billede pstidsen Novice
14. juni 2011 - 20:48 #5
PS: Hvad webhotel har du? Det skal jo understøtte php
Avatar billede jetobi Juniormester
14. juni 2011 - 22:55 #6
har web10, det understøtter php, men man kan ikke downloade en fil, som skal bruge installion.
Avatar billede jetobi Juniormester
14. juni 2011 - 23:01 #7
pstidsen, jeg har fået den til at virke, men den sender mailen, til spam, og det går ikke til den person hvor der står mail..?
Avatar billede pstidsen Novice
15. juni 2011 - 17:27 #8
Din header skal være sådan at den ikke ryger i spam. Hvis afsendermailadressen ikke er valid ryger den normalt i spam (afhængig af udbyder).

Kan du ikke lige smide koden i kontaktformular.php herind, så kan jeg lige rette det til :)
Avatar billede jetobi Juniormester
16. juni 2011 - 00:31 #9
<?php
$hjemmeside = "xxx";
$mail = "xxxx";
$afsendermail = "kanikke@besvares.invalid";
$viderestil = "tak.html";

/* Her hentes oplysningerne fra de udfyldte felter */
$navn = $_POST['navn'] ;
$email = $_POST['email'] ;
$epost = $_POST['epost'] ;
$besked = $_POST['besked'];
$spamfaelde = $_POST['spamfaelde'];
$kopi = $_POST['kopi'];
$emne = $_POST['emne'];

/* Her tjekkes, om det skjulte spamfælde-felt er udfyldt */
if(!empty($email)) {
  echo "Du er havnet i formularens spamfælde. Det burde ikke være muligt at havne her ved et uheld, så skam dig!";
  exit ();
}

/* Her tjekkes, om der er forbudte tegn i felterne */

if(strpos($navn,'@')!==false || strpos($epost,'\\')!==false || strpos($emne,'\\')!==false || strpos($navn,'\\')!==false)
{
  echo "Formularen er ikke udfyldt korrekt, tryk på tilbage-knappen og prøv igen. Tjek, at du har skrevet din mail-adresse korrekt, og at du har skrevet den i det rigtige felt. Der må ikke være baglæns skråstreger (\) i felterne.";
  exit();
}

/* Her tjekkes, om afsenderen har indtastet sin mail-adresse, og i så fald bruges den som afsendeeradresse, så der kan svares på mailen */
if(!empty($epost)) {
  $headers="From: $navn <$epost>\r\n";
}
else {
  $headers="From: Kontaktformular <$afsendermail>\r\n";
}

/* Her indsættes din mailadresse, så afsenderen kan svare på kopimailen */
$formularheaders="From: $hjemmeside <$afsendermail>\r\n";

/* Her samles afsenderens navn, mailadresse og besked i en enkelt variabel */
$oplysninger="Følgende er sendt via kontaktformularen på $hjemmeside:\r\n\r\nNavn: $navn\r\nE-mail: $epost\r\nBesked:$besked";

/* Her samles oplysningerne til afsenderens kopi af mailen */
$kopimail="Hej $navn\r\nDu har sendt følgende via kontaktformularen på $hjemmeside:\r\n$besked";

if ($kopi > '') {
  /* Her sendes til modtageradressen */
  mail($mail, $emne, $oplysninger, $headers);

  /* Her sendes en kopimail til afsenderen */
  mail($epost, $emne, $kopimail, $formularheaders);
}

else {
  /* Her sendes mailen til modtageradressen */
  mail($mail, $emne, $oplysninger, $headers);
}

/* Når mailen er sendt, viderestilles til denne hjemmeside */
header( "Location: $viderestil" );
?>
Avatar billede pstidsen Novice
16. juni 2011 - 16:54 #10
en mailadresse som kanikke@besvares.invalid ryger i spam. Det skal du ændre til besvares-ikke@ditdomæne.dk
Hvis der skal kunne svares på mailen skal den selvfølgelig være valid.

Her er den rettede kode:
<?php
$hjemmeside = "xxx";
$viderestil = "tak.html";

/* Her hentes oplysningerne fra de udfyldte felter */
$ditnavn = $_POST['ditnavn'] ;
$vensnavn = $_POST['vensnavn'] ;
$email = $_POST['email'] ;
$dinmail = $_POST['dinmail'] ;
$vensmail = $_POST['vensmail'] ;
$besked = $_POST['besked'];
$spamfaelde = $_POST['spamfaelde'];

/* Her ændrer du hvad der skal stå i emne */
$emne="$ditnavn opfordrer dig til at besøge $hjemmeside";

/* Her tjekkes, om det skjulte spamfælde-felt er udfyldt */
if(!empty($email)) {
  echo "Du er havnet i formularens spamfælde. Det burde ikke være muligt at havne her ved et uheld, så skam dig!";
  exit ();
}

/* Her tjekkes, om der er forbudte tegn i felterne */
if(strpos($navn,'@')!==false || strpos($epost,'\\')!==false || strpos($emne,'\\')!==false || strpos($navn,'\\')!==false)
{
  echo "Formularen er ikke udfyldt korrekt, tryk på tilbage-knappen og prøv igen. Tjek, at du har skrevet din mail-adresse korrekt, og at du har skrevet den i det rigtige felt. Der må ikke være baglæns skråstreger (\) i felterne.";
  exit();
}

/* Her skrives navn og afsendermailadresse i headeren */
$headers="From: $ditnavn <$dinmail>\r\n";

/* Her ændrer du ordlyden på det vennen får. \r\n er linjeskift */
$mailtekst="Hej $vensnavn
\r\nJeg har lige været inde på $hjemmeside og jeg synes den er super.
\rTjek det ud!
\r\nHilsen $ditnavn";

/* Her sendes mailen til modtageradressen */
mail($vensmail, $emne, $mailtekst, $headers);

/* Når mailen er sendt, viderestilles til denne hjemmeside */
header( "Location: $viderestil" );
?>


Din html kode skal også rettes. Hvis du skriver koden fra <form> til </form> herinde, retter jeg også lige den :)

Skriv endelig, hvis du har flere spørgsmål! :)
Avatar billede jetobi Juniormester
16. juni 2011 - 17:23 #11
<form method="post" action="kontaktformular.php" name="formular">
<table style="width:475px; margin-left:auto; margin-right:auto;">
<tbody> <tr><td style="width:100px;">Navn:</td><td><input name="navn" style="width:375px;" type="text"></td></tr>
<tr><td>E-mail:</td><!--spamfælde begynd--><td><span style="display: none;">Dette felt skal ikke udfyldes: <input name="email" type="text"><br></span><input name="epost" style="width:375px;" type="text"></td></tr><!--spamfælde slut-->
<tr><td>Emne:</td><td><input name="emne" style="width:375px;" type="text"></td></tr>
<tr><td>Besked:</td><td align="center"><textarea name="besked" style="width:375px; height:100px" rows="5" cols="40"></textarea></td></tr>
<tr><td colspan="2" style="text-align:center;">Send mig en kopi <input type="checkbox" name="kopi"></td></tr>
<tr><td colspan="2" align="center"><input value="Send" type="submit"><input name="clear" value="Slet alt" title="Slet alt" type="reset"></td></tr></tbody></table></form>


Jeg har 2 spørgsmål mere, hvordan laver man sådan noget, så der står 25/500 tegn, hvis han har skrevet 25 tegn?

og 2 spørgsmål er hvordan man laver et link, ligesom når man registrer sig, så får man et bestemt link, man skal klikke ind på. Gad jeg også godt have her. fordi skal bruge denne til at folk skal sende til deres venner, og når de logger ind, står de under ham der sendte linket, på en måde hvis du forstår. Altså et specefik link, de blir sendt videre til hvor de skal registrer sig.. :) mvh jesper kaae
Avatar billede pstidsen Novice
16. juni 2011 - 17:37 #12
<form method="post" action="kontaktformular.php" name="formular">
<table style="width:475px; margin-left:auto; margin-right:auto;">
<tbody><tr><td style="width:100px;">Dit navn:</td><td><input name="ditnavn" style="width:375px;" type="text"></td></tr>
<tr><td style="width:100px;">Din vens navn:</td><td><input name="vensnavn" style="width:375px;" type="text"></td></tr>
<tr><td style="width:100px;">Din email:</td><td><input name="dinmail" style="width:375px;" type="text"></td></tr>
<tr><td style="width:100px;">Din vens email:</td><td><input name="vensmail" style="width:375px;" type="text"></td></tr>
<!--spamfælde begynd--><td><span style="display: none;">Dette felt skal ikke udfyldes: <input name="email" type="text"><br></span><!--spamfælde slut-->
<tr><td>Besked:</td><td align="center"><textarea name="besked" style="width:375px; height:100px" rows="5" cols="40"></textarea></td></tr>
<tr><td colspan="2" align="center"><input value="Send" type="submit"><input name="clear" value="Slet alt" title="Slet alt" type="reset"></td></tr></tbody></table></form>

Her der den foreløbige html kode.
Jeg glemte lige noget i php filen. I linje 34 skal du også huske at skrive $besked et sted. Ellers kommer det som man skriver på hjemmesiden ikke med i mailen. Du kan vælge at slette alt det der står i linje 34-37, så der kun står det man skriver på hjemmesiden. Det er op til dig.

Spørgsmål 2: Hvis nu det specifikke link hedder www.ditdomæne.dk/tilmeld/VENNENS_MAIL så det muligt, men hvis det skal hedde et eller andet ID i stedet for VENNENS_MAIL til sidst, så har jeg ikke udmiddelbart en løsning.

Kigger lige på spørgsmål 1.
Avatar billede pstidsen Novice
18. juni 2011 - 01:08 #13
Spørgsmål et: http://www.dynamicdrive.com/dynamicindex16/limitinput.htm

Hvordan går det? Virker det?
Avatar billede jetobi Juniormester
15. august 2011 - 00:02 #14
det virker ikke, og har fundet en anden løsning, lukket
Avatar billede pstidsen Novice
15. august 2011 - 00:13 #15
Har brugt scriptet massevis af gange. Det virker supergodt.. hvad blev løsningen?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester