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"> </td>
<td><input type="submit" name="Submit" value="Lähetä"></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.