Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Cenzura w formularzu, używanie funkcji 'str_replace'
divix
post 24.01.2008, 15:45:47
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 2.08.2005

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


Witam,
Mam problem w swoim module formularza. Otóż chcę ocenzurować zmienną $komentarz oraz później ją wysłać na adres e mail. Problem w tym, że na podglądzie kiedy wywołuję zmienną $komentarz po przez echo, zawartość zmiennej jest ocenzurowana tak jak chcę, ale gdy podglądam wiadomość na poczcie wtedy widzę oryginalną wiadomość bez cenzury.
Używam funkcji str_replace:
  1. <?php
  2. $komentarz = str_replace($cenzura, '****', $komentarz);
  3. ?>

Zawartość zmiennej cenzura to array.
Deklaruję tą zmienną tuz przed funkcją mail(), dlatego nie powinna się ona zmieniać przed wysłaniem.
W czym leży problem?

Pozdrawiam.

Ten post edytował divix 24.01.2008, 15:57:57
Go to the top of the page
+Quote Post
nevt
post 24.01.2008, 17:06:11
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

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


pokaż większy kawałek kodu - ta linijka co ja widac jest ok, błąd jest gdzie indziej... podejrzewam jakąś banalna literówkę...


--------------------

-
Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... -
Go to the top of the page
+Quote Post
divix
post 24.01.2008, 17:17:43
Post #3





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 2.08.2005

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


Mój cały kod php:
  1. <?php
  2. $nazwa = $_POST['nazwa'];
  3. $email = $_POST['email'];
  4. $komentarz = $_POST['komentarz'];
  5. $adresdo = 'divix1988@wp.pl';
  6. $temat = 'Komentarz ze strony WWW';
  7. $zawartosc = 'Nazwa klienta: '.$nazwa."\n"
  8.  .'Adres pocztowy: '.$email."\n"
  9.  ."Komentarz klienta: \n" .$komentarz. "\n";
  10. $adresod = 'divix1988@wp.pl';
  11. $additionalHeaders = "From: DiviXdesign<divix1988@wp.pl>\n";
  12. $additionalHeaders .= "Reply-To: $_POST[email]";
  13.  
  14. $flag = 'true';
  15.  
  16. //$cenzura = 'array';
  17. $cenzura = array('dupa', 'kurwa', 'pierdolone', 'huj', 'chuj', 'pojebany');
  18. //usuwa zbędną pustą spacje tylko z początku wiersza
  19. $nazwa = ltrim($nazwa);
  20. $email = ltrim($email);
  21. $komentarz = ltrim($komentarz);
  22. //zmiana pierwszej litery tematu na dużą
  23. $temat = ucfirst($temat);
  24.  
  25. //zmienia cały ciąg na małe litery
  26. $email = strtolower($email);
  27.  
  28. //weryfikuje poprawność emailu
  29. if (strlen($email)<|| !eregi('^[a-zA-z0-9_]+@[a-zA-z0-9]+.[a-zA-z0-9-.]+$' , $email))
  30. {
  31. $flag = 'false';
  32. echo 'Nie poprawny adres email';
  33. }
  34. //weryfikacja danych imie oraz komenatrz
  35. if (empty($nazwa))
  36. {
  37. $flag = 'false';
  38. echo 'Pole Imię i Nazwisko nie zostało wypełnione';
  39. }
  40. if (empty($komentarz))
  41. {
  42. $flag = 'false';
  43. echo 'Pole komentarz nie zostało wypełnione';
  44. }
  45.  
  46. //rozbija ciąg na dwie części i sprawdza tylko jego domene
  47.  
  48. $tablica_email = explode('@', $email);
  49. if ($tablica_email[1] == 'waznyklient.pl' || $tablica_email[1] == 'drugiwaznyklient.pl')
  50. {
  51. $adresdo = 'divixdesign@wp.pl';
  52. $adresod = 'divixdesign@wp.pl';
  53. $additionalHeaders = "From: DiviXdesign<divixdesign@wp.pl>\n";
  54. $additionalHeaders .= "Reply-To: $_POST[email]";
  55. }
  56. else
  57. {
  58. $adresdo = 'divix1988@wp.pl';
  59. }
  60.  
  61. if ($tablica_email[1] != 'waznyklient.pl' && eregi('sklep|biuro|promocja', $komentarz))
  62. {
  63. $adresdo = 'adam_kalemo@wp.pl';
  64. $adresod = 'adam_kalemo@wp.pl';
  65. $additionalHeaders = "From: DiviXdesign<adam_kalemo@wp.pl>\n";
  66. $additionalHeaders .= "Reply-To: $_POST[email]";
  67. }else if ($tablica_email[1] != 'waznyklient.pl' && eregi('towar|produkt|reklamacja' , $komentarz))
  68. {
  69. $adresdo = 'adam_kalemo1@wp.pl';
  70. $adresdo = 'adam_kalemo1@wp.pl';
  71. $additionalHeaders = "From: DiviXdesign<adam_kalemo1@wp.pl>\n";
  72. $additionalHeaders .= "Reply-To: $_POST[email]";
  73. }
  74.  
  75. //cenzurowanie komentarza
  76. $komentarz = str_replace($cenzura, '****', $komentarz);
  77.  
  78. //wysyłanie wiadomości
  79. if ($flag == 'true')
  80. {
  81. mail($adresdo, $temat, $zawartosc, $additionalHeaders);
  82. }
  83. else if ($flag == 'false')
  84. {
  85. echo '<p>Wiadomość nie została wysłana</p>';
  86. }
  87.  
  88. //wyświetlenie wysłanego komentarza
  89. echo nl2br($zawartosc);
  90. echo $komentarz;
  91. echo '<p>'.$adresdo.'</p>';
  92. echo '<p>'.$tablica_email[1].'</p>';
  93. echo '<p>'.$flag.'</p>';
  94.  
  95. ?>


