Formularz PHP+HTML nie działa


(jacko1998) #1

Witam i od razu zapodaje PHP:

<?php 

//filtruje dane użytkownika

$mail = htmlspecialchars(trim($_POST['mail']));

$temat = htmlspecialchars(trim($_POST['temat']));

$wiadomosc = htmlspecialchars(trim($_POST['wiadomosc']));

$send = $_POST['send'];

//mail na który będa wysyłane wiadomości

$odbiorca = "karol.bulowski@gmail.com";

//nagłówki

$header = "Content-type: text/html; charset=utf-8\r\nFrom: $mail"; 


//Sprawdzam czy istnieje ciastko, jeżeli tak wyświetlam komunikat

if (isset($_COOKIE['send'])) $error ='Odczekaj '.($_COOKIE['send']-time()).' sekund przed wysłaniem kolejnej wiadomości';    


if ($send && !isset($_COOKIE['send']))

    {

    //Sprawdzam mail

    if (empty($mail)) 

        { $error .= "Nie wypełniłeś pola E-mail
"; }

    elseif (strlen($mail) > 30) 

        { $error .="Za długi e-mail - max. 30 znaków 
";}

    elseif (preg_match('/^[a-zA-ZąćęłńóśźżĄĆĘŁŃÓŚŹŻ0-9\-\_\.]+\@[a-zA-ZąćęłńóśźżĄĆĘŁŃÓŚŹŻ0-9\-\_\.]+\.[a-z]{2,4}$/',$mail) == false)

        { $error .= "Niepoprawny adres E-mail! 
"; }


    //Sprawdzam temat

    if (empty($temat)) 

        { $error .= "Nie wypełniłeś pola Temat
"; }

    elseif (strlen($temat) > 120) 

        { $error .="Za długi temat - max. 120 znaków 
";}


    //Sprawdzam wiadomosc

    if (empty($wiadomosc)) 

        { $error .= "Nie wypełniłeś pola Wiadomość
"; }

    elseif (strlen($wiadomosc) > 1000) 

        { $error .="Za długa wiadomość - max. 1000 znaków 
";}


    //Sprawdzam czy są błędy i wysyłam wiadomość

    if (empty($error))

        {

        $list = "Przysłał - $imie ($mail) 
 Treść wiadomości - $wiadomosc"; 


        if (mail($odbiorca, $temat, $list, $header))    

        {

         $error .= "Twoja wiadomość została wysłana";

         setcookie("send", time()+60, time()+60);

         }

        else

            { $error .= "Wystąpił błąd podczas wysyłania wiadomości, spróbuj później.";}    

        }

    }

?>[/code]




no i HTML, jak by był potrzebny:

[code]

Napisz do mnie

No i po wysłaniu wiadomości pokazuje takie coś http://www.tinypic.pl/xx3a7aw3uh2a. Męczę się z tym już 15 minut i nic nie mogę wskórać, pomoże ktoś ?


(Oustish) #2

Na stronie z formularzem masz:

(słowo-klucz: wyslij) a próbujesz pobrać z tablicy $_POST element o indeksie send.

$send = $_POST['send'];

Dodatkowo, kilka informacji na przyszłość:


(jacko1998) #3

Teraz, takie coś http://www.tinypic.pl/nstjsi4zu4x0


(Oustish) #4

jacko1998 , znasz angielski? Bardzo Ci się przyda w programowaniu.

Oznacza, że zmienna $imie nie została zdefiniowana, a miejsce które wywołuje błąd znajduje się w linii 40.

I rzeczywiście, bierzesz tą zmienną, chociaż nigdzie wcześniej nie występuje.

Nie można połączyć się z serwerem odpowiadającym za wysyłanie e-maili - najprawdopodobniej nie jest uruchomiony.

Zastanawia mnie fakt występowania tam hosta w formie “localhost” - nie wiem, czy to wina wtyczki do debugowania czy rzeczywisty błąd w konfiguracji.

Podobnie jak wyżej, teraz $error w linii 48.

Tutaj sugeruję na początku pliku dać

$error = "";

co powinno rozwiązać problem.


(jacko1998) #5

Z angielskim w PHP sobie jakoś radzę, a to wrzuciłem bo wiedziałem, że mi ktoś powie, to nie będę sam się musiał męczyć :wink:


(B.Andy) #6

I teraz chłopie pokazales swój debilizm. Życzę ci, aby nikt ci już nie pomógł.