Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Artiklar / Titel på artikeln

Kontaktformulär med PHP

Postad 2010-01-23 av Eric Lundberg i sektionen ASP.NET, C#, Okategoriserat med 0 Kommentarer | Läst av: 6375, Betyg: 0%

Förord

PHP kan enkelt användas till utskick av epost. I denna artikel kommer jag visa hur man enkelt gör ett meddelandeformulär. Om det är något du inte förstår kan du läsa "En introduktion till PHP" av Jonas Lundqvist här på pellesoft.
Innehåll
  » PHP och epost
  » Skapa ett formulär
  » lite mer avancerade mail + validering av variabler
  » Slutord
Relaterade artiklar
  » En introduktion till PHP - del 1
  » En introduktion till PHP - del 2
  » En introduktion till PHP - del 3


PHP och epost

PHP har en inbyggd funktion för epost som heter mail(). Vi testar att dra över ett mail!

Skapa en fil och döp den till valfritt namn och lägg upp den på servern.


$to = "john.doe@example.com"; //vem meddelandet ska till
$subject = "Hello World!"; //ämne
$message = "Hello\nWorld!"; //meddelandet i sig \n = new line, radbyte det vill säga


if (mail($to, $subject, $message)) //vi försöker skicka iväg mailet
{
echo "inga problem uppstod!";
}
else
{
echo "problem uppstod!";
}
?>


Öppna filen i webbläsaren. Om det står "inga problem uppstod!", grattis.

Två troliga skäl till att det inte lyckades:
- Kör du från ett webbhotell så tillåts inte epostutskick troligen.
- Om du kör från egen server behöver php.ini konfigureras. I php.ini vid SMTP = localhost, ska localhost bytas ut mot din internetleveratörs SMTP (detta förutsätter att du använder Windows, fungerar annorlunda under *nix). Om du har Telia ska det bytas ut mot smtprelay1.telia.com till exempel.


Skapa ett formulär


Vi vill att meddelandet ska skickas genom ett formulär.













Ämne:
Meddelande:




if (isset($_POST['message']))
{

$to = "john.doe@example.com"; //vem meddelandet ska till
$subject = strip_tags($_POST['subject']); //ämne
$message = $_POST['message']; //meddelandet i sig \n = new line, radbyte det vill säga


if (mail($to, $subject, $message)) //vi försöker skicka iväg mailet
{
echo "Ditt meddelande skickades!";
}
else
{
echo "Problem uppstod!";
}
}
?>


Även om vi har ett mycket enkelt kontaktformulär saknas mycket fortfarande. Vi kan inte se vem som sänt eller vem som det ska hamna hos om vi använder "svara" i mailklienten.


lite mer avancerade mail + validering av variabler


Av många anledningar är det dumt att skicka mail som i exemplet ovan. Vi vet inte vem som skickat eller vem vi ska svara till.

Genom att använda en tredje parameter på mail() kan vi specifiera såkallade headers.

















Din mail:
Ämne:
Meddelande:




if (isset($_POST['message']))
{

$to = "john.doe@example.com"; //vem meddelandet ska till
$subject = strip_tags($_POST['subject']); //ämne
$from = strip_tags($_POST['mail']); //mail
$message = $_POST['message']; //meddelandet i sig \n = new line, radbyte det vill säga
$headers = "From: $from <$from>\r\n" . //vem mailet är ifrån
"Reply-To: $from\r\n" . //vem vid ska svara till
"X-Mailer: PHP/" . phpversion(); //vilken klient som använts när mailet skickades

if (mail($to, $subject, $message, $headers)) //vi försöker skicka iväg mailet, notera att $headers har lagts till
{
echo "Ditt meddelande skickades!";
}
else
{
echo "Problem uppstod!";
}
}
?>


Nu kan vi veta vem som skickat mailet och även kunna svara på detta. Just nu kan man dock skriva vad som helst under namn, även en icke giltig address. Fält kan dessutom lämnas tomma. För att lösa detta så lägger vi till validering av alla variabler.
















Din mail:
Ämne:
Meddelande:




if (isset($_POST['message']))
{

$to = "john.doe@example.com"; //vem meddelandet ska till
$subject = strip_tags($_POST['subject']); //ämne
$from = strip_tags($_POST['mail']); //mail
$message = $_POST['message']; //meddelandet i sig \n = new line, radbyte det vill säga
$headers = "From: $from <$from>\r\n" . //vem mailet är ifrån
"Reply-To: $from\r\n" . //vem vid ska svara till
"X-Mailer: PHP/" . phpversion(); //vilken klient som använts när mailet skickades

$errors = ''; //ger fel om man försöker förlänga en sträng som inte "existerar". Går alternativt
//sätta @ framför $errors vilket stänger av PHPs felrapportering vid just den "händelsen"

//börja validering
if (strlen($message) <= 20) //kolla längden av meddelandet
$errors .= "Ditt meddelande är för kort
"; //.= menar förlängning, alltså '' + "Ditt meddelande är för kort"
if (strlen($subject) <= 2 or strlen($subject) >= 50) //kolla längden av ämnet
$errors .= "Ditt ämne är för kort eller för långt
";
//kolla om mailaddressen är giltig, detta görs genom regular expressions vilket definitivt är överkurs
if (!eregi("^[\x20-\x2D\x2F-\x7E]+(\.[\x20-\x2D\x2F-\x7E]+)*@(([a-z0-9]([-a-z0-9]*[a-z0-9]+)?){1,63}\.)+[a-z0-9]{2,6}$", $from))
$errors .= "Mailaddress ej giltig
";

if (strlen($errors) == 0) //om errors strängen är 0 tecken har 0 fel påträffats, mailet kan skickas iväg
{
if (mail($to, $subject, $message, $headers)) //vi försöker skicka iväg mailet, notera att $headers har lagts till
{
echo "Ditt meddelande skickades!";
}
else
{
echo "Problem uppstod!";

}
}
else
echo $errors;
}
?>


Vi har nu ett fungerade formulär!


Slutord

Detta är skapat mest som exempel och kan förbättras vidare. Till exempel stöd för HTML taggar och captcha. Har försökt skriva koden på ett lättförståeligt sätt för att det ska vara lätt att få en uppfattning hur PHPs mail() funtkion fungerar samt lite om validering.
Upp

0 Kommentarer

Skriv en kommentar på artikeln

Ditt betyg på artikeln



Kommentar:





Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 153
27 952
271 704
1 023
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies