Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> dziwny problem z prostym formularzem mejlowym, zwraca dane tylko ze strony index.html
mojito
post 9.02.2009, 19:37:20
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 9.02.2009

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


Witam,
napisałem sobie skrypt prostego formularza do wysyłania mejli ze strony.
W końcu wszystko działa.
Ale tylko na stronie głównej (index.html)
na pozostałych stronach nie - dane nie są w ogóle pobierane z pól formularza. Mejl przychodzi pusty.

questionmark.gif

Nie mam nawet zielonego pojęcia jak szukać rozwiązania do czegoś takiego

Dziękuję
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
youngCoder
post 9.02.2009, 20:14:30
Post #2





Grupa: Zarejestrowani
Postów: 15
Pomógł: 2
Dołączył: 8.02.2009

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


Proszę.

Kod, kod, kod.
Go to the top of the page
+Quote Post
mojito
post 9.02.2009, 22:37:46
Post #3





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 9.02.2009

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


no tak... =]

Kod
<head>
    <!-- żeby były polskie znaki -->
    <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8"/>
    
    <!-- ostylowanie wyświetlania wiadomości -->
    <style type="text/css">
        
        html {
        background-color: #f0f0f0;
        }
        
        div {
            text-align: center;
            font-family: Calibri, Arial, sans-serif;
            font-size: 14pt;
            font-weight: bold;
            margin: auto;
            margin-top: 6em;
            padding: 3em;
            border: solid 1px #7d7d7d;
            background: url(../images/primary_bg.png) repeat-x;
            width: 40%;
            overflow: hide;
            -moz-border-radius: 20px;
            -webkit-border-radius: 20px;
        }
        
        div a {
        text-decoration: none;
        color: #898989;
        }
        
        div a:hover {
        text-decoration: none;
        color: #f15a22;
        }
        
    </style>
    
</head>


    <!-- skrypt formularza -->
<?php

