<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE artikkel PUBLIC "-//infoweb.ntnu.no//DTD Infoweb 1.0 //NO" "http://infoweb.ntnu.no/infoweb.dtd">
<artikkel spraak="no">

<tittel>Hvordan sende mail fra en webside</tittel>
<forfatter>arnesen</forfatter>
<sammendrag>Det er mulig å få websider til å sende mail, dette er liten innføring i hvordan du kan få PHP til gjøre dette for deg.</sammendrag>

<lenker>	
	<ekstern uri="http://www.php.net/manual/en/ref.mail.php">http://www.php.net/manual/en/ref.mail.php</ekstern>
	<ekstern uri="http://www.php.net/manual/en/function.mail.php">http://www.php.net/manual/en/function.mail.php</ekstern>
</lenker>

<hoveddel>

<os2>Hvordan bruke php til å sende mail fra en webside</os2>

  <avsnitt>Hvis man for eksempel skal lage et webbasert bestillingsskjema
  er det ofte greit å få skjemaet til å sende en bekreftelse eller
  bestilling på mail. Her følger en rask, liten innføring i hvordan du kan
  få til dette.</avsnitt>
  
  <avsnitt>Aller først må du ha en html-side med et sendeskjema</avsnitt>

 <os3>mail.html</os3>

  <kode>
   <tegn symbol="#60"/>form method="post" action="mail.php"<tegn symbol="#62"/>
    <tegn symbol="#60"/>textarea name="body"<tegn symbol="#62"/><tegn symbol="#60"/>/textarea<tegn symbol="#62"/>
    <tegn symbol="#60"/>input type="submit" name="submit" value="send"/<tegn symbol="#62"/>
   <tegn symbol="#60"/>/form<tegn symbol="#62"/>
  </kode>

  <avsnitt>Skjemaet over videresender informasjon videre til
  <uthev>mail.php</uthev>, som tar seg av selve sendingen av
  mailen.</avsnitt>
  
 <os3>mail.php</os3>

  <kode>
  <tegn symbol="#60"/>?php
  // konfigurasjon
  $to="s.sprett@ntnu.no";
  $subject="automagisk mail fra webmailsendeskjemaet mitt";

  // send mailen
  if (mail($to, $subject, $_POST['body'])) {
    print ( "Følgende mail ble levert til $to : \n" .
            "Subject: $subject \n" .
	    "Melding: $_POST['body']"
	    );
  } 

  else {
   print ( "En feil oppstod ved sending av mail.. trykk back og prøv på ny.\n");
  }
  ?<tegn symbol="#62"/>
  </kode>
		
  <avsnitt><uthev>To</uthev> og <uthev>Subject-headere</uthev> er hardkoda (altså skrevet inn direkte av deg)
  for å passe på at bruker ikke får sendt mail andre steder enn dit vi
  vil. Dette er utrolig viktig, da misbruk av headere kan føre til at
  phpkoden vår sprer spam.</avsnitt>
		
    <os3>Muligheter for forbedring</os3>
		
  <avsnitt>er mange. Det jeg prøver å få frem er hvor viktig det er å
  begrense mulighetene brukeren har til å utnytte systemet. Forslag til
  endringer: PHP sin <uthev>mail()</uthev> har muligheten til å legge til
  ekstra headere:</avsnitt>

<kode>
mail( $to, $subject, $_POST['body'], 
      "From: Mitt webskjema <tegn symbol="#60"/>$brukernavn@$SERVER_NAME<tegn symbol="#62"/>\n" .
      "X-Originating-IP: $REMOTE_ADDR\n"
      );</kode>

  <avsnitt><uthev>$brukernavn</uthev> bør typisk byttes ut med gyldig
  brukernavn.</avsnitt>
  
  <avsnitt><uthev>mail()</uthev> kan legge til options til sendmail, se
  <uthev>man sendmail</uthev>.</avsnitt>

  <avsnitt>Man kan begrense hvilke ipadresser som får lov til å sende mail
  via skjemaet. Se eksempler på <ekstern
  uri="http://www.php.net/" tittel="http://www.php.net/"/>.</avsnitt>

    <os3>Konvertering fra FormMail.pl</os3>

  <avsnitt>Man må altså lage en mottakerdel som tar mot variablene fra
  formen, skriver ut de på en oversiktlig og fin måte, og sender hele
  greia med <uthev>mail()</uthev>. Det anbefales å skrive egne script for
  hver side. Mer generiske løsninger er lettere å misbruke.</avsnitt>

</hoveddel>
</artikkel>
