Eli haluaisin tehdä nettisivuilleni myös html-lomakkeen (tai se minulla jo on), joka php-sovelluksena lähettäisi meiliä haluttuun osoitteeseen. Nyt osaan tehdä vain sen, että se lähettää meiliä osoitteeseen jonka olen määritellyt valmiiksi. Lomakkeessa pitäisi pystyä myös valitsemaan haluaako evästeen, joka muistaisi lähettäjän e-mail osoitteen. Olen tehnyt sen check-boxina, eli ruksaamalla check-boxin lähettäjä valitsee itse, haluaako evästeen käyttöön. En ole yrityksistä huolimatta saanut hommaa toimimaan. Pystyykö kukaan auttamaan? Php.netin sivuilta en ole oikein koostunut mitään, kun tuo englannin kieli on hakusessa.
itselle jäänyt tällänen sivusto mieleen php/muista ohjelmointikielistä http://www.ohjelmointiputka.net/
Ensin pitäisi tehdä <form>-tagilla kenttä, jonka sisältö lähetetään POST (tai vaihtoehtoisesti GET) tavalla. Osaatkin jo tehdä kentän, mutta tässä nyt esimerkki <form method="POST" action="sephpsivumitäaiotkäyttää.php"> <input type="text" size="49" name="emailosoite"> Sitten seuraavan PHP-sivun (tässä tapauksessa sephpsivumitäaiotkäyttää.php) täytyisi ottaa vastaan kenttä "emailosoite". Saat sen tallennettua muuttujaan näin. $email_osoite = $_POST['emailosoite']; ja sitten voitkin varmaan käyttää mail() funktiota eli mail($email_osoite,"Haluamasi otsikko","Haluamasi viesti"); http://php.net/manual/en/function.mail.php
Periaattessa tuo on aika yksinkertaista. Jos lomakkeessa jossain pitää antaa kohde spostiosoite, niin voit laittaa lomakkelle <form> tagien väliin esim. <INPUT TYPE="TEXT" NAME="sposti"> joka tekee tekstikentän johon osoite voidaan laittaa. Lomakkeen vastaanottavasta php tiedostossa pitäisi näkyä tuon jälkeen '$sposti' niminen muuttuja jossa on tuohon tekstikenttään syötetty arvo, tässä tapauksessa sähköposti osoite. Muuttuja voidaan puolestaan sijoittaa lähetys tietoihin, esim. mail() funktioon tai mitä sitten käyttääkään. Siis periaatteessa, voi vähän riippua palvelun tarjoajasta voiko tuon tehdä noin vai pitää tehdä vaikeamman kautta.
-------------------------------------------------------------------- LAITAN TÄMÄN NYT VAAN TÄHÄN JOS JOTAKUTA KIINNOSTAA TUTKIA JA YRITTÄÄ PÄHKÄILLÄ. TÄMÄ ON TÄYSIN RAAKILE, JOTEN ÄLKÄÄ ÄLLISTYKÖ. En ole osannut oikein ratkaista tuota cooki-ominaisuutta, tai lähellekkään, joten jos joku haluaa sitä katsoa, niin kiiitos vain. --------------------------------------------------------------------- <!-- tästä alkaa tuo form-ominaisuudet kattava sivu --> <html> <head> <meta name="GENERATOR" content="Microsoft FrontPage 6.0"> <meta name="ProgId" content="FrontPage.Editor.Document"> <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"> <title>New Page 13</title> </head> <style> body {SCROLLBAR-ARROW-COLOR: #222222; SCROLLBAR-BASE-COLOR: #99CCCC} </style> <body> <form method="post" action="palautekasittely3.php"> <p align="justify"> </p> <p align="justify"><font face="Lucida Sans Unicode">Etunimi <input name="Etunimi" size="20" maxlength="20"> <input type="checkbox" name="evaste" value="<?php echo $_COOKIE['Meili']; ?>">Muista sähköpostiosoitteeni<br> Sukunimi <input name="Sukunimi" size="22" maxlength="30"> <br> E-mail <input name="Email" size="24" maxlength="50"> <br> Otsikko</font> <input name="Otsikko" size="26" maxlength="30"> </p> <p><font face="Lucida Sans Unicode">Palaute</font><br> <textarea name="Teksti" cols="50" rows="5"> --------------------------------------------------------------------- <!-- Tästä alkaa php-osuus --> <html> <head> <meta name="GENERATOR" content="Microsoft FrontPage 6.0"> <meta name="ProgId" content="FrontPage.Editor.Document"> <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"> <title>New Page 13</title> </head> <body> <?php // Palautelomakkeen käsittelijä - versio 2005-04-06 if (eregi("palautelomake3.php", $_SERVER['HTTP_REFERER'])) { // OK } else { exit("Lomake lähetetty palvelimen ulkopuolelta."); } $Etunimi = $_POST['Etunimi']; $Sukunimi = $_POST['Sukunimi']; $Email = $_POST['Email']; $Otsikko = $_POST['Otsikko']; $Teksti = $_POST['Teksti']; $Meili = $_POST['Meili']; setcookie("Meili", $Meili, time()+60*60*24*30); if (strlen($Etunimi) <2) { exit ("Et antanut etunimeäsi."); } elseif (strlen($Etunimi) >20) { exit ("Etunimen pituus on rajoitettu 20 merkkiin."); } elseif (strlen($Sukunimi) <2) { exit ("Et antanut sukunimeäsi."); } elseif (strlen($Sukunimi) >30) { exit ("Sukunimen pituus on rajoitettu 30 merkkiin."); } elseif (strlen($Email) <5) { exit ("Et antanut sähköpostiosoitettasi."); } elseif (!ereg("@", $Email)) { exit ("Antamasi sähköpostiosoite on virheellinen."); } elseif (strlen($Email) >50) { exit ("Sähköpostiosoitteen pituus on rajoitettu 50 merkkiin."); } elseif (strlen($Otsikko) <3) { exit ("Et kirjoittanut viestillesi otsikkoa (min. 3 mrk)"); } elseif (strlen($Otsikko) >30) { exit ("Otsikon pituus on rajoitettu 30 merkkiin."); } elseif (strlen($Teksti) <10) { exit ("Et kirjoittanut palautteeseen tekstiä (min. 10 mrk)"); } elseif (strlen($Teksti) >1000) { exit ("Palaute-tekstin pituus on rajoitettu 1000 merkkiin."); } $etnimi = strip_tags($Etunimi); $sknimi = strip_tags($Sukunimi); $sahkopos = strip_tags($Email); $otsik = strip_tags($Otsikko); $emailosoite = "omeosoitteeni@jossain.fi"; $ip = $_SERVER['REMOTE_ADDR']; $ipkaksi = gethostbyaddr($_SERVER['REMOTE_ADDR']); $aika = date('d.m.Y H:i:s'); mail("$emailosoite", "$otsik"," Palaute - $otsik Palaute jätetty: $aika Etu- ja Sukunimi: $etnimi $sknimi Sähköposti: $sahkopos Viesti: $Teksti IP-osoite: $ip 2. IP-osoite: $ipkaksi ","From: $sahkopos"); print ("Sähköpostia lähetettiin osoitteeseen " . $emailosoite); ?> <br> <br> Palaa edelliselle sivulle <a href="palautelomake3.php">tästä</a> </body> </html> </body> </html>
Luulenpa vaan taas, että on tässä osa suomalaista itsekkyyttä. Ei haluta antaa eteenpäin meidän osaamista. - Me ollaan....
Olen päässyt jo niin pitkälle, että kaikki muu toimii paitsi evästen tuhoaminen. Mikä koodissani mättää: header("Location: etusivuni_lomake.php"); setcookie("Email", "", time()); ----------------------------------------------------------------------- <?php setcookie("Email", "", time()-10); header("Location: etusivuni_lomake.php"); header("Cache-Control: no-cache, must-revalidate"); ?> Kokeilin tämmöistäkin, mutta ei pelitä.