Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: formularz - weryfikacja maila i antyspam w php
Forum PHP.pl > Forum > PHP
makaron_lubelski
witam,

w trudzie i znoju (bo jestem gleboko poczatkujacy) udalo mi sie napisasc taki skrypt majacy obslugiwac prostu formularz.
jedna rzecz mi dzialac nie chce - nie moge tak tego napisac, zeby dzialala weyfikacja antyspamowa, wypelnienia wszystkich pol i poprawnosci adresu. ale dzialac nie chce... gdzie jest blad zasadzniczy?

  1. <?php
  2.  
  3.  
  4. $body = "Nazwisko i imię: {$scrubbed['name']}\n\nTreść wiadmości: {$scrubbed['information']}";
  5. $body = wordwrap($body, 70);
  6.  
  7. if (isset($_POST['submitted'])) {
  8.  
  9. function spam_scrubber($value) {
  10.  
  11. $very_bad = array('to:', 'cc:', 'bcc:', 'content-type:', 'mime-version:', 'multipart-mixed:', 'content-transfer-encoding:');
  12.  
  13. foreach ($very_bad as $v) {
  14. if (stripos($value, $v) !== false) return '';
  15. }
  16.  
  17. $value = str_replace(array( "\r", "\n", "%0a", "%0d"), ' ', $value);
  18.  
  19. return trim($value);
  20.  
  21. }
  22.  
  23. $scrubbed = array_map('spam_scrubber', $_POST);
  24.  
  25. if (!empty($scrubbed['name']) && !empty($scrubbed['email']) && !empty($scrubbed['comments']) && preg_match('/^[\w.-]+@[\w.-]+\.[A-Za-z]{2,6}$/', $scrubbed['email']) {
  26.  
  27.  
  28. mail('****@i****.**', 'Formularz kontaktowy', $body, "From: {$scrubbed['email']}");
  29.  
  30. echo '<p>Dziękujemy za wiadomość. Odpowiemy wkrótce.</p>';
  31.  
  32. $_POST = array();
  33.  
  34. } else {
  35. echo '<p>Proszę wypełnić poprawnie wszystkie pola formularza.</p>';
  36. }
  37.  
  38. }
  39. ?>
Pilsener
Cytat
gdzie jest blad zasadzniczy?
- bo nigdzie w kodzie nie dodałeś warunku, że jeśli walidacja == ok to coś tam? Przecież skrypt sam się nie domyśli. I funkcje inicjujemy zazwyczaj na początku kodu a ich definicje trzymamy w oddzielnym pliku.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.