Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Formularz wysyłki maila ze strony
carpov
post 8.01.2008, 21:38:24
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 8.01.2008

Ostrzeżenie: (0%)
-----


Jestem zielony w temacie PHP ...więc z góry przepraszm za lamerskei problemy ...ale liczę na pomoc.

W czym problem? otóż postanowiłem na stronce zrobić prosty formularz do wysyłania zapytań na maila (3 pola użytkownik, adres zwrotny i treść) Od providera dostałem gotowe rozwiązanie w postaci skryptu PHP omijającego problem zablokowanej funkcji mail(). Zaimplementowałem to na stronce i git.......... działa. Maile lądują tam gdzie trzeba tylko coś nie tak jest z przekierowaniem na stronki w przypadku powodzenia lub niepowodzenia.

Poniżej zamieszczam kod. Co tu neleży zmienić żeby po poprawnym wyslaniu maila przeszedł na zadaną stronke?

Proszę o pomoc

Kod
<?php

# tutaj nalezy podac odpowiednie parametry zmiennych:
$serwer_poczty_wychodzacej = 'smtp.domena.pl';
$nasza_skrzynka_email = 'mail@domena.pl';
$haslo_do_skrzynki = '123456';
$temat_wiadomosci = 'Formularz kontaktowy';
$nazwa_naszej_firmy = 'Firma;
$strona_bledu = 'blad.html';
$strona_wyslana = 'ok.html';



if($_POST['kto'] != '' && $_POST['mail'] != '' && $_POST['tresc'] != '')
{

require_once 'Mail.php';

$params['host'] = $serwer_poczty_wychodzacej;
$params['port'] = 25;
$params['auth'] = true;
$params['username'] = $nasza_skrzynka_email;
$params['password'] = $haslo_do_skrzynki;

$headers['Subject'] = $temat_wiadomosci;
$headers['From'] = $_POST['mail'];
$headers['To'] = $nazwa_naszej_firmy;
$headers['Content-type']='text/plain; charset=utf-8';


$body = $_POST['kto'].' napisał/a: '.$_POST['tresc'];

$recipients = $nasza_skrzynka_email;


$mail = Mail::factory('smtp', $params);
if (PEAR::isError($mail)) {

         print $mail->getMessage();
    
     } else {
    
         $error = $mail->send($recipients, $headers, $body);
        
              if (PEAR::isError($error)) {
          
                     $host  = $_SERVER['HTTP_HOST'];
                        header("Location: http://$host/$strona_bledu");
                        exit;

              
                   } else {
                    
                         $host  = $_SERVER['HTTP_HOST'];
                     header("Location: http://$host/$strona_wyslana");
                     exit;
                      
                           }
                      
                       }

}
else
{
         $host  = $_SERVER['HTTP_HOST'];
         header("Location: http://$host/$strona_bledu");
         exit;
}
?>
Go to the top of the page
+Quote Post
cornholio666
post 8.01.2008, 21:41:49
Post #2





Grupa: Zarejestrowani
Postów: 472
Pomógł: 8
Dołączył: 14.03.2004
Skąd: Rzeszów

Ostrzeżenie: (0%)
-----


  1. <?php
  2. header("Location: http://$host/$strona_wyslana");
  3. ?>


tutaj możesz wpisać z palca dowolny adres np:
  1. header("Location: http ://www.onet.pl");


dostosuj do swoich potrzeb.

Witaj na forum smile.gif

PS: cos BBcode wykrzacza

Ten post edytował cornholio666 8.01.2008, 21:44:45


--------------------
I need TP for my bunghole!!!

Mój nowy przyjaciel - tytanowa płytka na stałe
------------------------------------------------------
AEGEE, kwiaciarnia rzeszów , notariusz rzeszów, zakład krawiecki rzeszów, paweł jakubowicz
Go to the top of the page
+Quote Post
carpov
post 8.01.2008, 22:09:12
Post #3





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 8.01.2008

Ostrzeżenie: (0%)
-----


NIe wiem czy dobrze Cię zrozumiałem....w html tez coś mam zmienić? (mylące są te nagłówki PHP I HTML)

