Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]formularz, wykonywanie skryptu na zewnetrznym serwerze
Forum PHP.pl > Forum > Przedszkole
mec.david
Witajcie,

stworzylem formularz kontaktowy (dziala poprawnie) problem w tym, ze chce go umiescic na serwerze z wylaczona funkcja PHP mail() , niestety zmiana serwera nie wchodzi w gre.

- Formularz podzielony jest na 2 pliki jeden odpowiedzialny za stworzenie pol a 2 za odczyt i wyslanie maila.

Chcialbym wyedytowac kod i tu bardzo prosze Was o pomoc, tak aby skrypt odpowiedzialny za odczyt i wysylanie maili mogl sie wykonywac na zewnetrznym serwerze.

Podejrzewam ze trzebaby zmienic fragment kodu pierwszego (linijki 4 i 5) i sama metode $_POST kodu drugiego, probowalem rozne metody ale niestety za nic nie chcialo ruszyc.
Bede ogromnie wdzieczny jak ktos bedzie w stanie pomoc i zrozumie pewnie dosc chaotycznie napisana prosbe smile.gif


Fragment kodu pliku kontakt.php
  1. <?php
  2. if ($_POST['submit']) {
  3.  
  4. $form = file_get_contents('http://www.adresstrony.cba.pl/contactformprocess.php');
  5. echo $form;
  6.  
  7. }
  8. else
  9. {
  10. ?>
  11. <form name="contactform" method="post" action="kontakt.php" onSubmit="return validate.check(this)">
  12. <table width="350px" class="contactform">
  13. <tr>
  14. <td colspan="2">
  15.  
  16. <div class="contactformmessage">Pola oznaczone <span class="required_star"> * </span> musza byc wypelnione.</div>
  17.  
  18. </td>
  19. </tr>
  20. <tr>
  21. <td valign="top">
  22. <label for="Full_Name" class="required">Imie i Nazwisko<span class="required_star"> * </span></label>
  23. </td>
  24. <td valign="top">
  25. <input type="text" name="Full_Name" id="Full_Name" maxlength="80" style="width:200px">
  26. </td>
  27. </tr>
  28. <tr>
  29. <td valign="top">
  30. <label for="Email_Address" class="required">Email<span class="required_star"> * </span></label>
  31. </td>
  32. <td valign="top">
  33. <input type="text" name="Email_Address" id="Email_Address" maxlength="100" style="width:200px">
  34. </td>
  35. </tr>
  36. <tr>
  37. <td valign="top">
  38. <label for="Telephone_Number" class="not-required">Telefon</label>
  39. </td>
  40. <td valign="top">
  41. <input type="text" name="Telephone_Number" id="Telephone_Number" maxlength="100" style="width:200px">
  42. </td>
  43. </tr>
  44. <tr>
  45. <td valign="top">
  46. <label for="Your_Message" class="required">Wiadomosc<span class="required_star"> * </span></label>
  47. </td>
  48. <td valign="top">
  49. <textarea style="width:200px;height:160px" name="Your_Message" id="Your_Message" maxlength="2000"></textarea>
  50. </td>
  51. </tr>
  52. <tr>
  53. <td colspan="2" style="text-align:center" >
  54. <br /><br />
  55. <input type="submit" id="submit" name="submit" value=" Wyślij ">
  56. <br /><br />
  57. </td>
  58. </tr>
  59. </table>
  60.  
  61. </form>
  62.  
  63. <?php
  64. };
  65. ?>



