[PHP] Formularz Kontaktowy


(Animologic) #1

Witam, mają owy skrypt

<?php

// sprawdzamy, czy zmienna $submit jest pusta

if (empty($_POST['submit'])) {

    // wyświetlamy formularz

    echo "

| Treść wiadomości | |
| Imię, nazwisko lub nick | |
| Adres e-mail | |
|   |   |

"; } // sprawdzamy, czy zmienne przesłane z formularza nie są puste elseif (!empty($_POST['tresc']) && !empty($_POST['imie']) && !empty($_POST['email'])) { // jeżeli powyższy warunek jest spełniony tworzona jest wiadomość // zmienna $message zawiera treść wiadomości $message = "Treść wiadomości:\n$_POST[tresc]\nWysłał: $_POST[imie]\ne-mail: $_POST[email]"; // zmienna $header zawiera przede wszystkim adres zwrotny $header = "From: $_POST[imie] <$_POST[email]>"; // funkcja mail() za pomocą której wiadomość zostanie wysłana @mail("adres@domena.pl","Wiadomosc ze strony WWW","$message","$header") or die('Nie udało się wysłać wiadomości'); // wyświetlenie komunikatu w przypadku powodzenia echo "
Wiadomość została wysłana poprawnie!"; } // lub w przypadku nie wypełnienia formularza do końca else echo "Wypełnij wszystkie pola formularza!"; ?> [/code]

http://www.kess.snug.pl/?sid=10&pid=17

Po naciśnięciu na wyślij pokazuje się informacja Nie udało się wysłać wiadomości.

Co trzeba zmienić aby skrypt wysłał wiadomość


(Serion94) #2

@off

co za złodzieje, ukradli mój skrypt i to w wersji beta bo moja miała anty spam a ta nie ma!

@topic

Webserv nie obsługuje, yoyo.pl tak. Sprawdź czy czegoś nie pozmieniałeś. I wpisz swój e-mail.


(athei) #3

Jak nie działa funkcja mail() wbudowana w php spróbuj z klasy PHPMailer http://phpmailer.codeworxtech.com/, a jak jej używać po polsku masz tu http://forum.ovh.pl/showthread.php?t=196


(Animologic) #4

ok. Używałem Webserv'a ale na moim serwie działa. Tylko teraz mam inny problem. Zamiast treści, w mailu pokazują mi się tylko

$header


$message

(athei) #5

Mi tam ten twój kod działa poprawnie.

Treść wiadomości:

blabla

Wysłał: gosc

e-mail: gosc@a.b

(Animologic) #6

chcę dorobić aby te info o wysłaniu, niewysłaniu dopełnieniu pokazywały się nad formularzem, ale pokazuje mi błąd:

-->

<?php

if ((empty($_POST['nick']) or empty($_POST['mail']) or empty($_POST['komunikator']) or empty($_POST['tresc'])) and !empty($_POST['submit'])) {

    // wyświetlamy formularz

    echo "

Imię, Nazwisko lub Nick * Adres e-m@il * Komunikator Treść wiadomości *

"; // lub w przypadku nie wypełnienia formularza do końca echo "Wypełnij wszystkie pola formularza!"; echo "
"; } elseif ((empty($_POST['nick']) or empty($_POST['mail']) or empty($_POST['komunikator']) or empty($_POST['tresc'])) and !empty($_POST['submit'])) { // wyświetlamy formularz echo "
Imię, Nazwisko lub Nick * Adres e-m@il * Komunikator Treść wiadomości *
"; // sprawdzamy, czy zmienne przesłane z formularza nie są puste elseif (!empty($_POST['nick']) && !empty($_POST['mail']) && !empty($_POST['tresc'])) { // jeżeli powyższy warunek jest spełniony tworzona jest wiadomość // zmienna $message zawiera treść wiadomości $message = "Nadawca: $_POST[nick]\nMail: $_POST[mail]\nKontakt: $_POST[komunikator]\nTreść wiadomości:\n$_POST[tresc]\n"; // zmienna $header zawiera przede wszystkim adres zwrotny $header = "From: $_POST[nick] <$_POST[mail]>"; // funkcja mail() za pomocą której wiadomość zostanie wysłana @mail("animologic@gmail.com","Wiadomosc z Animologic WebSite","$message","$header") or die('Nie udało się wysłać wiadomości'); // wyświetlenie komunikatu w przypadku powodzenia echo "
Wiadomość została wysłana!"; } ?>[/code] Pokazuje mi
[code]Parse error: syntax error, unexpected T_ELSEIF in /home/animolg/public_html/localhost/pl/kontakt.php on line 51
czyli

// sprawdzamy, czy zmienne przesłane z formularza nie są puste

	elseif (!empty($_POST['nick']) && !empty($_POST['mail']) && !empty($_POST['tresc'])) {

Mam zamiar dorobić aby pokazywało mi IP Nadawcy, Anty-Spam. Jestem początkującym PHP'owcem i prosiłbym o małą pomoc.


(Dark Smark) #7

Nie wróże Ci za dobrze... :D, jak chcesz nad to warunek z echo daj nad wyświetlaniem formularza.

<?php


    if (empty($_POST['nick']) or empty($_POST['mail']) or empty($_POST['komunikator']) or empty($_POST['tresc'])) {

        // wyświetlamy formularz

        echo '

Imię, Nazwisko lub Nick * Adres e-m@il * '; } ?>


(Animologic) #8

ok, przejdźmy do trudniejszej dla mnie rzeczy.

<?php

if (empty($_POST['submit'])) {

    echo "

Imię, Nazwisko lub Nick *

Adres e-m@il *

Komunikator

Treść wiadomości *

* pole wymagane

"; } elseif (!empty($_POST['nick']) && !empty($_POST['mail']) && !empty($_POST['tresc'])) { $message = "Nadawca: $_POST[nick]\nMail: $_POST[mail]\nKontakt: $_POST[komunikator]\nTreść wiadomości:\n$_POST[tresc]\n"; $header = "From: $_POST[nick] <$_POST[mail]>"; @mail("animologic@gmail.com","Wiadomosc z Animologic WebSite","$message","$header") or die('Nie udało się wysłać wiadomości'); echo "
Wiadomość została wysłana !!
Imię, Nazwisko lub Nick *

Adres e-m@il *

Komunikator

Treść wiadomości *

* pole wymagane

"; } else echo "Wypełnij wymagane pola !!"; ?[/code]

Jak do tego dorobić aby u Mnie w mailu pokazywało się IP gościa piszącego (ew. dodatkowe bajery) :slight_smile:


(Krzkaczor) #9

http://www.google.pl/search?source=ig&h ... lr%3D&aq=f

A co do braku mail, mail działa tylko w linuxach.


(Airborn) #10

jeżeli nie jesteś pewien tego co piszesz, to tego nie pisz, albo zajrzyj chociażby do dokumentacji...


(Krzkaczor) #11

No fakt, chodziło mi raczej o to że domyślnie nie ma / nie działa.


(Exorf) #12

Wszystko zależy od konfiguracji


(Dark Smark) #13

Masz kawałek ode mnie bez innych funkcji takich jak weryfikacja itd z mojego cms, funkcje wywołujesz z 4 parametrami pochodzącymi z formularza, po ich nazwie zrozumiesz jak wywołać.

function wyslij($imie, $nazwisko, $mail, $notka) {


$wiadomosc = " Uzytkownik ".$imie." ".$nazwisko;


$wiadomosc .= " o adresie e-mail ".$mail;


$wiadomosc .= " z adresu ip ".$_SERVER['SERVER_ADDR'];


$wiadomosc .= " napisal wiadomosc o tresci: \n ".$notka;


if (@mail("twojemail@email.coml","Wiadomosc z ".$_SERVER['SERVER_NAME'], $wiadomosc)) {


    echo("Wiadomosc zostala wyslana poprawnie!");


} else {


     echo("Wiadomosc nie zostala wyslana poprawnie, sprobob pozniej!");


}


}

(Animologic) #14

a czasami

$_SERVER['SERVER_NAME']

nie pokazuje IP, hosta Serwera?? bo mi to coś nie działa tak jak powinno. Chodzi mi o usera który pisze do mnie maila


(Dark Smark) #15

Pokazuje sięgnij do dokumentacji. Zresztą jakby dokładniej przeanalizował tą krótką funkcje to byś zorientował się że za IP odpowiada linia

$wiadomosc .= " z adresu ip ".$_SERVER['SERVER_ADDR'];

(Animologic) #16

wciąż nie to. Pokazuje mi IP Serwera, chodzi mi o pokazywanie IP danej osoby. Np. Ty masz IP 77.77.77.75 i chcę widzieć z jakiego IP to było napisane a nie IP Serwer'a

&Edit

OK, już wiem

$_SERVER[REMOTE_ADDR]

Dzięki

&Edit

Chcąc zamienić polskie znaki na zwykłe Ś=S Ł=L Ó=O jaką komendę muszę wpisać ??


(Tymooteusz) #17

Jedno pytanko do Was mam ..

Mam posadzony ten skrypt na serwerze, na którym posadzony jest serwer pocztowy..

Jak zmodyfikować skrypt @mail("twojemail@email.coml" tak aby wiadomości docierały do odbiorcy na tym serwerze lokalnym ?

Poza serwer lokalny wiadomości docierają bez problemów a na local kompletnie nie ... :///

Będę wdzięczny za pomoc


(mawej) #18

Zdefiniuj polskie a następnie litery bez "ogonków" i zamień funkcją str_replace np. tak:

$tresc = "Aąść"; //itd.

$polskie = array("ą", "ć", "ę", "ł", "ń", "ó", "ś", "ź", "ż", "Ą", "Ć", "Ę", "Ł", "Ń", "Ó", "Ś", "Ź", "Ż");

$zastapposlkie = array("a", "c", "e", "l", "n", "o", "s", "z", "z", "A", "C", "E", "L", "N", "O", "S", "Z", "Z");

$tresc = str_replace($polskie, $zastapposlkie, $tresc);