Pomoć oko e mail forme!

Pozdrav svima !

Napravio sam web site za svoje potrebe i sve proslo ok, dok nisam stigao do e mail forme i tu sam zapeo, odnosno uopće neznam kako napraviti e mail formu.
Citao sam mnostvo postova o tome i patio se sa kodovima ali bezuspjesno.
Zato bih molio nekoga tko se u to razumije da pomogne, jednostavno ne znam odakle da krenem.

dizajn same forme postoji na site-u koristen od web template-a ali nije u funkciji, site je :

http://www.opg-kurcinak.hr/kontakt.html

Hvala !

Auu, kod stranice ti je stvarno… ne mogu naći riječ :slight_smile:

Uglavnom, dugme send poziva neku funkciju submit() (dok Clear poziva reset()), a te funkcije nisu nigdje definirane, koliko vidim.
Imaš još neki fajl sa nastavkom .js koji je bio uključen u head-u ?

[quote=“dev_masta”]Auu, kod stranice ti je stvarno… ne mogu naći riječ :slight_smile:

Uglavnom, dugme send poziva neku funkciju submit() (dok Clear poziva reset()), a te funkcije nisu nigdje definirane, koliko vidim.
Imaš još neki fajl sa nastavkom .js koji je bio uključen u head-u ?[/quote]

Kod stranice je katastrofa zar ne ?

Kako koristim web template slijedeće stvari postoje vezane za tu kontakt formu:

U bin folderu :
[b]MailHandler.php

kod je: [/b]

<?php $owner_email = $_POST["owner-mail"]; $headers = 'From:' . $_POST["email"]; $subject = 'A message from your site visitor ' . $_POST["name"]; $messageBody = ""; $messageBody .= '

Visitor: ' . $_POST["name"] . '

' . "\n"; $messageBody .= ' ' . "\n"; $messageBody .= '

Email Address: ' . $_POST['email'] . '

' . "\n"; $messageBody .= ' ' . "\n"; if($_POST['state']!='nope'){ $messageBody .= '

State: ' . $_POST['state'] . '

' . "\n"; $messageBody .= ' ' . "\n"; } if($_POST['phone']!='nope'){ $messageBody .= '

Phone Number: ' . $_POST['phone'] . '

' . "\n"; $messageBody .= ' ' . "\n"; } if($_POST['fax']!='nope'){ $messageBody .= '

Fax Number: ' . $_POST['fax'] . '

' . "\n"; $messageBody .= ' ' . "\n"; } $messageBody .= '

Message: ' . $_POST['message'] . '

' . "\n"; if($_POST["stripHTML"] == 'true'){ $messageBody = strip_tags($messageBody); } try{ if(!mail($owner_email, $subject, $messageBody, $headers)){ throw new Exception('mail failed'); }else{ echo 'mail sent'; } }catch(Exception $e){ echo $e->getMessage() ."\n"; } ?>

U Html u:

Message
Clear Send

I jos postoje neki javascript, a ne znam koja ima veze sa e mailom
zaista neznam kako to editirati da bude u funkciji ?

A zašto petljaš sa javascriptom ako ne znaš…uradio to klasično preko php-a da skontaš e onda upetljaj javascript.

najjednostavnije objašnjenje:

http://www.w3schools.com/php/php_forms.asp

Sad je kako je - ako imaš taj javascript, stavi ga tamo gdje su ti ostali .js fajlovi.

I dodaj u kontakt.html, tamo gdje su svi ostali .js fajlovi izlistani i gdje se pozivaju još i taj,
ovako:
[HTML]

[/HTML]

ovo js/ znači da bi ga trebao staviti u folder js :wink:

huh, sad tek vidim da ne znaš koji je za mail.
e pa ne znam ni ja od ovuda :slight_smile:
pogledaj u kontakt.html u head-u koji su izlistani, a onda pogledaj koje još imaš, a nisu…

edit:
pusti ga nek petlja, nije loša skripta, ima efekte onfocus i onblur, me like.
a možda nešto i nauči…