Już wcześniej próbowałem zaproponowanego rozwiązania. Zmieniłem w kodzie php w miejscach header (Location:..... na jakieś tam stronki i dalej to samo.
Zatrzymuje się na skrypcie formularz.php (biała strona i tyle) Dlatego napisałem sad.gif
Go to the top of the page
+Quote Post
Grzyw
post 8.01.2008, 22:16:36
Post #4





Grupa: Zarejestrowani
Postów: 561
Pomógł: 75
Dołączył: 19.08.2004
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


  1. <?php
  2. header("Location: http://$host/$strona_wyslana");
  3. ?>


Ten fragment kodu sprawi, że przeglądarka zmieni adres na wskazany w tej funkcji.
Zauważ, że są tu wsadzone 2 zmienne: $host i $strona_wysłana. Nie masz ich nigdzie w skrypcie, więc ta funkcja tak naprawdę wygląda tak:
  1. <?php
  2. header("Location: http:///");
  3. ?>


Czyli nieprawidłowo, bo PHP nic nie wstawił w miejsce zmiennych. Ale nie musisz sugerować się wzorem, możesz na sztywno sam wpisać adres:
  1. <?php
  2. header("Location: <a href="http://jakakolwiekstrona.pl");
  3. ?>


Ten post edytował Grzyw 8.01.2008, 22:18:10


--------------------
Idąc po czyichś śladach, nie zajdziesz ani kroku dalej...
Go to the top of the page
+Quote Post
carpov
post 8.01.2008, 22:32:13
Post #5





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 8.01.2008

Ostrzeżenie: (0%)
-----


Tak już wcześniej napisałem.....adresy wpisywane na sztywno tez nie działają.....skrypt się "wiesza" i tyle


a co do zmiennych: hosta załatwia $_SERVER['HTTP_HOST'] a strona_wysłana jest zdeklarowana powyżej..........i teraz pytanie czy aby na pewno dobrze

a co powodują te "exit'y" po każdym "header" questionmark.gifquestionmark.gif
Go to the top of the page
+Quote Post
cornholio666
post 8.01.2008, 23:20:20
Post #6





Grupa: Zarejestrowani
Postów: 472
Pomógł: 8
Dołączył: 14.03.2004
Skąd: Rzeszów

Ostrzeżenie: (0%)
-----


Wstaw die() tak jak ja wstawilem i zobacz jaki komunikat ci sie pokazuje

  1. <?php
  2. if (PEAR::isError($error)) {
  3.  
  4. die("blad mail nie wyslany");
  5.  $host = $_SERVER['HTTP_HOST'];
  6.  
  7. header("Location: http://$host/$strona_bledu");
  8.  
  9.  
  10.  } else {
  11. die("mail wyslany");
  12.  $host = $_SERVER['HTTP_HOST'];
  13.  header("Location: http://$host/$strona_wyslana");
  14.  exit;
  15.  
  16.  }
  17.  
  18.  }
  19. ?>


a exity znaczą to exit()

Ten post edytował cornholio666 8.01.2008, 23:21:18


--------------------
I need TP for my bunghole!!!

Mój nowy przyjaciel - tytanowa płytka na stałe
------------------------------------------------------
AEGEE, kwiaciarnia rzeszów , notariusz rzeszów, zakład krawiecki rzeszów, paweł jakubowicz
Go to the top of the page
+Quote Post
--carpov--
post 9.01.2008, 08:12:28
Post #7





Goście







Ki diaboł ?exclamation.gif!!

nie bangla.....ktoś to testował u siebie? staje na skrypcie php i nie przechodzi dalej -> biały ekran z napisem "mail wysłany" i nie przechodzi dalej.
Nie zależnie od tego czy zostawie w headerze zmienne host i strona_wysłana...czy wklepie na sztywną jakąś stronę.

W teorii powinno iść....jednak jest inaczej i pytanie dlaczego?

Może jakieś inne propozycje przekierowań
Go to the top of the page
+Quote Post
cornholio666
post 9.01.2008, 09:34:51
Post #8





Grupa: Zarejestrowani
Postów: 472
Pomógł: 8
Dołączył: 14.03.2004
Skąd: Rzeszów

Ostrzeżenie: (0%)
-----


Przed skryptem umieść
  1. <?php
  2. error_reporting (E_ALL);
  3.  ini_set("display_errors","on");
  4. ?>


Zamien kod na ten:
  1. else {
  2.  
  3. header("Location: http://www.onet.pl/");
  4. die("mail wyslany");
  5.  
  6. }


Ten post edytował cornholio666 9.01.2008, 09:35:25


--------------------
I need TP for my bunghole!!!

Mój nowy przyjaciel - tytanowa płytka na stałe
------------------------------------------------------
AEGEE, kwiaciarnia rzeszów , notariusz rzeszów, zakład krawiecki rzeszów, paweł jakubowicz
Go to the top of the page
+Quote Post
dadexix
post 9.01.2008, 11:39:52
Post #9





Grupa: Zarejestrowani
Postów: 439
Pomógł: 21
Dołączył: 28.06.2007
Skąd: Bielsko-Biała

Ostrzeżenie: (0%)
-----


Cytat
Kod
else {

header("Location: http://www.onet.pl/");
die("mail wyslany");

}
hm? po co pisać że wysłany jak i tak wcześniej przekieruje:D?


Cytat
Kod
                } else {
                    die("mail wyslany");
                         $host  = $_SERVER['HTTP_HOST'];
                     header("Location: http://$host/$strona_wyslana");
                     exit;
                      
                           }
                      
                       }