Ten post edytował divix 24.01.2008, 17:19:29
Go to the top of the page
+Quote Post
bim2
post 24.01.2008, 17:55:46
Post #4





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 152
Dołączył: 9.04.2006
Skąd: Berlin

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


$zawartość deklarujesz na samej górze i później nic z tym nie robisz. Zmieniasz tylko $komentarz, ale to nic nie da bo $zawartość już zdeklarowałeś. Daj str_replace na $zawartość i powinno chodzić. Nie zapomnij też o przeniesieniu tablicy!


--------------------
Go to the top of the page
+Quote Post
bartg
post 24.01.2008, 18:00:38
Post #5





Grupa: Zarejestrowani
Postów: 225
Pomógł: 25
Dołączył: 4.07.2007
Skąd: Berlin

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


Albo zmienną $zawartość = [...] przenieś pod str_replace, będzie prościej

Ten post edytował bartg 24.01.2008, 18:00:52


--------------------
Go to the top of the page
+Quote Post
bim2
post 24.01.2008, 18:01:34
Post #6





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 152
Dołączył: 9.04.2006
Skąd: Berlin

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


Wtedy wyślesz pustego emaila... smile.gif
EDIT: Mój błąd, da się tak

Ten post edytował bim2 24.01.2008, 18:02:21


--------------------
Go to the top of the page
+Quote Post
bartg
post 24.01.2008, 18:02:27
Post #7





Grupa: Zarejestrowani
Postów: 225
Pomógł: 25
Dołączył: 4.07.2007
Skąd: Berlin

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


Cytat(bim2 @ 24.01.2008, 18:01:34 ) *
Wtedy wyślesz pustego emaila... smile.gif

Sorry ale nie zgodze się z tobą


--------------------
Go to the top of the page
+Quote Post
divix
post 25.01.2008, 14:57:28
Post #8





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 2.08.2005

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


W jaki sposób mam przenieść tablice?

