Palautelomakkeen tekeminen kotisivulle PHP:llä

Huom. Alla oleva ohje on yksinkertainen toteutustapa palautelomakkeesta. Ohje on vapaasti kopioitavissa ja muokattavissa mutta käyttäjän on hyvä ymmärtää käytön perusteet ennen lomakkeen käyttöönottoa. Lomake sellaisenaan saattaa olla altis väärinkäytöksille, joten käytön kanssa tulee olla ehdottoman varovainen. Lomaketta ei saa missään nimessä käyttää roskapostin lähettämiseen. Tietoa HTML lomakkeista ja PHP:n lomakeominaisuuksista sekä valmiita, pitkälle kehitettyjä scriptejä vaativampaan käyttöön löytyy alan oppaista sekä internetistä.
Huom 2. Ohje ei sovellu toteuttamiimme, ylläpitosivustollisiin sivustoihin.

Tee muutokset vähintään vihreällä merkittyihin kohtiin.

1. Kopioi seuraava palautelomakeosa palaute-sivullesi (esim. palautelomake.htm):

<form name="form1" method="post" action="lahetetty.php">
<table width="300" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="100">Nimi</td>
<td width="200"> <input name="nimi" type="text" maxlength="50"> </td>
</tr>
<tr>
<td width="100">E-mail</td>
<td width="200"> <input name="email" type="text" maxlength="50"> </td>
</tr>
<tr>
<td valign="top">Palaute</td>
<td><textarea name="palaute" rows="5"></textarea></td>
</tr>
<tr>
<td valign="top">&nbsp;</td>
<td><input type="submit" name="Submit" value="L&auml;het&auml;"></td>
</tr>
</table>
</form>


2. Luo tiedosto lahetetty.php ja kopioi siihen seuraavat rivit:

<?php
$nimi = $_POST['nimi'];

$palaute = $_POST['palaute'];

$email = $_POST['email'];


// Jos kentät ovat tyhjät, ohjataan käyttäjä virhesivulle
if($nimi=="") { header("Location: http://www.omadomain.com/virhesivu.htm"); }
if($palaute=="") { header("Location: http://www.omadomain.com/virhesivu.htm"); }
if($email=="") { header("Location: http://www.omadomain.com/virhesivu.htm"); }

// Siivotaan lähetetyistä tiedoista HTML ja PHP koodi pois, sekä headerinformaation mukana lähetetyt \n ja \r merkit
$nimi = strip_tags($nimi);
if (eregi("\r",$nimi) || eregi("\n",$nimi)){ die("Possible hacking!"); }
$palaute = strip_tags($palaute); 
// tekstikentästä ei karsita merkkejä
$email = strip_tags($email);
if (eregi("\r",$email) || eregi("\n",$email)){ die("Possible hacking!"); }

// Vastaanottajan sähköpostiosoite:
$to = "omanimi@omadomain.com";
// Viestin otsikko
$subject = "Viestin otsikko";
// Muodostetaan viestiosa
$message = "Nimi: ".$nimi."\nE-mail: ".$email."\nPalaute: ".$palaute."\n ";

// Lähetetään tiedot sähköpostina:
mail ($to, $subject, $message,"From: mista@omadomain.com\r\n"."Reply-to: ".$email."\r\n");
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Palaute lähetetty</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
Kiitos! palautteesi on lähetetty.
</body>
</html>


3. Luo virhesivu, esim. virhesivu.htm:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Virhesivu</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
Virhe!
</body>
</html>

4. Siirrä tiedostot palvelimelle. Palautelomake on valmis.

Olkaa hyvä ja ilmoittakaa mahdollisista virheistä tässä ohjeessa niin teemme tarvittaessa korjauksia.



Cgi-palautelomakkeen käsittelijän käyttö

Suosittelemme käyttämään seuraavaa palautelomakkeen käsittelijää:NMS-Formmail
NMS-Formmail sivustolla on kaksi ohjetiedostoa Examples ja Readme. Niissä on runsaasti esimerkkejä ja ohjeita skriptin käyttöönottoon.

Huom. palvelimilla ei toimi tietoturvasyistä formmail.pl, formmail.cgi tai formmail.php nimiset tiedostot, koska hakkerit skannaavat formmail-nimisiä tiedostoja. Nimetkää tiedosto joksikin vaikeasti arvattavaksi, esim. palautelomakexyz.pl. Palautelomakkeen käsittelijä tulee sijoittaa cgi-bin kansioon ja muuttaa CHMOD asetus 755:ksi. Huomioithan että esim. Windows koneen kautta kopioitaessa tiedostojen oikeudet muuttuvat oletuksiksi (644). Oikeuksien muutoksen saa tehtyä useimmilla FTP ohjelmilla.