Защита от спам ботове

happyslacker

New Member
За сега се спирам на този вариант:
Код:
--- posting_body.tpl.BAK.orig	2007-07-31 20:17:10.000000000 +0300
+++ posting_body.tpl	2007-07-31 20:31:48.000000000 +0300
@@ -468,7 +468,7 @@
     </tr>
     <tr> 
       <td><span>{L_CONFIRM_CODE}: * </span>
<span>{L_CONFIRM_CODE_EXPLAIN}</span></td>
-      <td><input>
+      <td><span>Моля въведете кода два пъти. Please enter the code twice.</span>
<input>
 </td>
     </tr>
     <END>

Код:
--- posting.php.BAK	2007-07-31 20:19:47.000000000 +0300
+++ posting.php	2007-07-31 20:20:44.000000000 +0300
@@ -581,7 +581,8 @@
 	
 		    if ($row = $db->sql_fetchrow($result))
 		    {
-			if ($row['code'] != $HTTP_POST_VARS['confirm_code'])
+//			if ($row['code'] != $HTTP_POST_VARS['confirm_code'])
+			if ($row['code'].$row['code'] != $HTTP_POST_VARS['confirm_code'])
 			{
 			    $error = TRUE;
 			    $error_msg .= ( ( isset($error_msg) ) ? '
' : '' ) . $lang['Confirm_code_wrong'];

http://vslivecd.openfmi.net/php_visual_confirm2.tar.gz
visual_confirm_mini2.png

Не съм програмирал на php и на този етап не ми се занимава със сложни системи за защита (стига ми това, че търсих цяла минута докато намеря как се прави конкатенация на низове в PHP).
 
За съжаление метода не действа - пак се регистрират спамери. Ще помисля за друго решение. Май ще трябва да понауча малко PHP...
 
Оказа се, че съм коригирал публикуването на съобщения от нерегистрирани потребители, но съм забравил да коригирам регистрирането... След като коригирах и регистрирането се надявам, че няма да могат да се правят автоматични регистрации:

Код:
--- posting.php.BAK	2007-07-31 20:19:47.000000000 +0300
+++ posting.php	2007-07-31 20:20:44.000000000 +0300
@@ -581,7 +581,8 @@
 	
 		    if ($row = $db->sql_fetchrow($result))
 		    {
-			if ($row['code'] != $HTTP_POST_VARS['confirm_code'])
+//			if ($row['code'] != $HTTP_POST_VARS['confirm_code'])
+			if ($row['code'].$row['code'] != $HTTP_POST_VARS['confirm_code'])
 			{
 			    $error = TRUE;
 			    $error_msg .= ( ( isset($error_msg) ) ? '
' : '' ) . $lang['Confirm_code_wrong'];

Код:
--- posting_body.tpl.BAK.orig	2007-07-31 20:17:10.000000000 +0300
+++ posting_body.tpl	2007-07-31 20:31:48.000000000 +0300
@@ -468,7 +468,7 @@
     </tr>
     <tr> 
       <td><span>{L_CONFIRM_CODE}: * </span>
<span>{L_CONFIRM_CODE_EXPLAIN}</span></td>
-      <td><input>
+      <td><span>Моля въведете кода два пъти. Please enter the code twice.</span>
<input>
 </td>
     </tr>
     <END>

Код:
--- profile_add_body.tpl.BAK	2007-08-01 20:26:10.000000000 +0300
+++ profile_add_body.tpl	2007-08-01 20:43:16.000000000 +0300
@@ -62,7 +62,7 @@
 	</tr>
 	<tr> 
 	  <td><span>{L_CONFIRM_CODE}: * </span>
<span>{L_CONFIRM_CODE_EXPLAIN}</span></td>
-	  <td><input></td>
+	  <td><span>Моля въведете кода два пъти. Please enter the code twice.</span>
<input></td>
 	</tr>
 	<END>
 	<tr>

Код:
--- usercp_register.php.ORIG	2007-08-01 20:24:32.000000000 +0300
+++ usercp_register.php	2007-08-01 20:43:42.000000000 +0300
@@ -107,7 +107,7 @@
 		$current_email = trim(htmlspecialchars($HTTP_POST_VARS['current_email']));
 	}
 
-	$strip_var_list = array('email' => 'email', 'icq' => 'icq', 'aim' => 'aim', 'msn' => 'msn', 'yim' => 'yim', 'website' => 'website', 'location' => 'location', 'occupation' => 'occupation', 'interests' => 'interests', 'confirm_code' => 'confirm_code');
+	$strip_var_list = array('email' => 'email', 'icq' => 'icq', 'aim' => 'aim', 'msn' => 'msn', 'yim' => 'yim', 'website' => 'website', 'location' => 'location', 'occupation' => 'occupation', 'interests' => 'interests', 'confirm_code2' => 'confirm_code2');
 
 	// Strip all tags from data ... may p**s some people off, bah, strip_tags is
 	// doing the job but can still break HTML output ... have no choice, have
@@ -297,7 +297,8 @@
 
 			if ($row = $db->sql_fetchrow($result))
 			{
-				if ($row['code'] != $confirm_code)
+//				if ($row['code'] != $confirm_code)
+				if ($row['code'].$row['code'] != $confirm_code2)
 				{
 					$error = TRUE;
 					$error_msg .= ( ( isset($error_msg) ) ? '
' : '' ) . $lang['Confirm_code_wrong'];

http://vslivecd.openfmi.net/php_visual_confirm2.tar.gz

За допълнителна сигурност преименувах confirm_code на confirm_code2 8)
 

Горе