no gratuluje:) najpierw kończysz wykonywanie skryptu a potem próbujesz wysłać nagłówek(chodz skrypt już nie wysyła się...


--------------------
"Na przykład zmiennej $jestem_najlepszy przypisujemy wartość logiczną TRUE"
Ja: użyj funkcji[...]
Grins: mów normalnie do mnie a nie po polsku
Ja: normalnie to znaczy jak?
Grins: No w PHP... inaczej mój parser ledwo kuma:)
Go to the top of the page
+Quote Post
cornholio666
post 9.01.2008, 11:51:36
Post #10





Grupa: Zarejestrowani
Postów: 472
Pomógł: 8
Dołączył: 14.03.2004
Skąd: Rzeszów

Ostrzeżenie: (0%)
-----


Cytat(dadexix @ 9.01.2008, 13:39:52 ) *
hm? po co pisać że wysłany jak i tak wcześniej przekieruje:D?
no gratuluje:) najpierw kończysz wykonywanie skryptu a potem próbujesz wysłać nagłówek(chodz skrypt już nie wysyła się...


no gratuluje smile.gif pierwsze piszesz posta nie czytając calej wypowiedzi


carpov pisal ze mu przekierowanie "nie dziala", wiec chciałem sprawdzić czy rzeczywiście skrypt "dochodzi" do miejsca gdzie owo przekierowanie się znajduje. Teraz mam pewność że tak. Więc jest coś nie tak z przekierowaniem

BTW co to znaczy że "skrypt już nie wysyła się..." ?


--------------------
I need TP for my bunghole!!!

Mój nowy przyjaciel - tytanowa płytka na stałe
------------------------------------------------------
AEGEE, kwiaciarnia rzeszów , notariusz rzeszów, zakład krawiecki rzeszów, paweł jakubowicz
Go to the top of the page
+Quote Post
--carpov--
post 9.01.2008, 12:42:04
Post #11





Goście







Więc tak......stosując sie do Twoich zaleceń cornolio

kod wyglada tak:

  1. <?php
  2. error_reporting (E_ALL);
  3.  ini_set("display_errors","on");
  4.  
  5. # tutaj nalezy podac odpowiednie parametry zmiennych:
  6. $serwer_poczty_wychodzacej = 'smtp.qqqqq.pl';
  7. $nasza_skrzynka_email = 'biuro@pqqqqqq.pl';
  8. $haslo_do_skrzynki = '1234565';
  9. $temat_wiadomosci = '=== Formularz kontaktowy ===';
  10. $nazwa_naszej_firmy = 'Firma';
  11. $strona_bledu = 'fake.html';
  12. $strona_wyslana = 'ok.html';
  13.  
  14.  
  15.  
  16. if($_POST['kto'] != '' && $_POST['mail'] != '' && $_POST['tresc'] != '')
  17. {
  18.  
  19. require_once 'Mail.php';
  20.  
  21. $params['host'] = $serwer_poczty_wychodzacej;
  22. $params['port'] = 25;
  23. $params['auth'] = true;
  24. $params['username'] = $nasza_skrzynka_email;
  25. $params['password'] = $haslo_do_skrzynki;
  26.  
  27. $headers['Subject'] = $temat_wiadomosci;
  28. $headers['From'] = $_POST['mail'];
  29. $headers['To'] = $nazwa_naszej_firmy;
  30. $headers['Content-type']='text/plain; charset=utf-8';
  31.  
  32.  
  33. $body = $_POST['kto'].' napisał/a: '.$_POST['tresc'];
  34.  
  35. $recipients = $nasza_skrzynka_email;
  36.  
  37.  
  38. $mail = Mail::factory('smtp', $params);
  39. if (PEAR::isError($error)) {
  40.  
  41. die("blad mail nie wyslany");
  42.  $host = $_SERVER['HTTP_HOST'];
  43.  
  44. header("Location: http://$host/$strona_bledu");
  45.  
  46.  
  47.  } else {
  48.  
  49. header("Location: <a href=\"http://www.onet.pl/");&#092;" target=\"_blank\">http://www.onet.pl/");</a>
  50. die("mail wyslany");
  51.  
  52. }
  53.  
  54.  }
  55. ?>



i mamy odpowiedz

  1. Notice: Undefined variable: error in /virtual/pl/formularz.php on line 39
  2.  
  3. Warning: Cannot modify header information - headers already sent by (output started at /virtual/pl/formularz.php:1) in /virtual/pl/formularz.php on line 50
  4. mail wyslany


oczywiscie maila w skrzynce NIE WIDAĆ sad.gif
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 29.06.2025 - 10:26