Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> mail + zabespieczenie
kenshi
post 17.04.2009, 11:10:21
Post #1





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 11.01.2009
Skąd: Sanok

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


witam Mam taki kod do wysyłania maili z poziou strony.
Kod
<strong><font color="#ffff00">
             <?php
     // sprawdzamy, czy zmienna $submit jest pusta
     if (empty($_POST['submit'])) {
         // wyświetlamy formularz
         echo "<table border=\"0\"><form method=\"post\">
     <tr>
     <td>Temat </td>
     <td><input type=\"text\" name=\"temat\" style=\"width: 250px\"></td>
     </tr>
     <tr>
      <td>Treść wiadomości </td>
     <td><textarea name=\"tresc\" style=\"width: 350px; height: 100px\"></textarea></td>
     </tr>
     <tr>
     <td>Imię 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=\"Wyczyść\"></td></form>
     </tr>
     </table>";
     }
     // sprawdzamy, czy zmienne przesłane z formularza nie są puste
     elseif (!empty($_POST['tresc']) &&  !empty($_POST['temat'])&& !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("kenshi5@o2.pl","$_POST[temat]","$message","$header")
         or die('Nie udało się wysłać wiadomości. Wypełnij wszystkie pola');
         // wyświetlenie komunikatu w przypadku powodzenia
         echo "<div align=\"color: #FFFF00;   center;\"><strong>Dziekujemy za wypelnienie  formularza<p> Udzielimy odpowiedzi  w przeciagu 48  godzin</strong></div>";
     }
     // lub w przypadku nie wypełnienia formularza do końca
     else echo "<span style=\"color: #FF0000; text-align:  center;\">Wiadomość nie została wysłana <p>Wypełnij wszystkie  pola w formularzu !</span>";
    
     ?>


ale chciał bym zabespieczyc to np "wpis stolice polski" tylko nie mam pojęcia jak zrobić to by bot tego nie wyczaił bardzo proszę o pomoc
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
Tajgeer
post 17.04.2009, 12:03:21
Post #2





Grupa: Zarejestrowani
Postów: 290
Pomógł: 48
Dołączył: 11.05.2008
Skąd: Kielce

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


Gdzieś w formularzu dodaj nowe pole:
Kod
<tr>
     <td>Podaj stolice Polski</td>
     <td><input type=\"text\" name=\"stolica\" style=\"width: 250px\"></td>
     </tr>


