J’ai un problème de SPAM dans mon forum. Malgré le fait que reCaptcha est activé et que le compte doit être validé avec un courriel, j’ai une multitude d’inscriptions chaque jour.
La fonction de recherche dans le Délestage des utilisateurs est bien, mais il manque des champs qui permettent de localiser de manière plus efficace les bots.
En modifiant seulement deux fichiers, il est possible de faire des recherches dans de nouveaux champs.
Localisez le fichier adm\style\acp_prune_users.html
Ouvrez le dans un éditeur de texte.
Insérez le texte des lignes 5 à 20.
<dl>
<dt><label for="email">{L_EMAIL}:</label></dt>
<dd><input id="email" name="email" type="text" /></dd>
</dl>
<dl>
<dt><label for="website">Site internet :</label></dt>
<dd><input id="website" name="website" type="text" /></dd>
</dl>
<dl>
<dt><label for="user_sig">Signature :</label></dt>
<dd><input id="user_sig" name="user_sig" type="text" /></dd>
</dl>
<dl>
<dt><label for="user_occ">Occupation :</label></dt>
<dd><input id="user_occ" name="user_occ" type="text" /></dd>
</dl>
<dl>
<dt><label for="user_interests">Intérêts :</label></dt>
<dd><input id="user_interests" name="user_interests" type="text" /></dd>
</dl>
<dl>
<dt><label for="joined">{L_JOINED}:</label>
<span>{L_JOINED_EXPLAIN}</span></dt>
<dd>
<select name="joined_select">{S_JOINED_OPTIONS}</select>
<input id="joined" name="joined" type="text" />
</dd>
</dl>
Sauvegardez le fichier.
Localisez le fichier includes\acp\acp_prune.php
Ouvrez le dans un éditeur de texte.
Localiser la méthode confirm_box
Insérez le texte des lignes 8 à 11.
confirm_box(false, $user->lang['CONFIRM_OPERATION'], build_hidden_fields(array(
'i' => $id,
'mode' => $mode,
'prune' => 1,
'users' => utf8_normalize_nfc(request_var('users', '', true)),
'username' => utf8_normalize_nfc(request_var('username', '', true)),
'email' => request_var('email', ''),
'website' => request_var('website', ''),
'user_sig' => request_var('user_sig', ''),
'user_occ' => request_var('user_occ', ''),
'user_interests' => request_var('user_interests', ''),
'joined_select' => request_var('joined_select', ''),
'joined' => request_var('joined', ''),
'active_select' => request_var('active_select', ''),
'active' => request_var('active', ''),
'count_select' => request_var('count_select', ''),
'count' => request_var('count', ''),
'deleteposts' => request_var('deleteposts', 0),
'action' => request_var('action', ''),
)), 'confirm_body_prune.html');
Localisez la méthode function get_prune_users
Insérez le texte des lignes 17 à 18 et de 45 à 48.
function get_prune_users(&$user_ids, &$usernames)
{
global $user, $db;
$users = utf8_normalize_nfc(request_var('users', '', true));
if ($users)
{
$users = explode("\n", $users);
$where_sql = ' AND ' . $db->sql_in_set('username_clean', array_map('utf8_clean_string', $users));
}
else
{
$username = utf8_normalize_nfc(request_var('username', '', true));
$email = request_var('email', '');
$website = request_var('website', '');
$signature = request_var('user_sig', '');
$occupation = request_var('user_occ', '');
$interests = request_var('user_interests', '');
$joined_select = request_var('joined_select', 'lt');
$active_select = request_var('active_select', 'lt');
$count_select = request_var('count_select', 'eq');
$joined = request_var('joined', '');
$active = request_var('active', '');
$active = ($active) ? explode('-', $active) : array();
$joined = ($joined) ? explode('-', $joined) : array();
if ((sizeof($active) && sizeof($active) != 3) || (sizeof($joined) && sizeof($joined) != 3))
{
trigger_error($user->lang['WRONG_ACTIVE_JOINED_DATE'] . adm_back_link($this->u_action), E_USER_WARNING);
}
$count = request_var('count', '');
$key_match = array('lt' => '<', 'gt' => '>', 'eq' => '=');
$sort_by_types = array('username', 'user_email', 'user_posts', 'user_regdate', 'user_lastvisit');
$where_sql = '';
$where_sql .= ($username) ? ' AND username_clean ' . $db->sql_like_expression(str_replace('*', $db->any_char, utf8_clean_string($username))) : '';
$where_sql .= ($email) ? ' AND user_email ' . $db->sql_like_expression(str_replace('*', $db->any_char, $email)) . ' ' : '';
$where_sql .= ($website) ? ' AND user_website ' . $db->sql_like_expression(str_replace('*', $db->any_char, $website)) . ' ' : '';
$where_sql .= ($signature) ? ' AND user_sig ' . $db->sql_like_expression(str_replace('*', $db->any_char, $signature)) . ' ' : '';
$where_sql .= ($occupation) ? ' AND user_occ ' . $db->sql_like_expression(str_replace('*', $db->any_char, $occupation)) . ' ' : '';
$where_sql .= ($interests) ? ' AND user_interests ' . $db->sql_like_expression(str_replace('*', $db->any_char, $interests)) . ' ' : '';
$where_sql .= (sizeof($joined)) ? " AND user_regdate " . $key_match[$joined_select] . ' ' . gmmktime(0, 0, 0, (int) $joined[1], (int) $joined[2], (int) $joined[0]) : '';
$where_sql .= ($count !== '') ? " AND user_posts " . $key_match[$count_select] . ' ' . (int) $count . ' ' : '';
// First handle pruning of users who never logged in, last active date is 0000-00-00
if (sizeof($active) && (int) $active[0] == 0 && (int) $active[1] == 0 && (int) $active[2] == 0)
{
$where_sql .= ' AND user_lastvisit = 0';
}
else if (sizeof($active) && $active_select != 'lt')
{
$where_sql .= ' AND user_lastvisit ' . $key_match[$active_select] . ' ' . gmmktime(0, 0, 0, (int) $active[1], (int) $active[2], (int) $active[0]);
}
else if (sizeof($active))
{
$where_sql .= ' AND (user_lastvisit > 0 AND user_lastvisit < ' . gmmktime(0, 0, 0, (int) $active[1], (int) $active[2], (int) $active[0]) . ')'; } } // Protect the admin, do not prune if no options are given... if (!$where_sql) { return; } // Get bot ids $sql = 'SELECT user_id FROM ' . BOTS_TABLE; $result = $db->sql_query($sql);
$bot_ids = array();
while ($row = $db->sql_fetchrow($result))
{
$bot_ids[] = $row['user_id'];
}
$db->sql_freeresult($result);
// Do not prune founder members
$sql = 'SELECT user_id, username
FROM ' . USERS_TABLE . '
WHERE user_id <> ' . ANONYMOUS . '
AND user_type <> ' . USER_FOUNDER . "
$where_sql";
$result = $db->sql_query($sql);
$where_sql = '';
$user_ids = $usernames = array();
while ($row = $db->sql_fetchrow($result))
{
// Do not prune bots and the user currently pruning.
if ($row['user_id'] != $user->data['user_id'] && !in_array($row['user_id'], $bot_ids))
{
$user_ids[] = $row['user_id'];
$usernames[$row['user_id']] = $row['username'];
}
}
$db->sql_freeresult($result);
}
Sauvegardez le fichier.
Remplacer les fichiers correspondant sur votre FTP.
Dans le Panneau d’administration, Vider la cache.
Ensuite allez dans UTILISATEURS ET GROUPES\Délester des utilisateurs.
Vous avez maintenant des nouveaux champs de recherche :
