TORU Foorum

Tagasiside/feedback vorm veebilehele

MysticShark - 24.2.2010 15:41

Tere.

Sooviks abikätt, loomaks oma kodulehele tagasiside vormi.
Tegemist siis firmanimi.ee domeeniga ja olen uurinud ja puiurinud seda teemat, aga ei ole ise pihta saanud. Ehkl kellegil sellise teemaga kogemusi ja saaks aidata.

Ei saa selle teenuse tööpõhimõttele pihta hästi. Olen erinevaid HTML koode proovinud ja seal vajalikku muutnud, kuid tulemus ikka null.

Kermit - 24.2.2010 16:07

Tagasiside vorm pole vaid HTML. Reaalse töö teeb PHP.

Hea õpetus:
http://www.kirupa.com/web/php_contact_form.htm

Madis - 25.2.2010 11:42

Minu poolt siis väike abi.
Lihtne tagasisidevorm.

HTML koodi, et panna vorm kuvama lehel siis see. plapal.html body tagide vahele.

Kood:
<table width="450px"> </tr> <tr> <td valign="top"> <label for="first_name">Eesnimi</label>:</td> <td valign="top"> <input type="text" name="first_name" maxlength="50" size="30"> </td> </tr> <tr> <td valign="top""> <label for="last_name">Perekonnanimi:</label></td> <td valign="top"> <input type="text" name="last_name" maxlength="50" size="30"> </td> </tr> <tr> <td valign="top"> <label for="email">Email:</label></td> <td valign="top"> <input type="text" name="email" maxlength="80" size="30"> </td> </tr> <tr> <td valign="top"> <label for="telephone">Telefon:</label></td> <td valign="top"> <input type="text" name="telephone" maxlength="30" size="30"> </td> </tr> <tr> <td valign="top">Sisu:</td> <td valign="top"> <textarea name="comments" maxlength="1000" cols="25" rows="6"></textarea> </td> </tr> <tr> <td colspan="2" style="text-align:center"> <input type="submit" value="Saada"> </td> </tr> </table>

PHP Mootori kood siis

Kood:
<?php if(isset($_POST['email'])) { // EDIT THE 2 LINES BELOW AS REQUIRED $email_to = "email@kuhusaadetaksesiis.ee"; $email_subject = "Your email subject line"; function died($error) { // your error code can go here echo "We are very sorry, but there were error(s) found with the form your submitted. "; echo "These errors appear below.<br /><br />"; echo $error."<br /><br />"; echo "Please go back and fix these errors.<br /><br />"; die(); } // validation expected data exists if(!isset($_POST['first_name']) || !isset($_POST['last_name']) || !isset($_POST['email']) || !isset($_POST['telephone']) || !isset($_POST['comments'])) { died('We are sorry, but there appears to be a problem with the form your submitted.'); } $first_name = $_POST['first_name']; // required $last_name = $_POST['last_name']; // required $email_from = $_POST['email']; // required $telephone = $_POST['telephone']; // not required $comments = $_POST['comments']; // required if(strlen($email_from) < 2) { $error_message .= 'Email on vigane mis sisestasite.<br />'; } if(strlen($first_name) < 2) { $error_message .= 'Eesnimi nimi on vigane või sisestamata..<br />'; } if(strlen($last_name) < 2) { $error_message .= 'Perekonnanimi on sisestamata.<br />'; } if(strlen($comments) < 2) { $error_message .= 'Kirja sisu puudub.<br />'; } if(strlen($telephone) < 2) { $error_message .= 'Telefoni number puudub<br />'; } if(strlen($error_message) > 0) { died($error_message); } $email_message = "Form details below.\n\n"; function clean_string($string) { $bad = array("content-type","bcc:","to:","cc:","href"); return str_replace($bad,"",$string); } $email_message .= "Eesnimi: ".clean_string($first_name)."\n"; $email_message .= "Perekonnanimi: ".clean_string($last_name)."\n"; $email_message .= "Email: ".clean_string($email_from)."\n"; $email_message .= "Telefon: ".clean_string($telephone)."\n"; $email_message .= "Sisu: ".clean_string($comments)."\n"; // create email headers $headers = 'From: '.$email_from."\r\n". 'Reply-To: '.$email_from."\r\n" . 'X-Mailer: PHP/' . phpversion(); @mail($email_to, $email_subject, $email_message, $headers); ?> <!-- include your own success html here -->Kiri edukalt saadetud!i<? } ?>


;)

MysticShark - 25.2.2010 11:56

Hea näha, et leidub veel häid inimesi :) Kuid lugesin läbi sinu saadetud koodid ja leidsin, et minu leht ei vaja eraldi eesnime ja perekonnanime. Võik olla Nimi, E-mail ja Tekst See ehk ei tee asja keeruliseks, aga ise kardan, et ei oska sealt õigeid asju kustutada :)