Następnie przy sprawdzaniu, czy wysłane zmienne nie są puste, dodaj coś takiego jak
Kod
if($_POST['stolica']=="Warszawa"
Jeśli uzytkownik (bądź bot) poda inną odpowiedź, to skrypt zatrzyma swoje działanie.

Ten post edytował Tajgeer 17.04.2009, 12:03:44
Go to the top of the page
+Quote Post
kenshi
post 17.04.2009, 12:14:18
Post #3





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 11.01.2009
Skąd: Sanok

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


a nie powinno byc
Kod
!empty($_POST['stolica']=="Warszawa"
? bo jak dodałem to w takiej formie to wyskoczył bląd
Go to the top of the page
+Quote Post
Tajgeer
post 17.04.2009, 12:19:05
Post #4





Grupa: Zarejestrowani
Postów: 290
Pomógł: 48
Dołączył: 11.05.2008
Skąd: Kielce

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


Dodaj do swojej linijki
Kod
&& $_POST['stolica']=="Warszawa"


Co do kwestii Twojego pytania - nie, nie tak powinno być. Funkcja empty sprawdza tylko, czy dany formularz jest pusty lub nie. Twój powyższy twór jest kompletnie bez sensu - zero w nim logiki winksmiley.jpg

Ten post edytował Tajgeer 17.04.2009, 12:19:25
Go to the top of the page
+Quote Post
kenshi
post 17.04.2009, 12:41:28
Post #5





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 11.01.2009
Skąd: Sanok

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


dziękuje bardzo działa jak nalezy teraz juz nie musze sie martwic botami bo normalnie robiły mi sieczkę z maila :/

a jeszcze jedno. Bo odpowiedz jest wrażliwa na wielkie i małe litery. Czy jak bym zrobił to tak
Kod
&& $_POST['stolica']=="Warszawa, warszawa"
to by działało? czy moze jest na to jakiś inny sposób by nie miało znaczenie wielkość liter

Ten post edytował kenshi 17.04.2009, 12:44:51
Go to the top of the page
+Quote Post
Tajgeer
post 17.04.2009, 19:12:44
Post #6





Grupa: Zarejestrowani
Postów: 290
Pomógł: 48
Dołączył: 11.05.2008
Skąd: Kielce

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


W takim wypadku proponowałbym zmodyfikować nieco skrypt winksmiley.jpg

  1. <?php
  2. elseif (!empty($_POST['tresc']) &&  !empty($_POST['temat'])&& !empty($_POST['imie']) &&  !empty($_POST['email'])) { // jeżeli powyższy warunek jest spełniony tworzona jest wiadomość
  3.  
  4.         if($_POST['stolica']=="Warszawa" || $_POST['stolica']=="warszawa") { // jeśli wpisano poprawną stolice
  5.  
  6.  
  7.         // zmienna $message zawiera treść wiadomości
  8.         $message = "Treść wiadomości:\n$_POST[tresc]\nWysłał: $_POST[imie]\ne-mail: $_POST[email]";
  9.         // zmienna $header zawiera przede wszystkim adres zwrotny
  10.         $header = "From: $_POST[imie] <$_POST[email]>";
  11.         // funkcja mail() za pomocą której wiadomość zostanie wysłana
  12.        @mail("kenshi5@o2.pl","$_POST[temat]","$message","$header")
  13.         or die('Nie udało się wysłać wiadomości. Wypełnij wszystkie pola');
  14.         // wyświetlenie komunikatu w przypadku powodzenia
  15.         echo "<div align=\"color: #FFFF00;   center;\"><strong>Dziekujemy za wypelnienie  formularza<p> Udzielimy odpowiedzi  w przeciagu 48  godzin</strong></div>";
  16.          } else { // jesli nie podano dobrej stolicy
  17.           header('Location: '.$_SERVER['PHP_SELF'].''); // nastąpi przekierowanie do formularza
  18.          }
  19.     }
  20.     // lub w przypadku nie wypełnienia formularza do końca
  21.     else echo "<span style=\"color: #FF0000; text-align:  center;\">Wiadomość nie została wysłana <p>Wypełnij wszystkie  pola w formularzu !</span>";
  22.    
  23.     ?>


Ten post edytował Tajgeer 17.04.2009, 19:16:20
Go to the top of the page
+Quote Post
guitarnet.pl
post 17.04.2009, 19:20:40
Post #7





Grupa: Zarejestrowani
Postów: 74
Pomógł: 4
Dołączył: 7.03.2008

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


@Tajgeer
ten skrypt dalej jest dziurawy jak sito i racja generalnie botami nie musisz sie juz martwic ale wystarczy czlowiek ktory bedzie znal odpowiedz na pytanie, spreparuje dane uzywajac slowa Warszawa, odpali bota i dalej skrypt lezy na kolanach..

a mozna jeszcze krocej i bez bota - wystarczy na twoim skrypcie przeprowadzic "email injection"
bylo juz dzisiaj na forum


--------------------
Skrypty php, ajax, javascript
Go to the top of the page
+Quote Post
kenshi
post 17.04.2009, 19:39:19
Post #8





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 11.01.2009
Skąd: Sanok

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


mozesz zapodac link do tematu questionmark.gif bo nie moge znalezc pozdrawiam i thx
Go to the top of the page
+Quote Post
guitarnet.pl
post 17.04.2009, 19:48:30
Post #9





Grupa: Zarejestrowani
Postów: 74
Pomógł: 4
Dołączył: 7.03.2008

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


http://phpsense.com/php/php-mail.html
http://forum.php.pl/index.php?showtopic=112640&st=0


--------------------
Skrypty php, ajax, javascript
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 - 03:19