Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Formularz kontaktowy..
Forum PHP.pl > Forum > Przedszkole
grzyweczka
Witam!
Mam swoją stronkę www i chciałbym umieścić na niej formularz kontaktowy, który wysyłał by meile do mnie na mojego meila. Takie rozwiązanie znacznie ułatwia kontakt z osobami odwiedzającymi stronkę, bo mało kto uzywa Outlock'a i gdy widzi takie rozwiązanie po prostu nie pisze.. sad.gif
Próbowałem wielu różnych opcji, ale nie moge sobie z tym jakoś poradzić.
Np.znalazłem taki oto formularz do zamieszczenia na stronie:
Kod
<?
   if ($_POST[check]=="1")
  
   {
   $paczka="Imie: $_POST[imie]
   Nazwisko: $_POST[nazwisko]
   E-mail: $_POST[email]
   Telefon / Faks: $_POST[telfax]
   Miasto: $_POST[miasto]
  
   Tresc:
   $_POST[tresc]
   ";
  
   mail("adres-email@firma.pl", "List z serwisu www", $paczka);
  
   $potwierdzenie="Dziękuję za przesłanie informacji";
   }
   else
   {
   $potwierdzenie="";
   }
  
  
  
   ?>
  
   <html>
   <head>
   <meta http-equiv="Content-type" content="text/html; charset=iso-8859-2">
   <style type="text/css">
   <!--
  
   body {
   font-family: sans-serif;
   }
  
   .tytul {
   background-color: #cccccc;
   text-align: center;
   font-size: 16px;
   font-weight: bold;
   }
  
   .opis {
   background-color: #dddddd;
   text-align: right;
   font-size: 12px;
   }
  
   .pole {
   background-color: #eeeeee;
   text-align: center;
   font-size: 12px;
   }
  
   .przyciski {
   background-color: #cccccc;
   text-align: center;
   font-size: 16px;
   font-weight: bold;
   }
  
   .opis {
   font-size: 12px;
   font-weight: bold;
   }
   -->
   </style></head>
   <body>
  
   <form action="index.php" method="post">
  
   <p class="potw"><? echo $potwierdzenie; ?></p>
  
   <table cellspacing="2" cellpadding="5" border="0">
   <tr><td colspan="2" height="25" class="tytul">Formularz kontaktowy</td></tr>
   <tr><td class="opis">Imię</td><td class="pole"><input type="text" name="imie" value="" size="35"></td></tr>
   <tr><td class="opis">Nazwisko</td><td class="pole"><input type="text" name="nazwisko" value="" size="35"></td></tr>
   <tr><td class="opis">E-mail</td><td class="pole"><input type="text" name="email" value="" size="35"></td></tr>
   <tr><td class="opis">Telefon / Faks</td><td class="pole"><input type="text" name="telfax" value="" size="35"></td></tr>
   <tr><td class="opis">Miasto</td><td class="pole"><input type="text" name="miasto" value="" size="35"></td></tr>
   <tr><td colspan="2" class="tytul"></td></tr>
   <tr><td width="100" class="opis" valign="top">Opisz co, na kiedy potrzebujesz przetłumaczyć</td>
   <td class="pole"><textarea name="tresc" cols="30" rows="10"></textarea></td></tr>
  
   <tr><td colspan="2" class="przyciski"><input type="hidden" name="check" value="1"><input type="submit" value="Wyślij"><input type="reset" value="Wyczyść"></td></tr>
  
   </table>
  
   </form>
  
   </body>
   </html>