Ja kui nüüd päris täpselt teaks, et kuhu need panema pean, siis oleksin ju või sees :)

Timukas - 25.2.2010 12:15

Siis peaks nii olema (kui mõni näpukas sisse ei sattunud):

HTML kood, lisa olemasolevale lehele või tee uus.
Kood:
<form action="tagasiside.php" method="post"><table width="450px"> </tr> <tr> <td valign="top"> <label for="first_name">Eesnimi</label>:</td> <td valign="top"> <input type="text" name="first_name" maxlength="50" size="30"> </td> </tr> <tr> <td valign="top"> <label for="email">Email:</label></td> <td valign="top"> <input type="text" name="email" maxlength="80" size="30"> </td> </tr> <tr> <td valign="top">Sisu:</td> <td valign="top"> <textarea name="comments" maxlength="1000" cols="25" rows="6"></textarea> </td> </tr> <tr> <td colspan="2" style="text-align:center"> <input type="submit" value="Saada"> </td> </tr> </table> </form>

PHP Mootori kood siis
See salvesta nimega tagasisisde.php. Nime võid muuta, aga laiend (.php) peab samaks jääma. Kui nime muudad, siis muuda html failis action="..." vastavaks.
Kood:
<?php if(isset($_POST['email'])) { // EDIT THE 2 LINES BELOW AS REQUIRED $email_to = "email@kuhusaadetaksesiis.ee"; $email_subject = "Your email subject line"; function died($error) { // your error code can go here echo "We are very sorry, but there were error(s) found with the form your submitted. "; echo "These errors appear below.<br /><br />"; echo $error."<br /><br />"; echo "Please go back and fix these errors.<br /><br />"; die(); } // validation expected data exists if(!isset($_POST['first_name']) || !isset($_POST['email']) || !isset($_POST['comments'])) { died('We are sorry, but there appears to be a problem with the form your submitted.'); } $first_name = $_POST['first_name']; // required $email_from = $_POST['email']; // required $comments = $_POST['comments']; // required if(strlen($email_from) < 2) { $error_message .= 'Email on vigane mis sisestasite.<br />'; } if(strlen($first_name) < 2) { $error_message .= 'Eesnimi nimi on vigane või sisestamata..<br />'; } if(strlen($comments) < 2) { $error_message .= 'Kirja sisu puudub.<br />'; } if(strlen($error_message) > 0) { died($error_message); } $email_message = "Form details below.\n\n"; function clean_string($string) { $bad = array("content-type","bcc:","to:","cc:","href"); return str_replace($bad,"",$string); } $email_message .= "Eesnimi: ".clean_string($first_name)."\n"; $email_message .= "Email: ".clean_string($email_from)."\n"; $email_message .= "Sisu: ".clean_string($comments)."\n"; // create email headers $headers = 'From: '.$email_from."\r\n". 'Reply-To: '.$email_from."\r\n" . 'X-Mailer: PHP/' . phpversion(); @mail($email_to, $email_subject, $email_message, $headers); ?> <!-- include your own success html here -->Kiri edukalt saadetud! <?php } ?>


[Muudetud: 2.4.2010 Timukas]

Madis - 25.2.2010 12:56

Peaks töötama jah ;)

MysticShark - 25.2.2010 15:07

Hakkab koitma juba :) Aga fail nimega tagasiside.php Kuhu see käima peaks? Et kuhu paigutama peaks selle? Või ei oma tähtsust?

bestgamer - 25.2.2010 15:12

Samasse kausta, kus HTML tagasiside fail asub.

MysticShark - 25.2.2010 16:42

Vabandan, kui dvajan vist siisgi puust ja punaselt ette näidatud kohti, mida pean koodides muutma vastavalt siis meiliaadressitele jne. :)

Timukas - 25.2.2010 16:44

$email_to = "email@kuhusaadetaksesiis.ee"; //emaili aadress, kuhu kirjad saadetakse
$email_subject = "Your email subject line"; //mis on kirja teema

MysticShark - 25.2.2010 17:01

Kas ei pea äkki muytma midagi ka sellel real??:

- include your own success html here -->Kiri edukalt saadetud!i<?

Näitab mulle sellist viga, kui kirja saatma hakkan...

Parse error: syntax error, unexpected '}' in /home/public_html/pages/tagasiside.php on line 65


[Muudetud: 25.2.2010 MysticShark]

Timukas - 25.2.2010 17:32

Proovi
Kood:
<!-- include your own success html here -->Kiri edukalt saadetud!i<?
asendada:
Kood:
Kiri edukalt saadetud! <?php

MysticShark - 25.2.2010 17:36

Parse error: syntax error, unexpected '}' in /home/public_html/pages/tagasiside.php on line 67