Samo bih volio malo ispraviti, submit() i reset() metode su vezane uz Form JS objekt i krivo je reći “neku funkciju submit” jer to nije funkcija koja napisana od strane developera teme već nativna funkcija.

U biti je čest primjer submit() metoda. Ona emulira pritiskanje gumba submit. Kako je u nekim situacijama lakše postići submit gumb elementom (ili nekim drugim), umjesto klasičnim , da bi postigli istu funkcionalnost pomoću Javascripta se izvrši naredba.

Dakle, kada korisnik pritisne “Send”, Javascript će izvršit submit() metodu (isto kao da je korisnik pritisnuo ).

Kada korisnik pritisne “Reset”, Javascript će izvršiti reset() metodu (isto kao da je korisnik pritisnuo ).

EDIT: Info

@zicer

Prvo i osnovno, svaki element mora imati action atribut (putanja do skripte koja će izvršiti određenu akciju), a uz to uvijek definiraj i method atribut, vrijednosti su “POST” ili “GET”, GET metoda će prenositi informacije preko URI-ja što može biti problem kod kontakt formulara zbog dugačkih poruka, tako da je moj prijedlog staviti POST metodu.

Dakle,

[html][/html]

Onda ti još kod svih elemenata nedostaje name atribut koji je potreban da bi PHP skripta mogla funkcionirati. Dakle svakom (Name, E-mail, Phone, Message) dodaj name atribut.

Npr.

[html][/html]

Prvo fino sredi HTML kôd formulara :slight_smile:

@zicer - izgleda da sam ti krivo rekao :slight_smile:

@nitko - ok, onda šta, fale atributi za , ovako ?

[HTML][/HTML]

ok, izgleda da sam shvatio :smiley:

I na kraju iskoristimo PHP koji si dobio, samo ga malo sredimo.

Svaki element ima svoj name što znači da mu možemo pristupit pomoću PHP-a. Pretpostavimo da si imenovao onako, tvoje vrijednosti će biti

[php]$_POST[‘name’]
$_POST[‘email’]
$_POST[‘phone’]
$_POST[‘message’][/php]

Malo uredimo onaj kôd

[php]