Ten post edytował divix 25.01.2008, 14:58:58
Go to the top of the page
+Quote Post
bim2
post 25.01.2008, 15:39:28
Post #9





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 152
Dołączył: 9.04.2006
Skąd: Berlin

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


  1. <?php
  2. $nazwa = $_POST['nazwa'];
  3. $email = $_POST['email'];
  4. $komentarz = $_POST['komentarz'];
  5. $adresdo = 'divix1988@wp.pl';
  6. $temat = 'Komentarz ze strony WWW';
  7. $adresod = 'divix1988@wp.pl';
  8. $additionalHeaders = "From: DiviXdesign<divix1988@wp.pl>\n";
  9. $additionalHeaders .= "Reply-To: $_POST[email]";
  10.  
  11. $flag = 'true';
  12.  
  13. //$cenzura = 'array';
  14. $cenzura = array('dupa', 'kurwa', 'pierdolone', 'huj', 'chuj', 'pojebany');
  15. //usuwa zbędną pustą spacje tylko z początku wiersza
  16. $nazwa = ltrim($nazwa);
  17. $email = ltrim($email);
  18. $komentarz = ltrim($komentarz);
  19. //zmiana pierwszej litery tematu na dużą
  20. $temat = ucfirst($temat);
  21.  
  22. //zmienia cały ciąg na małe litery
  23. $email = strtolower($email);
  24.  
  25. //weryfikuje poprawność emailu
  26. if (strlen($email)<|| !eregi('^[a-zA-z0-9_]+@[a-zA-z0-9]+.[a-zA-z0-9-.]+$' , $email))
  27. {
  28. $flag = 'false';
  29. echo 'Nie poprawny adres email';
  30. }
  31. //weryfikacja danych imie oraz komenatrz
  32. if (empty($nazwa))
  33. {
  34. $flag = 'false';
  35. echo 'Pole Imię i Nazwisko nie zostało wypełnione';
  36. }
  37. if (empty($komentarz))
  38. {
  39. $flag = 'false';
  40. echo 'Pole komentarz nie zostało wypełnione';
  41. }
  42.  
  43. //rozbija ciąg na dwie części i sprawdza tylko jego domene
  44.  
  45. $tablica_email = explode('@', $email);
  46. if ($tablica_email[1] == 'waznyklient.pl' || $tablica_email[1] == 'drugiwaznyklient.pl')
  47. {
  48. $adresdo = 'divixdesign@wp.pl';
  49. $adresod = 'divixdesign@wp.pl';
  50. $additionalHeaders = "From: DiviXdesign<divixdesign@wp.pl>\n";
  51. $additionalHeaders .= "Reply-To: $_POST[email]";
  52. }
  53. else
  54. {
  55. $adresdo = 'divix1988@wp.pl';
  56. }
  57.  
  58. if ($tablica_email[1] != 'waznyklient.pl' && eregi('sklep|biuro|promocja', $komentarz))
  59. {
  60. $adresdo = 'adam_kalemo@wp.pl';
  61. $adresod = 'adam_kalemo@wp.pl';
  62. $additionalHeaders = "From: DiviXdesign<adam_kalemo@wp.pl>\n";
  63. $additionalHeaders .= "Reply-To: $_POST[email]";
  64. }else if ($tablica_email[1] != 'waznyklient.pl' && eregi('towar|produkt|reklamacja' , $komentarz))
  65. {
  66. $adresdo = 'adam_kalemo1@wp.pl';
  67. $adresdo = 'adam_kalemo1@wp.pl';
  68. $additionalHeaders = "From: DiviXdesign<adam_kalemo1@wp.pl>\n";
  69. $additionalHeaders .= "Reply-To: $_POST[email]";
  70. }
  71.  
  72. //cenzurowanie komentarza
  73. $komentarz = str_replace($cenzura, '****', $komentarz);
  74.  
  75. $zawartosc = 'Nazwa klienta: '.$nazwa."\n"
  76.  .'Adres pocztowy: '.$email."\n"
  77.  ."Komentarz klienta: \n" .$komentarz. "\n";
  78. //wysyłanie wiadomości
  79. if ($flag == 'true')
  80. {
  81. mail($adresdo, $temat, $zawartosc, $additionalHeaders);
  82. }
  83. else if ($flag == 'false')
  84. {
  85. echo '<p>Wiadomość nie została wysłana</p>';
  86. }
  87.  
  88. //wyświetlenie wysłanego komentarza
  89. echo nl2br($zawartosc);
  90. echo $komentarz;
  91. echo '<p>'.$adresdo.'</p>';
  92. echo '<p>'.$tablica_email[1].'</p>';
  93. echo '<p>'.$flag.'</p>';
  94.  
  95. ?>

o tak smile.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: 25.04.2024 - 14:44