Wkleiłem to do notatnika, zmieniłem nazwę na abc.php, adres "adres-email@firma.pl" na swój "abc@o2.pl" i umieściłem na serwerze, który opłacam.
Plik jest tutaj: abc.php
Jednak kiedy wchodzę tam pojawia sie formularz, ale po wypełnieniu i daniu "Wyślij" wywala mi, iż nie ma takiej strony, nie istnieje.. sad.gif Nie wiem o co chodzi. A z tego co widzę to werwer w ogóle zmienia kod źródłowy strony. Bo na stronie kiedy daje "pokaż źródło" jest inny (sprawdźcie sami), ale kiedy edytuję plik na serwerze za pomocą CuteFTP, którego używam, plik ma taki kod jak wpisałem wcześniej.. Nic z tego nie rozumiem.
Próbowałem również z dwoma różnymi plikami, nie pamietam już jak wyglądały, skladały się z plików: contact.html oraz contact.php. Kiedy wypełniałem formularz (z html'a) i dawałem wyślij, po prostu jakby strona sie zawieszała i nic sie nie działo. Przycisk widać, iż sie "nacisnął" i tyle; wszystko stało w miejscu.
Prosił bym Was o pomoc, bo taki formularz to fajna rzecz; a kiedy szukam rozwiązań po różnych forach i próbuję je zastosować to niestety efekt jest właśnie taki.

Serwer posiadam na WebParku, płatny, Moja Strona WWW.
Adres stronki: -->
W informacjach pisze, iż konto posiada obsługę php:
Cytat
Język programowania dynamicznych stron - PHP Zaawansowany

Ale pisze, iż funkcja meil została zmieniona:
Cytat
Korzystając z funkcji Mail wolno wysyłać e-maile tylko z adresów przypisanych do danego konta w portalu WP (adres główny i wszystkie aliasy).
Ograniczenie to zapobiega podszywaniu się pod innych użytkowników (np. w celu wysyłania „spamu”).Wywołanie funkcji z adresem e-mail nie przypisanym do konta w portalu WP spowoduje wygenerowanie komunikatu błędu - o użyciu niedozwolonego adresu e-mail.
Komunikat będzie zawierał listę adresów, z których można wysłać email.
Limit wysyłanych maili to 10000 miesięcznie.

Nie za bardzo rozumiem, używam poczty na o2, ale nawet nie dostaję komunikatu żadnego o niedozwolonym adresie. Ale próbowałem też z pocztą na wp, przypisaną do konta - efekty są takie same jak opisałem wyżej.

Proszę o pomoc.. będę wdzięczny za wszelką pomoc..
Pozdrawiam, Artur
nospor
przeciez sam mowisz dla forma by lecial do index.php
<form action="index.php"

jak chcesz by lecial do abc to daj:
<form action="abc.php"
grzyweczka
Zmienilem. Wpisałem coś do formularza, dałem wyślij, i dostalem:

Cytat
Fatal error: Unknown function: mail() <!-- [256][2134+15]-->. Informacje o dostępnych funkcjach PHP uzyskasz pod adresem <A href="http://webpark.pl/pomoc.html?fid=13">http://webpark.pl/pomoc.html?fid=13</A> in /TEMP/abc.php on line 15
pyro
  1. <form action="index.php" method="post">


zamień na
  1. <form action="" method="post">



i tutaj:
  1. <?php
  2. mail("adres-email@firma.pl", "List z serwisu www", $paczka);
  3. ?>


zamien adres-email@firma.pl na swoj email, jak sie nic nie pokazuje to po '<?php' daj error_reporting(E_ALL);

@down, dziękuję, już poprawiłem ;]
nospor
Cytat
Zmienilem. Wpisałem coś do formularza, dałem wyślij, i dostalem:
No to zrob co napisali!
http://webpark.pl/pomoc.html?fid=13&ticaid=6669a
i jak wol napisane ze MOJA WWW nie ma mail smile.gif

Cytat
<form action="index.php" method="post">


zamień na
HTML
<form action="index.php" method="post">

@pyro nie ma to jak zmiana z tego samego na .... to samo winksmiley.jpg
pyro
na stronie pomocy jest napisane, sie czytać naucz winksmiley.jpg

mail MojaWWW | FirmaWWW
- +

pewnie masz konto MojaWWW, gdzie jest minus, czyli funkcja niedostepna

