ช่วงนี้เจอเรื่องปวดหัวเกี่ยวกับ spam ใน forum เยอะมาก ตอนนี้เลยใช้วิธีง่ายๆ ไปก่อนผ่าน http://www.stopforumspam.com ก็กันได้ในระดับนึง แต่ว่ามี API Limit อาจจะต้องหาวิธีอื่นๆ แก้ไขเฉพาะหน้ากันต่อไป คิดว่าน่าจะพอไหวอยู่
- function is_forumspam_objectsIntoArray($arrObjData, $arrSkipIndices = array()) {
- $arrData = array();
- // if input is object, convert into array
- if (is_object($arrObjData)) {
- $arrObjData = get_object_vars($arrObjData);
- }
- if (is_array($arrObjData)) {
- foreach ($arrObjData as $index => $value) {
- if (is_object($value) || is_array($value)) {
- $value = is_forumspam_objectsIntoArray($value, $arrSkipIndices);
- }
- if (in_array($index, $arrSkipIndices)) {
- continue;
- }
- $arrData[$index] = $value;
- }
- }
- return $arrData;
- }
- /**
- http://www.stopforumspam.com/api?ip=91.186.18.61
- http://www.stopforumspam.com/api?email=g2fsehis5e@mail.ru
- http://www.stopforumspam.com/api?username=MariFoogwoogy
- **/
- function is_forumspam($var) {
- $var['email'] = urlencode($var['email']);
- $q = 'username='.$var['username'].'&email='.$var['email'].'&ip='.$var['ip'];
- $xmlUrl = "http://www.stopforumspam.com/api?".$q."&f=xmldom";
- $xmlStr = file_get_contents($xmlUrl);
- $xmlObj = simplexml_load_string($xmlStr);
- $arrXml = is_forumspam_objectsIntoArray($xmlObj);
- if($arrXml['ip']['appears'] == 1)
- return true;
- if($arrXml['email']['appears'] == 1)
- return true;
- if($arrXml['username']['appears'] == 1)
- return true;
- return false;
- }
อ้างอิงจาก http://www.stopforumspam.com