Formularz kontaktowy PHP - nie wysyła maili

Witam,

Mam taki oto skrypt kontaktowy:

<?php


$mail = "mojemail@strona.pl"; 


if(isset($_POST['text']) && isset($_POST['subject']) && isset($yourmail)){ 

    if(mail($yourmail,$subject,$text.$ip)){ 

        echo "Your message has been sent."

    }else{ 

        echo "Your message has not been sent."

    }

}else{


		 echo ''		

		 echo '	
'

			  echo '	Your Name'

			  echo '	'

			  echo '	Your Email'

			  echo '	'

			  echo '	Your Message'

			  echo '	'

			  echo '	
  '	

			  echo '	'		

			  echo ' '	

			echo ' '																		


?>[/code]

I nie wiem dlaczego ale nie chce działać. Gdzie jest błąd?

Gdzie jest błąd? - wszędzie!

…normalnie błąd na błędzie…

Nie sprawdzałem ale powinno działać:

<?php

$mail = 'mojemail@strona.pl';

$yourmail=$_POST['yourmail'];

$headers="From:$yourmail\r\nMessage-ID: <".time()."-".$yourmail.">\r\n";


if(!empty($_POST['text']) && !empty($_POST['yourname']) && !empty($_POST['yourmail']){

$subject='Wiadomość od: '.$_POST['yourname'];

if(mail($mail,$subject,$text,$headers)) echo 'Your message has been sent.';

else echo 'Your message has not been sent.';

} else

       echo '


Your Name

Your Email

Your Message





' ;                                                     

?>[/code]

Powinno, ale nie działa…

Pisałem że nie sprawdzałem …bo i nie miałem wtedy jak.

-po poprawkach:

<?php

$mail = 'mojemail@strona.pl';


$yourmail=$_POST['yourmail'];

$text=$_POST['text'];

$subject='Wiadomość od: '.$_POST['yourname'];

$headers="From:$yourmail\r\nMessage-ID: <".time()."-".$yourmail.">\r\n";


if(!empty($_POST['text']) && !empty($_POST['yourname']) && !empty($_POST['yourmail'])){

if(mail($mail,$subject,$text,$headers)) echo 'Your message has been sent.';

else echo 'Your message has not been sent.';

} else

       echo '


Your Name

Your Email

Your Message





' ;                                                     

?>[/code]

Witam

Dołączyłem się do tego postu i mam pytanie jak w nim zrobić że, po niewpisaniu maila czy też imienia, bądź jednego i drugiego wyskakuje komunikat, no i jeszcze czy dało by radę zrobić jakiś kod obrazkowy do przepisania to tak przeciw spamowaniu.

Za odpowiedzi dziękuję.

Witam

Spróbuję odświeżyć temat, jak do powyższego formularza dodać opcję z tokenem tak aby przepisać z niego np. cyfry.

Korzystam ze skryptu który naszkicował punkomuzykant.

Skrypt tokena mam taki:

<?    

    session_start();

    $pool = '23456789'; //liczby z których bedziemy losować token

    $img_width = 100; //wymiary tokena

    $img_height = 16;


    $str = ''; //wyzerowanie tokena

    for ($i = 0; $i < 5; $i++){ // losowanie liczb

        $str .= substr($pool, mt_rand(0, strlen($pool) -1), 1);

    }


    $string = $str;

    $_SESSION['captcha'] = $string; //tworzymy sesje z wartością tokena


    $im = imagecreate($img_width, $img_height); //tworzymy obrazek


    $bg_color = imagecolorallocate($im,255,255,255); // kolor tła

    $font_color = imagecolorallocate($im,0,0,0); // kolor czcionki

    $grid_color = imagecolorallocate($im,246,246,246); // kolor lini

    $border_color = imagecolorallocate ($im, 246, 246, 246); // kolor ramki


    // Tworzenie tokena


        imagefill($im,1,1,$bg_color);



         ImageLine($im,90,0,90,30,$grid_color); //1

         ImageLine($im,10,0,10,30,$grid_color); //2

         ImageLine($im,20,0,20,30,$grid_color); //1

         ImageLine($im,30,0,30,30,$grid_color); //1

         ImageLine($im,40,0,40,30,$grid_color); //1

         ImageLine($im,50,0,50,30,$grid_color); //1

         ImageLine($im,60,0,60,30,$grid_color); //1

         ImageLine($im,70,0,70,30,$grid_color); //1

         ImageLine($im,80,0,80,30,$grid_color); //1


         ImageLine($im,0,5,100,5,$grid_color); //1

         ImageLine($im,0,10,100,10,$grid_color); //1

         ImageLine($im,0,15,100,15,$grid_color); //1



    $x = rand(5, $img_width/(7/2)); // pozycja liczb w tokenie


    imagerectangle($im, 0, 0, $img_width-1, $img_height-1, $border_color);


    for($a=0; $a < 7; $a++){


        imagestring($im, 3, $x, 1, substr($string, $a, 1), $font_color);

        $x += (5*2); #odstęp


    }


    header("Content-type: image/gif");

    imagegif($im);

    imagedestroy($im);


?>

Stalker trochę namieszałeś w tym kodzie zajrzyj tutaj post2374526.html#p2374526

wystarczy stworzyć warunek if np:

if (empty($email))

{

echo 'POLE e-mail nie zostało wypełnione!';

}

bloodscreen nie oto mi chodziło tylko jak do tego kodu podczepić tokena, że zanim użytkownik wyśle maila musi przepisać cyfry z tokena i potem dopiero może wysłać maila przez stronę www

germar Napisałem dla Ciebie ten skrypt możesz go pobrać tutaj http://www.przeklej.pl/plik/sec-rar-0005kt6lv7tb

Uzupełnisz pola e mail i działa tylko wszystko zależy od skrzynki jaką posiadasz i od czułości anty spamu czy będzie przepuszczać takie wiadomości. Daj znać czy wszystko ok :smiley:

Dodane 28.11.2009 (So) 17:24

dodam ze musisz edytować plik example_form i tam zmienić w zmiennej adresdo na swój adres.

Witam

No jest oki skrypcik pracuje należycie, mam do ciebie jeszcze pytanie czy możesz dopisać linijkę z adresem email aby dana osoba wpisała co by potem na przykład odpowiedzieć bo teraz to nie wiem od kogo by poczta nadeszła, tak aby wiedzieć jaki jest mail.

Dziękuję i dobrej niedzieli

Zrobiłem.

Ogólnie poprawiłem parę błędów z tamtego. Tutaj masz link: http://www.przeklej.pl/plik/email-popra … 05lg8j6bq4

POZDRAWIAM.

Witam

Działa ładnie lecz bez wpisywania swoich danych tj. imienia treści czy maila a przepisania kodu wysyła pustego maila, musiała by być jeszcze jakieś sprawdzenie czy są wpisane adres mailowy i treść. Ja niestety na php się nie znam i sam tego nie zrobię więc jeszcze raz poprosze cię o pomoc.

Dziękuję.

wystarczyło dopisać warunek if do empty

http://www.przeklej.pl/plik/created-by- … 05lt8e95a5

Skorzystałam z tego gotowego skryptu (bardzo fajny) i działa :slight_smile: , mam tylko jeden problem. Otóż wiadomość dochodzi (tu wszystko OK) ale w polu Od: pojawia się taki napis (www-data) nie mam pomysłu jak to zmienić , jak na razie wszystko zawiodło.