@up, byles szybszy winksmiley.jpg
grzyweczka
Serwer płatny i bez możliwości pisania meili z formularza..:/
Dzięki za pomoc więc..smile.gif
Szkoda, że oplaciłem kilka dni temu na rok, bo bym wybrał jakiś inny.
Jeszcze raz dziekuję za wyjasnienie tematu..smile.gif
nospor
Skorzystaj z klasy PHPMailer
Ona nie korzysta z mail, tylko z Twojego konta poczty
grzyweczka
Ściągnąłem to dla wersji PHP 4, bo na Webparku pisze, iż ma php 4.4.1.
Ale nie mam pojęcia co z tym dalej zrobić.. szukam po Google, ale nie moge znaleźć nic co by mi ułatwiło sprawę i naprowadziło co dalej mam z tymi wszystkimi teraz plikami zrobić..
Wrzucić na serwer..?
Gdzie tam wpisuję cokolwiek, by meila szły z mojego konta i na moje konto??
nospor
kurcze ale wykaz sie samodzielnoscia, naucz sie czytac...
wchodzisz na strone phpmailer http://phpmailer.codeworxtech.com/index.php i tam masz:
INSTALL
EXAMPLES
TUTORIAL
PROPERTIES
nic wiecej do szczescia ci nie potrzeba. Musi to przeczytac, przeanalizowac i pomalu robic to co napisali. A jak nie wychodzi z kodem to dopiero walic na forum
grzyweczka
Czytać umiem.. po angielsku średniawo..
Dlatego poprosiłbym jeszcze o kilka wskazówek..
Wrzuciłem na serwer te pliki:
class.phpmailer.php
class.pop3.php
class.smtp.php
phpmailer.lang-pl.php

Teraz edytuję plik: class.phpmailer.php

I nie wiem co mam wpisać tu:


/**
* Sets the From email address for the message.
* @var string
*/
var $From = 'root@localhost';

Mam to tak zostawić? Czy wpisac tu swój adres?
---

/**
* Sets the From name of the message.
* @var string
*/
var $FromName = 'Root User'

Tutaj też zmieniać coś?
---

/**
* Sets the Subject of the message.
* @var string
*/
var $Subject = '';

Tutaj jak rozumiem powinien się znaleźć temat wiadomości, ale chciałbym by tematem było to co ktoś wpisze w formularzu, a jak ja coś wpiszę to pewnie zawsze by było to samo, tak?
---

/**
* Sets the Body of the message. This can be either an HTML or text body.
* If HTML then run IsHTML(true).
* @var string
*/
var $Body = '';

Tutaj przecież również powinno być to, co ktoś wpisze w formularzu, a nie to co wpiszę ja; jak tego dokonać by z gotowego formularza te dane się tu jakoś powstawiały?
---

/**
* Method to send mail: ("mail", "sendmail", or "smtp").
* @var string
*/
var $Mailer = 'smtp';

Tu dałem smtp, bo tak używa o2.
---

/**
* Sets the path of the sendmail program.
* @var string
*/
var $Sendmail = '/usr/sbin/sendmail';

Tego w ogóle nie rozumiem; jaki program? Ktoś musi mieć coś zainstalowane? Jest cos na serwerze o2? Z kąd mam wiedzieć gdzie i jaka jest ścieżka do niego?
---

/**
* Sets the SMTP hosts. All hosts must be separated by a
* semicolon. You can also specify a different port
* for each host by using this format: [hostname:port]
* (e.g. "smtp1.example.com:25;smtp2.example.com").
* Hosts will be tried in order.
* @var string
*/
var $Host = 'poczta.o2.pl';

Tu wpisałem: poczta.o2.pl (bo taki jest adres smtp o2)
---

/**
* Sets connection prefix.
* Options are "", "ssl" or "tls"
* @var string
*/
var $SMTPSecure = "ssl";

Dałem ssl, bo takie zabezpieczenie ma o2.
---
/**
* Sets SMTP authentication. Utilizes the Username and Password variables.
* @var bool
*/
var $SMTPAuth = true;

/**
* Sets SMTP username.
* @var string
*/
var $Username = 'bigboos';

/**
* Sets SMTP password.
* @var string
*/
var $Password = 'xxx';

False zmieniłem na true; wpisałem username swoje z o2, oraz hasło.
---

No i co dalej?
Nie ma tam na stronie żadnego przykladu jak stworzyć jakiś plik html, lub php, z formularzem, który zbierze informacje i to wszystko wyśle.. sad.gif
Jak dla mnie, a na php się nei znam zupełnie, jest to wszystko dosyć skomplikowane.. Dlatego prosze o troszkę wyrozumiałości, choć dla Was to jakieś przymulanie.. sad.gif A ja naprawdę chciałbym mieć ten formularz na stronie.. smile.gif Poza tym to forum jako jedyne zaczęło się interesować moim problemem, bo pisałem na dwóch innych gdzie nikt nie odpisał od zeszłego piątku.. sad.gif
Dzięki za wszelkie wskazówki, czas, wyrozumiałość i rady.. smile.gif