Nüüd selline error :)

MysticShark - 25.2.2010 17:41

Sain niipalju hakkama, et näitab, et kiri saadetud, aga kiri miskipärast kohale ikka ei jõua :S

Timukas - 25.2.2010 17:47

Eemalda @ realt "@mail($email_to, $email_subject, $email_message, $headers); " ja kui annab veateate, siis kopeeri see siia. Meiliserver äkki seadistamata.

MysticShark - 25.2.2010 17:58

Arusaamatu lause oli :)

Et kas eemaldan "@" või "@mail($email_to, $email_subject, $email_message, $headers); " Andeks :)
Aga aja kokkuhoiu mõttes... Kui @ märgi kustutasin, siis sama. "kiru on saadetud" aga kirja kohale ei tule.
Kui kustutasin "@mail($email_to, $email_subject, $email_message, $headers); " Siis veakood oli selline:

Parse error: syntax error, unexpected ';' in /home/np35651/domains/grandam.ee/public_html/pages/tagasiside.php on line 62

Vabandan lolluse pärast :) HTML ja PHP pole just mu igapäevatöö :no:

Timukas - 25.2.2010 19:26

Ainult @-i mõtlesin. Aga kuna veatedet polnud, siis vast kõik korras. Igaks juhuks vaata emaili aadress ($email_to) üle, äkki seal viga sees. Ja uuri spämmi kausta ka. Kui need korras, siis minul on ideed otsas. Endal skript töötas ja kiri jõudis kohale. Üks näpukas jäi siiski enne sisse - php koodi 41. real on üleliigne } märk, aga selle sa vist juba avastasid.

MysticShark - 25.2.2010 19:57

Viga oli minu enda tähelepanelikkuses. Nimelt oli meili sisestamisel läinud kogemata hot.ee.ee" Aga nüüd asi toimib...

Sooviksin veel et kui näitab, et "kiri saadetud" siis suunaks 2sec. pärast samale lehele tagasi ka... siis tagasiside.html lehele. On see palju palutud?? :cool:

Ja suurimad tänud Timukas ja Madis:yes:

Timukas - 25.2.2010 20:08

Meta Refresh Tag võiks aidata Link.
Ise lahendaksin teistmoodi - suunaks kohe õigele lehele ja kuvaks seal teadet.
Selleks muuda .php koodi lõpp selliseks:
Kood:
@mail($email_to, $email_subject, $email_message, $headers); session_start(); $_SESSION["teade"] = "Kiri saadetud!"; pärast, muuda õigeks } header("location: tagaside.html.php"); //kuhu suunatakse

Siis html faili laiend muuda ka php-ks. Seega peavad failinimed erinevad olema.
Ja siis viska sobivasse kohta:
Kood:
<?php session_start(); if(isset($_SESSION["teade"])){ echo $_SESSION["teade"]; session_destroy(); } ?>

Ise katsetanud pole, seega võib mõni näpukas sees olla.

MysticShark - 25.2.2010 20:36

Kirja saadab ära, ja refreshib leha ka ära, aga kirja lehele ei tule, nagu kiri saadetud oleks...??

Timukas - 25.2.2010 21:03

Endal töötas kenasti. Kas kasutasid php skripti või meta refreshi? Ja kas suunab tagasisde vormi lehele?

MysticShark - 26.2.2010 01:58

Tänud. Sain hakkama ja kõik toimib täpselt nii, nagu tahtsin. PHP teema hakkab huvitavana tunduma. :) Igatahes suured tänud abistajatele.

Huvitaks veel ainult see, et kuidas teksti, mis kuvab, et kiri saadetud muuta punaseks?? :)

Timukas - 26.2.2010 10:01

Kood:
<span style="color:red;">Kiri saadetud!</span>

xrip55 - 2.4.2010 19:19

Heii. teen selle timuka teise koodi järgi. aga ei tule mul saada nuppu .. MIKS??

Timukas - 2.4.2010 19:37

Mõtled koodi sellest postitusest? Php osas olid vead sees, parandasin need nüüd ära. Kui oled ise midagi juurde kirjutanud (või kasutanud siin teemas pakutud hilisemaid ideid), siis võiksid koodi näidata (soovitavalt pane failina kaasa, teema niigi pikk).

xrip55 - 2.4.2010 19:44

Niimoodi kirjutas: Timukas  
Mõtled koodi sellest postitusest? Php osas olid vead sees, parandasin need nüüd ära. Kui oled ise midagi juurde kirjutanud (või kasutanud siin teemas pakutud hilisemaid ideid), siis võiksid koodi näidata (soovitavalt pane failina kaasa, teema niigi pikk).

jah seda ma mõtlesingi.
Ei ole midagi muud kasutanud aga eks ma nyyd proovin uuest. aga tänan muidu