a to kod pliku contactformprocess.php ktory chcialbym umiescic na zewnetrznym serwerze
  1. <?PHP
  2.  
  3. if(isset($_POST['Email_Address'])) {
  4.  
  5. $email_to = "adres@email"; // your email address
  6. $email_subject = "Formularz Kontaktowy"; // email subject line
  7.  
  8.  
  9. function died($error) {
  10. echo 'Błąd wysyłania. Sprobuj ponownie.';
  11. die();
  12. }
  13.  
  14. if(!isset($_POST['Full_Name']) ||
  15. !isset($_POST['Email_Address']) ||
  16. !isset($_POST['Telephone_Number']) ||
  17. !isset($_POST['Your_Message'])
  18. ) {
  19. died();
  20. }
  21.  
  22. $full_name = $_POST['Full_Name']; // required
  23. $email_from = $_POST['Email_Address']; // required
  24. $telephone = $_POST['Telephone_Number']; // not required
  25. $comments = $_POST['Your_Message']; // required
  26.  
  27. $error_message = "";
  28.  
  29. $email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
  30. if(preg_match($email_exp,$email_from)==0) {
  31. $error_message .= 'Adres Email wygląda na niepoprawny.<br />';
  32. }
  33. if(strlen($full_name) < 2) {
  34. $error_message .= 'Imię nie wygląda na poprawne.<br />';
  35. }
  36. if(strlen($comments) < 2) {
  37. $error_message .= 'Wiadomość nie wygląda na poprawną.<br />';
  38. }
  39.  
  40. if(strlen($error_message) > 0) {
  41. died($error_message);
  42. }
  43. $email_message = "Formularz Kontaktowy\r\n";
  44.  
  45. function clean_string($string) {
  46. $bad = array("content-type","bcc:","to:","cc:");
  47. return str_replace($bad,"",$string);
  48. }
  49.  
  50. $email_message .= "Imie i Nazwisko: ".clean_string($full_name)."\r\n";
  51. $email_message .= "Email: ".clean_string($email_from)."\r\n";
  52. $email_message .= "Telefon: ".clean_string($telephone)."\r\n";
  53. $email_message .= "Wiadomosc: ".clean_string($comments)."\r\n";
  54.  
  55. $headers = 'From: '.$email_from."\r\n".
  56. 'Reply-To: '.$email_from."\r\n" .
  57. 'X-Mailer: PHP/' . phpversion();
  58. @mail($email_to, $email_subject, $email_message, $headers);
  59.  
  60. echo 'Formularz wysłany pomyślnie. Dziękujemy';
  61. }
  62. die();
  63. ?>
wNogachSpisz
Najprościej wysłać formularz na serwer bez safe-mode, można tego dokonać poprzez zmianę atrybutu action w elemencie form.
Serwer po przetworzeniu zapytania może przkierować spowrotem na cba.
mec.david
Nie bardzo rozumiem, mozna prosic o jakas jeszcze wskazowka ?
phpion
Najprościej tak jak pisze ~wNogachSpisz:
  1. <form name="contactform" method="post" action="http://www.adresstrony.cba.pl/contactformprocess.php" onSubmit="return validate.check(this)">

a po wysłaniu wiadomości wracasz z powrotem na właściwą stronę:
  1. header('Location: ptth://strona.pl/kontakt.php'); // bbcode podstawia link dlatego dałem ptth :/

Niestety w takim przypadku walidację zrobisz na stronie właściwej tylko po stronie przeglądarki. Chyba, że contactformprocess.php dostosujesz do niej wizualnie.

Możesz również pobawić się w wysyłkę wiadomości poprzez cURL - odsyłam do dokumentacji.
mec.david
Dziekuje bardzo ! Dziala !

jescze jedno, moze glupie, ale musze zadac, pytanie

czy (jesli tak to jak) mozna przy uzyciu js po stronie contactformprocess wytworzyc zmienna zapisac ja do cookies i po stronie kontakt.php odczytac i na podstawie jej wartosci stworzyc odpowiedni alert ?

chodzi o sam zapis i odczyt, bo uruchomienie to pewnie przez fukcje w js i w onLoad -> sprawdzenie wartosci przy zaladowaniu strony

jeszcze raz dzieki za pomoc z problemem nr 1 exclamation.gif
wNogachSpisz
Cytat(phpion @ 19.06.2012, 15:28:48 ) *
Niestety w takim przypadku walidację zrobisz na stronie właściwej tylko po stronie przeglądarki. Chyba, że contactformprocess.php dostosujesz do niej wizualnie.

Możesz również pobawić się w wysyłkę wiadomości poprzez cURL - odsyłam do dokumentacji.

Nie ma takiej potrzeby. Walidację można zrobić po stronie process.php i w razie błędu przekierować na contact.html, a komunikat/status błędu umieścić w parametrze URL.
mec.david
przegladalem informacje ze strony http://www.php.net/manual/pl/book.curl.php, sprawdzilem kilka metod niestety bez efektu.
Zmuszony jestem znow prosic o pomoc, moglibyscie przedstawic przyklad takiego przekierowania z umieszczonym komunikatem bledu ?


edit:
ok, juz dalem sobie rade przy pomocy js.

dzieki za wszytko !
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.