Zrobiłem też plik php testujący o nazwie abc.php, po odpaleniu nie mam błędów tylko #; możecie sprawdzić..smile.gif
nospor
plik z klasą masz zostawic w spokoju. Nie mozesz go edytowac. Masz go uzyc w swoim skrypcie.
Masz podane przyklady:
http://phpmailer.codeworxtech.com/index.php?pg=examples

W paczce co sciagasz tez powinien byc katalog examples z przykladami. Nic tylko skorzystac.
Ja rozumiem ze mozna czegos nie rozumiec, ale pliki z przykladami dla przyzwoitosci mozna by przejrzec

ps:
Cytat
Czytać umiem.. po angielsku średniawo..
Ale ja ci po polsku napisali ze nie masz funkcji mail i dali ci linka do przejrzenia po polsku - to tez na forum leciales, wiec angielskim sie nie zaslaniaj winksmiley.jpg
grzyweczka
Cytat
dali ci linka do przejrzenia po polsku

Linka to mi dali dzięki Waszej pomocy, bo bez tego bym go nie zobaczył..
Zmyliło mnie to, że na stronie mają napisane, iż php jest zaawansowane, tylko na funkcja została zmieniona..:/

A w tych przykładach na stronie nie ma nic jak stworzyć plik php z formularzem..sad.gif
Cytat
// Now you only need to add the necessary stuff
$mail->AddAddress("josh@site.com", "Josh Adams");
$mail->Subject = "Here is the subject";
$mail->Body = "This is the message body";

Ale to nie ja mam wpisać przecież tylko ktoś kto wypełni formularz.. który nie wiem nawet jak stworzyć..sad.gif
nospor
no bo do tych kodow masz wstawic dane z forma. Tak jak to robiles z mail:
  1. <?php
  2. $paczka="Imie: $_POST[imie]
  3.  Nazwisko: $_POST[nazwisko]
  4.  E-mail: $_POST[email]
  5.  Telefon / Faks: $_POST[telfax]
  6.  Miasto: $_POST[miasto]
  7.  
  8.  Tresc:
  9.  $_POST[tresc]
  10.  ";
  11. ?>

Tak samo masz dac tu:
  1. <?php
  2. $mail->AddAddress($_POST['email'], $_POST['imie'].' '.$_POST['nazwisko']); 
  3. $mail->Subject = "TWOJ TEMAT nie wiem czy masz go w formie"; 
  4. $mail->Body = $_POST['tresc'];
  5. ?>

I uzywaj wlasciwego bbcode
grzyweczka
Zrobiłem dwa pliki, tak jak w przykladach:
mail.inc.php oraz mail_test.php
Pierwszy:
require("class.phpmailer.php");

Kod
class MyMailer extends PHPMailer {  
     // Set default variables for all new objects  
     var $From     = "bigboos@o2.pl";  
     var $FromName = "Arturro";  
     var $Host     = "poczta.o2.pl";  
     var $Mailer   = "smtp";                         // Alternative to IsSMTP()  
     var $WordWrap = 75;  
     var $Username = "bigboos";
     var $Password = "xxx";

     // Replace the default error_handler  
     function error_handler($msg) {  
         print("My Site Error");  
         print("Description:");  
         printf("%s", $msg);  
         exit;  
     }  
  
     // Create an additional function  
     function do_something($something) {  
         // Place your new code here  
     }  
}


Drugi:

Kod
require("mail.inc.php");  
  
// Instantiate your new class  
$mail = new MyMailer;  
  
// Now you only need to add the necessary stuff  
$mail->AddAddress("bigboos@o2.pl", "Artureczek");  
$mail->Subject = "Here is the subject";  
$mail->Body    = "This is the message body";  
  
if(!$mail->Send())  
{  
    echo "There was an error sending the message";  
    exit;  
}  
  
echo "Message was sent successfully";


Ale w efekcie dostałem tylko:
Cytat
require("mail.inc.php"); // Instantiate your new class $mail = new MyMailer; // Now you only need to add the necessary stuff $mail->AddAddress("bigboos@o2.pl", "Artureczek"); $mail->Subject = "Here is the subject"; $mail->Body = "This is the message body"; if(!$mail->Send()) { echo "There was an error sending the message"; exit; } echo "Message was sent successfully";


