{"id":232004,"date":"2023-01-20T13:57:00","date_gmt":"2023-01-20T10:57:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=232004"},"modified":"2023-01-29T10:06:33","modified_gmt":"2023-01-29T07:06:33","slug":"najskuteczniejsze-wykrywanie-kodu-php-antyspamowego-dla-wordpress","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pl\/najskuteczniejsze-wykrywanie-kodu-php-antyspamowego-dla-wordpress\/","title":{"rendered":"Najskuteczniejsze wykrywanie kodu PHP antyspamowego dla WordPress"},"content":{"rendered":"<p>Blog wordpress mo\u017ce otrzymywa\u0107 ponad 100 komentarzy spamowych (produkowanych przez roboty spamuj\u0105ce) dziennie, co jest denerwuj\u0105ce.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-156584-61e5bfcecc6e1.jpg\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-156584-61e5bfcecc6e1.jpg\" alt=\"Najskuteczniejsze wykrywanie kodu PHP antyspamowego dla Wordpress\"><\/a><\/p>\n<p>wordpress-spam<\/p>\n<p>Generalnie mog\u0105 one zosta\u0107 przechwycone przez wtyczki, takie jak Akismet, jednak dane te s\u0105 nadal przechowywane w bazie danych, zanim zostan\u0105 r\u0119cznie <a href=\"https:\/\/wordpress.mediadoma.com\/pl\/zmniejsz-wykorzystanie-bazy-danych-wordpress\/\" title=\"usuni\u0119te lub po\">usuni\u0119te lub po<\/a> <a href=\"https:\/\/wordpress.mediadoma.com\/pl\/jak-skonfigurowac-skrypt-php-w-crontab-aby-wyczyscic-wiele-wordpress-baza-danych-na-tym-samym-serwerze\/\" title=\"up\u0142ywie daty wa\u017cno\u015bci\">up\u0142ywie daty wa\u017cno\u015bci<\/a>.<\/p>\n<p><a href=\"https:\/\/leonax.net\/p\/6732\/block-spam-comments-from-web-page\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">LEONA<\/a> zapewnia sprytne rozwi\u0105zanie zapobiegaj\u0105ce przedostawaniu si\u0119 tych spamowych komentarzy nawet do bazy danych. Polega na umieszczeniu w formularzu ukrytego pola i ustawieniu warto\u015bci, gdy u\u017cytkownik naci\u015bnie klawisz (onkeyup). Wi\u0119c je\u015bli warto\u015bci nie pasuj\u0105, my\u015blimy, \u017ce nie jest to sk\u0142adane przez cz\u0142owieka.<\/p>\n<p>wordpress zapewnia filtr <strong>preprocess_comment<\/strong>, dzi\u0119ki czemu mo\u017cesz sprawdzi\u0107 komentarze i wyj\u015b\u0107 ze strony wcze\u015bniej za pomoc\u0105 <strong>wp_die()<\/strong>.<\/p>\n<p>WP Official API m\u00f3wi (<a href=\"https:\/\/codex.wordpress.org\/Plugin_API\/Filter_Reference\/preprocess_comment\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">https:\/\/codex.wordpress.org\/Plugin_API\/Filter_Reference\/preprocess_comment<\/a> ), $commentdata zawiera nast\u0119puj\u0105ce informacje:<\/p>\n<pre><code>'comment_post_ID' \u00a0 \u00a0 \u00a0- The post to which the comment will apply\n\u00a0 \u00a0'comment_author' \u00a0 \u00a0 \u00a0 - (may be empty)\n\u00a0 \u00a0'comment_author_email' - (may be empty)\n\u00a0 \u00a0'comment_author_url' \u00a0 - (may be empty)\n\u00a0 \u00a0'comment_content' \u00a0 \u00a0 \u00a0- The text of the proposed comment\n\u00a0 \u00a0'comment_type' \u00a0 \u00a0 \u00a0 \u00a0 - 'pingback', 'trackback', or empty for regular comments\n\u00a0 \u00a0'user_ID' \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0- (empty if not logged in)<\/code><\/pre>\n<p>Nast\u0119pnie mo\u017cemy u\u017cy\u0107 tej wtyczki, aby umo\u017cliwi\u0107 pingback\/trackback (co moim zdaniem jest przydatne) i skutecznie pozby\u0107 si\u0119 komentarzy spamowych.<\/p>\n<pre><code>$leonax_magic_lower = 328;\n$leonax_magic_upper = 3450709;\n\u00a0\nfunction leonax_anti_spam_form($fields){\n\u00a0 \u00a0 global $leonax_magic_lower, $leonax_magic_upper;\n\u00a0 \u00a0 $leonax_magic = mt_rand($leonax_magic_lower, $leonax_magic_upper);\n\u00a0 \u00a0 $fields['leonax_magic'] = &lt;&lt;&lt;EOT\n\u00a0 \u00a0 \u00a0 \u00a0 &lt;input type=\"hidden\" id=\"leonax-magic\" name=\"leonax-magic\" value=\"0\"&gt;\n\u00a0 \u00a0 \u00a0 \u00a0 &lt;script type=\"text\/javascript\"&gt;\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 jQuery(function() {\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 jQuery(\"#comment\").on(\"keyup\", function() {\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 jQuery(\"#leonax-magic\").val(\"$leonax_magic\");\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 });\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 })\n\u00a0 \u00a0 \u00a0 \u00a0 &lt;\/script&gt;\nEOT;\n\u00a0 \u00a0 return $fields;\n}\n\u00a0\nadd_filter('comment_form_default_fields', 'leonax_anti_spam_form');\n\u00a0\nfunction leonax_anit_spam_caught() {\n\u00a0 wp_die('&lt;strong&gt;ERROR&lt;\/strong&gt;: Looks like you are a spam bot. Please stop doing this.');\n}\n\u00a0\nfunction leonax_anti_spam_check( $commentdata) {\n\u00a0 $comment_type = '';\n\u00a0 if (isset($commentdata['comment_type'])) {\n\u00a0 \u00a0 $comment_type = trim($commentdata['comment_type']);\n\u00a0 } \u00a0 \n\u00a0 \n\u00a0if (($comment_type == 'pingback') || ($comment_type == 'trackback')) {\n\u00a0 \u00a0 return $commentdata;\n\u00a0 }\n\u00a0 $content = '';\n\u00a0 if (isset($commentdata['comment_content'])) {\n\u00a0 \u00a0 $content = trim($commentdata['comment_content']);\n\u00a0 } \u00a0 \n\u00a0 if (!strlen($content)) {\n\u00a0 \u00a0 leonax_anit_spam_caught();\n\u00a0 }\n\u00a0 \n\u00a0 if (preg_match(\"\/[a-e0-9]{25,}\/i\", $content)) { \/\/ To capture the strange IDs\n\u00a0 \u00a0 leonax_anit_spam_caught(); \u00a0\n\u00a0 }\n\u00a0\n\u00a0 global $leonax_magic_lower, $leonax_magic_upper; \u00a0\n\u00a0 \n\u00a0 if (isset($commentdata['user_ID']) &amp;&amp; $commentdata['user_ID']) { \/\/ Login-users are not bad\n\u00a0 \u00a0 return $commentdata;\n\u00a0 }\n\u00a0 \n\u00a0 if (!isset($_POST['leonax-magic'])) {\n\u00a0 \u00a0 leonax_anit_spam_caught();\n\u00a0 }\n\u00a0 $magic = intval($_POST['leonax-magic']);\n\u00a0 if ($magic &lt; $leonax_magic_lower || $magic &gt; $leonax_magic_upper) {\n\u00a0 \u00a0 leonax_anit_spam_caught();\n\u00a0 }\n\u00a0 return $commentdata;\n}\n\u00a0\nadd_filter( 'preprocess_comment', 'leonax_anti_spam_check' );<\/code><\/pre>\n<p>Je\u015bli przetestujemy funkcj\u0119\/filtr, wpisuj\u0105c celowo dziwne identyfikatory, otrzymamy nast\u0119puj\u0105ce informacje (a komentarz nie zostanie wpisany w obszar oczekiwania).<\/p>\n<p>Uwaga: Umie\u015b\u0107 powy\u017cszy kod na ko\u0144cu szablonu <strong>functions.php<\/strong> (lub motywu potomnego).<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-156584-61e5bfd03126a.jpg\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-156584-61e5bfd03126a.jpg\" alt=\"Najskuteczniejsze wykrywanie kodu PHP antyspamowego dla Wordpress\"><\/a><\/p>\n<p>WordPress-wykrywanie spamu<\/p>\n<p>Dzia\u0142a jak magia!<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">\u0179r\u00f3d\u0142o nagrywania:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/helloacm.com\" class=\"external external_icon\">helloacm.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Najskuteczniejsze wykrywanie kodu PHP antyspamowego dla WordPress<\/p>\n","protected":false},"author":1,"featured_media":223984,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[1032,721,805,845,866],"tags":[1169],"class_list":["post-232004","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-bezpieczenstwo","category-deweloper","category-php-7","category-samouczki","category-wordpress-7","tag-affiai-pl"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/232004","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/comments?post=232004"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/232004\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media\/223984"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media?parent=232004"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/categories?post=232004"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/tags?post=232004"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}