<?php /* prvo zelimo da su sva polja ispunjena jer inace nema smisla */ if($_POST['name'] != '' && $_POST['email'] != '' && $_POST['phone'] != '' && $_POST['message'] != '') { /* kao sto i sam kaze, u ovu varijablu ide tvoj mail */ $owner_email = "info@opg-kurcinak.hr"; /* pretpostavljam da te ne zanimaju detalji, tako da preskacem ovo, vici ak te zanima :) */ $headers = 'From:' . $_POST["email"]; /* naslov e-maila */ $subject = 'Poruka posjetitelja ' . $_POST["name"]; /* zapocnemo kreirati sadrzaj poruke */ $messageBody = ""; $messageBody .= '

Posjetitelj: ' . $_POST["name"] . '

' . "\n"; $messageBody .= ' ' . "\n"; $messageBody .= '

E-mail adresa: ' . $_POST['email'] . '

' . "\n"; $messageBody .= ' ' . "\n"; $messageBody .= '

Poruka:

\n \n

' . strip_tags($messageBody) . '

' . "\n"; /* omotamo sve u exception (vidi: http://en.wikipedia.org/wiki/Exception_handling ) */ try{ /* pokusamo poslati poruku */ if(!mail($owner_email, $subject, $messageBody, $headers)){ /* ako ne uspije */ throw new Exception('mail failed'); }else{ /* ako uspije, ispisemo da je poslano */ /* ovo je malo ruzno posto ce na ekranu samo pisati to, tako da ti dolje prilazem i jedan fini redirect kojim ces prebaciti korisnika na neku "Poruka poslana" stranicu */ echo 'mail sent'; /* sam makni oznaku komentara i pobrisi red iznad da bi radilo */ /* header("LOCATION: http://www.opg-kurcinak.hr/porukaposlana.html "); */ } }catch(Exception $e){ /* u slucaju da poruka nije uspjesno poslana, ispisat ce se error */ echo $e->getMessage() ."\n"; } } /* korisnik nije ispunio sva polja, vratimo ga nazad! */ else { header("LOCATION: http://www.opg-kurcinak.hr/kontakt.html "); } ?>

[/php]

I trebao bi ti stići mail :slight_smile: probaj, javi. Vrlo lako moguće da sam nešto zaboravio, al 2:04 pa ćemo ispravljat ujutro :slight_smile:

[quote=“nitko”]I na kraju iskoristimo PHP koji si dobio, samo ga malo sredimo.

Svaki element ima svoj name što znači da mu možemo pristupit pomoću PHP-a. Pretpostavimo da si imenovao onako, tvoje vrijednosti će biti

[php]$_POST[‘name’]
$_POST[‘email’]
$_POST[‘phone’]
$_POST[‘message’][/php]

Malo uredimo onaj kôd

[php]

<?php /* prvo zelimo da su sva polja ispunjena jer inace nema smisla */ if($_POST['name'] != '' && $_POST['email'] != '' && $_POST['phone'] != '' && $_POST['message'] != '') { /* kao sto i sam kaze, u ovu varijablu ide tvoj mail */ $owner_email = "info@opg-kurcinak.hr"; /* pretpostavljam da te ne zanimaju detalji, tako da preskacem ovo, vici ak te zanima :) */ $headers = 'From:' . $_POST["email"]; /* naslov e-maila */ $subject = 'Poruka posjetitelja ' . $_POST["name"]; /* zapocnemo kreirati sadrzaj poruke */ $messageBody = ""; $messageBody .= '

Posjetitelj: ' . $_POST["name"] . '

' . "\n"; $messageBody .= ' ' . "\n"; $messageBody .= '

E-mail adresa: ' . $_POST['email'] . '

' . "\n"; $messageBody .= ' ' . "\n"; $messageBody .= '

Poruka:

\n \n

' . strip_tags($messageBody) . '

' . "\n"; /* omotamo sve u exception (vidi: http://en.wikipedia.org/wiki/Exception_handling ) */ try{ /* pokusamo poslati poruku */ if(!mail($owner_email, $subject, $messageBody, $headers)){ /* ako ne uspije */ throw new Exception('mail failed'); }else{ /* ako uspije, ispisemo da je poslano */ /* ovo je malo ruzno posto ce na ekranu samo pisati to, tako da ti dolje prilazem i jedan fini redirect kojim ces prebaciti korisnika na neku "Poruka poslana" stranicu */ echo 'mail sent'; /* sam makni oznaku komentara i pobrisi red iznad da bi radilo */ /* header("LOCATION: http://www.opg-kurcinak.hr/porukaposlana.html "); */ } }catch(Exception $e){ /* u slucaju da poruka nije uspjesno poslana, ispisat ce se error */ echo $e->getMessage() ."\n"; } } /* korisnik nije ispunio sva polja, vratimo ga nazad! */ else { header("LOCATION: http://www.opg-kurcinak.hr/kontakt.html "); } ?>

[/php]

I trebao bi ti stići mail :slight_smile: probaj, javi. Vrlo lako moguće da sam nešto zaboravio, al 2:04 pa ćemo ispravljat ujutro :)[/quote]

Decki hvala na odgovorima!
Pokusao sam napraviti po objasnjenju, ali ocito je da sam negdje napravio gresku u koracima, jer ne radi.
Evo ovako sam napravio:
Ovako izgleda Html kod kod mene

[HTML]

Message
Clear Send
[/HTML]

A ovo je PHP:

[php]<?php
if($_POST[‘name’] != ‘’ && $_POST[‘email’] != ‘’ && $_POST[‘phone’] != ‘’ && $_POST[‘message’] != ‘’) {
$owner_email = "info@opg-kurcinak.hr";

$headers = ‘From:’ . $_POST[“email”];

$subject = 'Poruka posjetitelja ’ . $_POST[“name”];

$messageBody = “”;

$messageBody .= '

Posjetitelj: ’ . $_POST[“name”] . ‘

’ . “\n”;
$messageBody .= ‘
’ . “\n”;
$messageBody .= '

E-mail adresa: ’ . $_POST[‘email’] . ‘

’ . “\n”;
$messageBody .= ‘
’ . “\n”;
$messageBody .= '

Poruka:

\n
\n

’ . strip_tags($messageBody) . ‘

’ . “\n”;

try{

if(!mail($owner_email, $subject, $messageBody, $headers)){

throw new Exception(‘mail failed’);

}else{

echo ‘mail sent’;

}

}catch(Exception $e){

echo $e->getMessage() ."\n";

}

}

else {

header("LOCATION: http://www.opg-kurcinak.hr/kontakt.html ");

}
?> [/php]

Jako slabo se kužim u ovo programiranje, ali kako shvaćam email formu čine tri sastavna elementa 1. Javascript, 2 Php file 3. Html kod na samoj stranici, ako sam upravu, ali jos uvijek ne znam koji javascript od postojećih koje imam je vezan za email formu, jer mozda bas u jscriptu problem ?
Slijedece jscript imam navedene u html u:

	<script src="js/cufon-yui.js" type="text/javascript"></script>
	<script src="js/cufon-replace.js" type="text/javascript"></script>
	<script src="js/NewsGoth_400.font.js" type="text/javascript"></script>
	<script src="js/NewsGoth_700.font.js" type="text/javascript"></script>
	<script src="js/Vegur_300.font.js" type="text/javascript"></script> 
	<script src="js/FF-cash.js" type="text/javascript"></script>

Nisi dodao name atribut i poljima

[quote=“nitko”]
Onda ti još kod svih elemenata nedostaje name atribut koji je potreban da bi PHP skripta mogla funkcionirati. Dakle svakom (Name, E-mail, Phone, Message) dodaj name atribut.

Npr.

[html][/html][/quote]

Ergo,

[php]










Message


Clear
Send


[/php]

Uz to, pazi da ti action atribut daje pravu putanju. Ak je skripta stvarno u bin/ folderu, sve bi trebalo raditi, ali ako je u /php/mysite/lala/bin/ onda ti je i putanja prema PHP skripti kriva.

input tag mora imati name vec ti je napisano u ranijim postovima.

Dakle ako si napisao

  • Value je vrijednost koju prenosis preko post metode, nju ostavi praznu ili je ne navodi nikako kod standardne forme. Kod ove tvoje forme sa javascritpom mora biti navedeno kako jeste sada.

  • Type je vrsta varijable koju prenosis.

  • Name je ime input taga preko koje ces dohvatiti ono sto si poslao…

name=“email” u skripti dohvatis kao $_POST[‘email’] .

[quote=“nitko”]Nisi dodao name atribut i poljima

Ergo,

[php]










Message


Clear
Send


[/php]

Uz to, pazi da ti action atribut daje pravu putanju. Ak je skripta stvarno u bin/ folderu, sve bi trebalo raditi, ali ako je u /php/mysite/lala/bin/ onda ti je i putanja prema PHP skripti kriva.[/quote]

Hvala na odgovoru !

Ovako , napravio sam slijedeće: Posljednji php kod koji si postao sam kopirao u html, sad me zanima dali je onaj php kod koji ide u Mailhandler.php je ispravno napravljen ? A malo mi je zbunjujuće ono o name atribut što si napisao da trebam dodati, ne kuzim gdje u koji dio to ide. Vjerujem da smo blizu rezultata, malo nedostaje.

Dakle ovako, imaš dvije datoteke:

[list]
[:3704lt4m] kontakt.html (tu stoji formular u HTML-u koji piše gore, ovo kaj si i sam citirao zadnje)[/:m:3704lt4m]
[:3704lt4m] mailhandler.php (tu stoji PHP kôd koji će poslati mail, vidi gore)[/:m:3704lt4m][/list:u:3704lt4m]

Sve ti je napisano, ne moraš ništa više dodavat, samo kopiraj :slight_smile:

Ovako sad sam testirao slanje e maila i rezultat je slijedeći:

Upisao sam trazene podatke u web formu i uspjesno poslao, pri slanju mi se otvara stranica

http://opg-kurcinak.hr/bin/MailHandler.php
, gdje pise mail sent, dakle poslano.
Potom sam provjerio na web mailu, mail je stigao ali poruka izgleda ovako:

Posjetitelj: Miroslav

E-mail adresa: [email]mkurcinak@gmail.com[/email]

Poruka:

\n \n

Posjetitelj: Miroslav

E-mail adresa: mkurcinak@gmail.com

Odnosno nema poruke koju sam pisao, u cemu je sad kvaka ?
Znam da vas gnjavim ali ipak smo nesto postigli i puno vam hvala na tome, jos samo da rijesimo ovaj problem sa pristiglim e mailom " bez ispravne poruke"

Dada, to je kad radiš na tuđem kôdu, evo ovak, stavi ovaj PHP kôd u MailHandler.php

[php]<?php
/* prvo zelimo da su sva polja ispunjena jer inace nema smisla */
if($_POST[‘name’] != ‘’ && $_POST[‘email’] != ‘’ && $_POST[‘phone’] != ‘’ && $_POST[‘message’] != ‘’) {

/* kao sto i sam kaze, u ovu varijablu ide tvoj mail */
$owner_email = "info@opg-kurcinak.hr";

/* pretpostavljam da te ne zanimaju detalji, tako da preskacem ovo, vici ak te zanima :slight_smile: */
$headers = ‘From:’ . $_POST[“email”];

/* naslov e-maila */
$subject = 'Poruka posjetitelja ’ . $_POST[“name”];

/* zapocnemo kreirati sadrzaj poruke */
$messageBody = “”;

$messageBody .= "Posjetitelj: " . $_POST[‘name’] . “\n”;
$messageBody .= "Telefon: " . $_POST[‘phone’] . “\n”;
$messageBody .= "E-mail adresa: " . $_POST[‘email’] . “\n”;
$messageBody .= “Poruka: \n”.strip_tags($_POST[‘message’]). “\n”;

/* omotamo sve u exception (vidi: http://en.wikipedia.org/wiki/Exception_handling ) */
try{

/* pokusamo poslati poruku */
if(!mail($owner_email, $subject, $messageBody, $headers)){

/* ako ne uspije */
throw new Exception(‘mail failed’);

}else{

/* ako uspije, ispisemo da je poslano /
/
ovo je malo ruzno posto ce na ekranu samo pisati to, tako da ti
dolje prilazem i jedan fini redirect kojim ces prebaciti korisnika na
neku “Poruka poslana” stranicu */
echo ‘mail sent’;

/* sam makni oznaku komentara i pobrisi red iznad da bi radilo /
/
header("LOCATION: http://www.opg-kurcinak.hr/porukaposlana.html "); */

}

}catch(Exception $e){

/* u slucaju da poruka nije uspjesno poslana, ispisat ce se error */
echo $e->getMessage() ."\n";

}

}
/* korisnik nije ispunio sva polja, vratimo ga nazad! */
else {

header("LOCATION: http://www.opg-kurcinak.hr/kontakt.html ");

}
?>[/php]

To mora raditi. U prosloj verziji je samo bila kvaka sto si stavio

$messageBody .= '<p>Poruka:</p> \n 
 \n <p>' . strip_tags($messageBody) . '</p>' . "\n

umjesto:

$messageBody .= '<p>Poruka:</p> \n 
 \n <p>' . strip_tags($_POST['message']) . '</p>' . "\n

[quote=“igor”]To mora raditi. U prosloj verziji je samo bila kvaka sto si stavio

$messageBody .= '<p>Poruka:</p> \n 
 \n <p>' . strip_tags($messageBody) . '</p>' . "\n

umjesto:

$messageBody .= '<p>Poruka:</p> \n 
 \n <p>' . strip_tags($_POST['message']) . '</p>' . "\n

[/quote]

Greska ispravljena i sad radi super !

Jos jednom hvala na pomoći, ako se nekad sretnemo imate pivce :slight_smile:

S tim da onda treba dodati i Content-type: u headers


Copyright © 2020 WM Forum - AboutContact - Sponsored by: Mydataknox & Webmaster.Ninja