Także to by było na tyle..sad.gif Nie chce mi się już kombinować, bo nie mam pojęcia o co chodzi, Twoja pomoc w php jest mi całkowicie nie zrozumiała, bo php nie znam ni kszty..sad.gif

Pozostanę więc bez tego formularza, ale dzięki za cierpliwość, pomoc, i próby wytłumaczenia tego, jak dla mnie, beznadziejnego przypadq..smile.gif
Pozdrawiam, Artur
nospor
Cytat
Ale w efekcie dostałem tylko:
A do jakiego pliku to wlozyles? Bo php ci wogole tego nie sparsowal winksmiley.jpg
Jak zaczynasz skrypty?
<?
czy
<?php
Bo jak to pierwsze to moze na serwerze masz to wylączone i musisz pisac <?php

I prosilem uzywaj wlasciwe bbcode
grzyweczka
Tak jak napisałem, wkleiłem to co pisało tam w tutorialu:

Cytat
require("class.phpmailer.php");
class MyMailer extends PHPMailer {
// Set default variables for all new objects
var $From = "bigboos@o2.pl";
var $FromName = "Arturro";
var $Host = "poczta.o2.pl";
var $Mailer = "smtp"; // Alternative to IsSMTP()
var $WordWrap = 75;
var $Username = "bigboos";
var $Password = "xxx";

// Replace the default error_handler
function error_handler($msg) {
print("My Site Error");
print("Description:");
printf("%s", $msg);
exit;
}

// Create an additional function
function do_something($something) {
// Place your new code here
}
}


..do notatnika. Zmienilem nazwę na mail.inc.php i wrzuciłem na serwer.
Tak samo z tym drugim, zaczyna się to php od linijki require("mail.inc.php");

A następnie w przeglądarce wpisałem: www.arturro.webpark.pl/TEMP/mail_test.php
I efekt był taki, jaki napisałem..

Ale nie chcę się już narzucać.. nim bym to uruchomił to by zeszło pewnie kilka dni, a i to nie wiem czy by mi pomogło.. więc daruję sobie chyba jednak to.
Może kiedyś ktoś zrobi jakiś polski tutorial krok-po-kroku co trzeba zrobić z tym wszystkim to wtedy spróbuję..
Póki co fajnie, że znam choc nazwę tego wszystkiego..smile.gif PHPMailer..smile.gif
nospor
oj....
czyli wogole nie dales <?php

Kazdy skrypt php musi sie zaczynac od <?php a konczyc na ?>

  1. <?php
  2. //blabla tu skrypt php
  3. ?>


Ty tego nie dales to ci kod wogole nie jest uznawany za php
grzyweczka
Ok.. zrobiłem tak jak napisałeś.. dodałem te znaczniki <?PHP oraz ?>..
Chyba zadziałało, bo wywaliło mi (po uruchomieniu mail_test.php):

Cytat
Fatal error: Unknown function: time() <!-- [8][2134+15]-->. Informacje o dostępnych funkcjach PHP uzyskasz pod adresem <A href="http://webpark.pl/pomoc.html?fid=13">http://webpark.pl/pomoc.html?fid=13</A> in /TEMP/class.phpmailer.php on line 849


A jak sprawdziłem po Twej lekcji angielskiego, owa funkcja, która występuje w PHPMailer'ze, time, również nie jest obsługiwana przez ten zas**ny serwer..:/ Na przyszłość przynajmniej będę wiedział przy wyborze serwera na co zwrócić uwagę.. a nie sugerować się, że jest zaawansowana obsługa php..:/ W tym wypadku moge tylko odradzić serwery na webparku..:/
Oraz pomyśleć, że jeszcze do Was zajrzę, kiedy wykupię miejsce na "normalnym" serwerze z php, a nie czymś podobnym, okrojonym jak dupa bez kiszek..:/

Jeszcze raz dziękuję za pomoc..smile.gif
nospor
tym ludziom co ten hosting robią to chyba na łeb upadło.... ze nie dają mail() to jeszcze jestem jakoś w stanie zrozumieć, ale że time().... uciekaj stamtąd jak najszybciej.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.