if (empty($_GET['name'])) {
    exit ("
        <div>
            <p>Podaj swoje imie i nazwisko</p>
            <a href='../index.html'>Powrót</a>
        </div>
        ");
    }

if(empty($_GET['mail']) && (empty($_GET['phone']))) {
    exit ("
        <div>
            <p>Podaj numer telefonu kontaktowego lub adres e-mail</p>
            <a href='../index.html'>Powrót</a>
        </div>
    ");
    }
    
$wiadomosc = "
Imię: ".$_GET['name']."
Firma: ".$_GET['firma']."
Telefon kontaktowy: ".$_GET['phone']."
Adres e-mail: ".$_GET['mail']."
";

$tematyka = "ze strony Activnetu";

mail ("mojito@agencja-mojito.pl", $tematyka, $wiadomosc);

    echo "
        <div>
            <p>Dziekujemy za wysłanie wiadomości. <br /> Skontaktujemy się w ciągu 48h.</p>
            <a href='../index.html'>Powrót</a>
        </div>
    ";
    
?>


a sam formularz w htmlu wygląda tak:

Kod
                            <form action="php/sendmail.php" method="get" enctype="text/plain">
                                
                                <div>
                                    <label for="name">Imię i Nazwisko</label>
                                    <input id="name" type="text" name="name" value="" size="15" maxlength="40" />
                                </div>
                                
                                <div>
                                    <label for="firma">Firma</label>
                                    <input id="firma" type="text" name="firma" value="" size="15" maxlength="40" />
                                </div>                                
                                
                                <div>
                                    <label for="phone">Tel. Kontaktowy</label>
                                    <input id="phone" type="text" name="phone" value="" size="15" maxlength="40" />
                                    </div>
                                
                                <div>
                                    <label for="mail">E-mail</label>
                                    <input id="mail" type="text" name="mail" value="" size="15" maxlength="40" />
                                </div>
                            
                                <div>
                                    <input id="submit" name="submit" class="submit" type="submit" value="wyślij" />
                                </div>
                            
                            </form>


i jeszcze jedno przy okazji pytanie: dlaczego nie działa tu $_POST, tylko $_GET ?
Go to the top of the page
+Quote Post
l0ud
post 9.02.2009, 22:49:56
Post #4





Grupa: Zarejestrowani
Postów: 1 387
Pomógł: 273
Dołączył: 18.02.2008

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


Bo przecież zadeklarowałeś w formularzu, że ma używać własnie get'a zamiast post'a:
Kod
  <form action="php/sendmail.php" method="get"


--------------------
XMPP: l0ud@chrome.pl
Go to the top of the page
+Quote Post
mojito
post 9.02.2009, 23:02:12
Post #5





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 9.02.2009

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


no to wiem...
ale zastanawia mnie dlaczego nie zadziała metoda POST, kiedy ją właśnie zadeklarowałem w formularzu i nią pobierałem z tego formularza dane w php. Jak było POST, to w mejlu przychodziły puste pola.
Go to the top of the page
+Quote Post
Istalacar
post 9.02.2009, 23:25:34
Post #6





Grupa: Zarejestrowani
Postów: 108
Pomógł: 4
Dołączył: 3.03.2007

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


zamieniasz w index.html z:
  1. <form action="php/sendmail.php" method="get" enctype="text/plain">

na
  1. <form action="php/sendmail.php" method="POST" enctype="text/plain">

i w kodzie zamieniasz każde $_GET na $_POST czyli z:
  1. <?php
  2. if (empty($_GET['name'])) {
  3. ?>

na
  1. <?php
  2. if (empty($_POST['name'])) {
  3. ?>


Do testów zasugerowałbym wpisanie w kodzie tuż obok mail() wpisać print_r($_POST); - to Ci pozwoli sprawdzić czy dane dochodzą czy nie.

Ten post edytował Istalacar 9.02.2009, 23:27:16
Go to the top of the page
+Quote Post
mojito
post 9.02.2009, 23:32:37
Post #7





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 9.02.2009

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


Dzięki za wskazówkę, ale tak właśnie miałem kiedy mi nie działało. Próbowałem różnych rzeczy i w końcu nieco zrezygnowany zamieniłem wszystkie POST na GET i zaczęło działać. Dane dochodziły. Ale tylko ze strony głównej. (Dodam od razu, że kod html dla formularza jest na każdej podstronie taki sam smile.gif )

A to, czy dane dochodzą czy nie widzę już na stronie, bo nie da się po prostu wysłać formularza - jeżeli zmienne są puste skrypt przerywa działanie. I tak się właśnie dzieje na podstronach. Wypełniam pola i wyświetla się komunikat, że są puste.

Można samemu się przekonać: i klikając tutaj przejść na stronę testową i wejść na 'oferta', realizacje' albo 'o firmie'.

Ten post edytował mojito 9.02.2009, 23:40:13
Go to the top of the page
+Quote Post
Istalacar
post 9.02.2009, 23:44:30
Post #8





Grupa: Zarejestrowani
Postów: 108
Pomógł: 4
Dołączył: 3.03.2007

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


kod na tamtej stronie odrobinę różni od tego który nam podałeś:
  1. <input id="name" name="Imię i nazwisko" value="" size="15" maxlength="40" type="text">
  2. </div>
  3. <div>
  4. <label for="firma">Firma</label>
  5. <input id="firma" name="Firma" value="" size="15" maxlength="40" type="text">
  6.  
  7. </div>
  8. <div>
  9. <label for="phone">Tel. Kontaktowy</label>
  10. <input id="phone" name="Tel. kontaktowy" value="" size="15" maxlength="40" type="text">
  11. </div>
  12. <div>
  13. <label for="mail">E-mail</label>
  14. <input id="mail" name="E-mail" value="" size="15" m
(tylko część kodu, nie chciało mi się poprawiać ani brać całości). Błąd który mi się mocno rzucił w oczy to: name="Imię i nazwisko", 1) w name staraj się unikać polskich liter, 2) ja osobiście mam w nawyku zamiast spacji używanie "_" - na wszelki wypadek, 3) jeśli w kodzie php odbierasz tak jak podałeś wyżej "name" to nie dziw się że nie może znaleźć "Imię i nazwisko"
Go to the top of the page
+Quote Post
mojito
post 9.02.2009, 23:51:12
Post #9





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 9.02.2009

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


No to się popisałem... axesmiley.png

chyba za długo po prostu nad tym siedzę i zapomniałem przekopiować kod jak już poprawiłem błędy w pliku index.html.

Ale to mnie nauczy korzystać z include winksmiley.jpg

Wielkie dzięki za otwarcie oczu.

Pozdrawiam.

P.S. Ale dalej nie wiem dlaczego metoda POST nie działała... pytanie tak dla czystej satysfakcji zdobywania wiedzy

Ten post edytował mojito 9.02.2009, 23:56:53
Go to the top of the page
+Quote Post
teleimpact
post 9.02.2009, 23:57:34
Post #10





Grupa: Zablokowani
Postów: 43
Pomógł: 1
Dołączył: 25.01.2009

Ostrzeżenie: (10%)
X----


A ni prosciej bedzie wstawic ponizszy kod?
Albo zaincludowac twoj do wszystkich poddstron?
Kod PHP mozna tez wstawic do pliku html...
uzywajac opcji SCRIPT

Kod
<?php
// sprawdzamy, czy zmienna $submit jest pusta
if (empty($_POST['submit'])) {
    // wyświetlamy formularz
    echo "<table border=\"0\"><form method=\"post\">
<tr>
<td>Treść wiadomości</td>
<td><textarea name=\"tresc\" style=\"width: 250px; height: 100px\"></textarea></td>
</tr>
<tr>
<td>Imię, nazwisko lub nick</td>
<td><input type=\"text\" name=\"imie\" style=\"width: 250px\"></td>
</tr>
<tr>
<td>Adres e-mail</td>
<td><input type=\"text\" name=\"email\" style=\"width: 250px\"></td>
</tr>
<tr>
<td>&nbsp;</td>
<td><input type=\"submit\" name=\"submit\" value=\"Wyślij\">&nbsp;
<input type=\"reset\" value=\"Od nowa\"></td></form>
</tr>
</table>";
}
// 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("mail@znajdzmpe.info","Wiadomosc ze strony WWW","$message","$header")
    or die('Nie udało się wysłać wiadomości');
    // wyświetlenie komunikatu w przypadku powodzenia
    echo "<div align=\"center\"><strong>Wiadomość została wysłana poprawnie!</strong></div>";
}
// lub w przypadku nie wypełnienia formularza do końca
else echo "<span style=\"color: #FF0000; text-align: center;\">Wypełnij wszystkie pola formularza!</span>";

?>
Go to the top of the page
+Quote Post
mojito
post 10.02.2009, 00:02:23
Post #11





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 9.02.2009

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


nie byłoby prościej,
bo już wszystko działa winksmiley.jpg

dzięki
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: 14.08.2025 - 07:11