Commit | Line | Data |
---|---|---|
c495c100 P |
1 | <?php |
2 | /*********************************************************************** | |
3 | ||
4 | Copyright (C) 2002-2005 Rickard Andersson (rickard@punbb.org) | |
5 | ||
6 | This file is part of PunBB. | |
7 | ||
8 | PunBB is free software; you can redistribute it and/or modify it | |
9 | under the terms of the GNU General Public License as published | |
10 | by the Free Software Foundation; either version 2 of the License, | |
11 | or (at your option) any later version. | |
12 | ||
13 | PunBB is distributed in the hope that it will be useful, but | |
14 | WITHOUT ANY WARRANTY; without even the implied warranty of | |
15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
16 | GNU General Public License for more details. | |
17 | ||
18 | You should have received a copy of the GNU General Public License | |
19 | along with this program; if not, write to the Free Software | |
20 | Foundation, Inc., 59 Temple Place, Suite 330, Boston, | |
21 | MA 02111-1307 USA | |
22 | ||
23 | ************************************************************************/ | |
24 | ||
25 | ||
26 | // Tell header.php to use the admin template | |
27 | define('PUN_ADMIN_CONSOLE', 1); | |
28 | ||
29 | define('PUN_ROOT', './'); | |
30 | require PUN_ROOT.'include/common.php'; | |
31 | require PUN_ROOT.'include/common_admin.php'; | |
32 | ||
33 | ||
34 | if ($pun_user['g_id'] > PUN_MOD) | |
35 | message($lang_common['No permission']); | |
36 | ||
37 | ||
38 | // Show IP statistics for a certain user ID | |
39 | if (isset($_GET['ip_stats'])) | |
40 | { | |
41 | $ip_stats = intval($_GET['ip_stats']); | |
42 | if ($ip_stats < 1) | |
43 | message($lang_common['Bad request']); | |
44 | ||
45 | ||
46 | $page_title = pun_htmlspecialchars($pun_config['o_board_title']).' / Admin / Utilisateurs'; | |
47 | require PUN_ROOT.'header.php'; | |
48 | ||
49 | ?> | |
50 | <div class="linkst"> | |
51 | <div class="inbox"> | |
52 | <div><a href="javascript:history.go(-1)">Retour</a></div> | |
53 | </div> | |
54 | </div> | |
55 | ||
56 | <div id="users1" class="blocktable"> | |
57 | <h2><span>Utilisateurs</span></h2> | |
58 | <div class="box"> | |
59 | <div class="inbox"> | |
60 | <table cellspacing="0"> | |
61 | <thead> | |
62 | <tr> | |
63 | <th class="tcl" scope="col">Adresse <acronym title="Internet Protocol" lang="en">IP</acronym></th> | |
64 | <th class="tc2" scope="col">Dernière visite</th> | |
65 | <th class="tc3" scope="col">Occurences</th> | |
66 | <th class="tcr" scope="col">Action</th> | |
67 | </tr> | |
68 | </thead> | |
69 | <tbody> | |
70 | <?php | |
71 | ||
72 | $result = $db->query('SELECT poster_ip, MAX(posted) AS last_used, COUNT(id) AS used_times FROM '.$db->prefix.'posts WHERE poster_id='.$ip_stats.' GROUP BY poster_ip ORDER BY last_used DESC') or error('Unable to fetch post info', __FILE__, __LINE__, $db->error()); | |
73 | if ($db->num_rows($result)) | |
74 | { | |
75 | while ($cur_ip = $db->fetch_assoc($result)) | |
76 | { | |
77 | ||
78 | ?> | |
79 | <tr> | |
80 | <td class="tcl"><a href="moderate.php?get_host=<?php echo $cur_ip['poster_ip'] ?>"><?php echo $cur_ip['poster_ip'] ?></a></td> | |
81 | <td class="tc2"><?php echo format_time($cur_ip['last_used']) ?></td> | |
82 | <td class="tc3"><?php echo $cur_ip['used_times'] ?></td> | |
83 | <td class="tcr"><a href="admin_users.php?show_users=<?php echo $cur_ip['poster_ip'] ?>">Trouver plus d'utilisateur pour cette <acronym title="Internet Protocol" lang="en">IP</acronym></a></td> | |
84 | </tr> | |
85 | <?php | |
86 | ||
87 | } | |
88 | } | |
89 | else | |
90 | echo "\t\t\t\t".'<tr><td class="tcl" colspan="4">Il n\'y a actuellement aucun message de cet utilisateur dans les forums.</td></tr>'."\n"; | |
91 | ||
92 | ?> | |
93 | </tbody> | |
94 | </table> | |
95 | </div> | |
96 | </div> | |
97 | </div> | |
98 | ||
99 | <div class="linksb"> | |
100 | <div class="inbox"> | |
101 | <div><a href="javascript:history.go(-1)">Retour</a></div> | |
102 | </div> | |
103 | </div> | |
104 | <?php | |
105 | ||
106 | require PUN_ROOT.'footer.php'; | |
107 | } | |
108 | ||
109 | ||
110 | if (isset($_GET['show_users'])) | |
111 | { | |
112 | $ip = $_GET['show_users']; | |
113 | ||
114 | if (!@preg_match('/[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/', $ip)) | |
115 | message('L\'adresse IP soumise n\'est pas correctement formée.'); | |
116 | ||
117 | ||
118 | $page_title = pun_htmlspecialchars($pun_config['o_board_title']).' / Admin / Utilisateurs'; | |
119 | require PUN_ROOT.'header.php'; | |
120 | ||
121 | ?> | |
122 | <div class="linkst"> | |
123 | <div class="inbox"> | |
124 | <div><a href="javascript:history.go(-1)">Retour</a></div> | |
125 | </div> | |
126 | </div> | |
127 | ||
128 | <div id="users2" class="blocktable"> | |
129 | <h2><span>Utilisateurs</span></h2> | |
130 | <div class="box"> | |
131 | <div class="inbox"> | |
132 | <table cellspacing="0"> | |
133 | <thead> | |
134 | <tr> | |
135 | <th class="tcl" scope="col">Nom d'utilisateur</th> | |
136 | <th class="tc2" scope="col">E-mail</th> | |
137 | <th class="tc3" scope="col">Titre/Statut</th> | |
138 | <th class="tc4" scope="col">Messages</th> | |
139 | <th class="tc5" scope="col">Note admin</th> | |
140 | <th class="tcr" scope="col">Actions</th> | |
141 | </tr> | |
142 | </thead> | |
143 | <tbody> | |
144 | <?php | |
145 | ||
146 | $result = $db->query('SELECT DISTINCT poster_id, poster FROM '.$db->prefix.'posts WHERE poster_ip=\''.$db->escape($ip).'\' ORDER BY poster DESC') or error('Unable to fetch post info', __FILE__, __LINE__, $db->error()); | |
147 | $num_posts = $db->num_rows($result); | |
148 | ||
149 | if ($num_posts) | |
150 | { | |
151 | // Loop through users and print out some info | |
152 | for ($i = 0; $i < $num_posts; ++$i) | |
153 | { | |
154 | list($poster_id, $poster) = $db->fetch_row($result); | |
155 | ||
156 | $result2 = $db->query('SELECT u.id, u.username, u.email, u.title, u.num_posts, u.admin_note, g.g_id, g.g_user_title FROM '.$db->prefix.'users AS u INNER JOIN '.$db->prefix.'groups AS g ON g.g_id=u.group_id WHERE u.id>1 AND u.id='.$poster_id) or error('Unable to fetch user info', __FILE__, __LINE__, $db->error()); | |
157 | ||
158 | if (($user_data = $db->fetch_assoc($result2))) | |
159 | { | |
160 | $user_title = get_title($user_data); | |
161 | ||
162 | $actions = '<a href="admin_users.php?ip_stats='.$user_data['id'].'">Voir stats IP</a> - <a href="search.php?action=show_user&user_id='.$user_data['id'].'">Afficher messages</a>'; | |
163 | ||
164 | ?> | |
165 | <tr> | |
166 | <td class="tcl"><?php echo '<a href="profile.php?id='.$user_data['id'].'">'.pun_htmlspecialchars($user_data['username']).'</a>' ?></td> | |
167 | <td class="tc2"><a href="mailto:<?php echo $user_data['email'] ?>"><?php echo $user_data['email'] ?></a></td> | |
168 | <td class="tc3"><?php echo $user_title ?></td> | |
169 | <td class="tc4"><?php echo $user_data['num_posts'] ?></td> | |
170 | <td class="tc5"><?php echo ($user_data['admin_note'] != '') ? $user_data['admin_note'] : ' ' ?></td> | |
171 | <td class="tcr"><?php echo $actions ?></td> | |
172 | </tr> | |
173 | <?php | |
174 | ||
175 | } | |
176 | else | |
177 | { | |
178 | ||
179 | ?> | |
180 | <tr> | |
181 | <td class="tcl"><?php echo pun_htmlspecialchars($poster) ?></td> | |
182 | <td class="tc2"> </td> | |
183 | <td class="tc3">Invité</td> | |
184 | <td class="tc4"> </td> | |
185 | <td class="tc5"> </td> | |
186 | <td class="tcr"> </td> | |
187 | </tr> | |
188 | <?php | |
189 | ||
190 | } | |
191 | } | |
192 | } | |
193 | else | |
194 | echo "\t\t\t\t".'<tr><td class="tcl" colspan="6">L\'adresse IP soumise est introuvable dans la base de données.</td></tr>'."\n"; | |
195 | ||
196 | ?> | |
197 | </tbody> | |
198 | </table> | |
199 | </div> | |
200 | </div> | |
201 | </div> | |
202 | ||
203 | <div class="linksb"> | |
204 | <div class="inbox"> | |
205 | <div><a href="javascript:history.go(-1)">Retour</a></div> | |
206 | </div> | |
207 | </div> | |
208 | <?php | |
209 | require PUN_ROOT.'footer.php'; | |
210 | } | |
211 | ||
212 | ||
213 | else if (isset($_POST['find_user'])) | |
214 | { | |
215 | $form = $_POST['form']; | |
216 | $form['username'] = $_POST['username']; | |
217 | ||
218 | // trim() all elements in $form | |
219 | $form = array_map('trim', $form); | |
220 | $conditions = array(); | |
221 | ||
222 | $posts_greater = trim($_POST['posts_greater']); | |
223 | $posts_less = trim($_POST['posts_less']); | |
224 | $last_post_after = trim($_POST['last_post_after']); | |
225 | $last_post_before = trim($_POST['last_post_before']); | |
226 | $registered_after = trim($_POST['registered_after']); | |
227 | $registered_before = trim($_POST['registered_before']); | |
228 | $order_by = $_POST['order_by']; | |
229 | $direction = $_POST['direction']; | |
230 | $user_group = $_POST['user_group']; | |
231 | ||
232 | if (preg_match('/[^0-9]/', $posts_greater.$posts_less)) | |
233 | message('Vous avez saisi une donnée non-numérique dans un champ qui en requière une.'); | |
234 | ||
235 | // Try to convert date/time to timestamps | |
236 | if ($last_post_after != '') | |
237 | $last_post_after = strtotime($last_post_after); | |
238 | if ($last_post_before != '') | |
239 | $last_post_before = strtotime($last_post_before); | |
240 | if ($registered_after != '') | |
241 | $registered_after = strtotime($registered_after); | |
242 | if ($registered_before != '') | |
243 | $registered_before = strtotime($registered_before); | |
244 | ||
245 | if ($last_post_after == -1 || $last_post_before == -1 || $registered_after == -1 || $registered_before == -1) | |
246 | message('Vous avez saisi une date/heure invalide.'); | |
247 | ||
248 | if ($last_post_after != '') | |
249 | $conditions[] = 'u.last_post>'.$last_post_after; | |
250 | if ($last_post_before != '') | |
251 | $conditions[] = 'u.last_post<'.$last_post_before; | |
252 | if ($registered_after != '') | |
253 | $conditions[] = 'u.registered>'.$registered_after; | |
254 | if ($registered_before != '') | |
255 | $conditions[] = 'u.registered<'.$registered_before; | |
256 | ||
257 | $like_command = ($db_type == 'pgsql') ? 'ILIKE' : 'LIKE'; | |
258 | while (list($key, $input) = @each($form)) | |
259 | { | |
260 | if ($input != '' && in_array($key, array('username', 'email', 'title', 'realname', 'url', 'jabber', 'icq', 'msn', 'aim', 'yahoo', 'location', 'signature', 'admin_note'))) | |
261 | $conditions[] = 'u.'.$db->escape($key).' '.$like_command.' \''.$db->escape(str_replace('*', '%', $input)).'\''; | |
262 | } | |
263 | ||
264 | if ($posts_greater != '') | |
265 | $conditions[] = 'u.num_posts>'.$posts_greater; | |
266 | if ($posts_less != '') | |
267 | $conditions[] = 'u.num_posts<'.$posts_less; | |
268 | ||
269 | if ($user_group != 'all') | |
270 | $conditions[] = 'u.group_id='.intval($user_group); | |
271 | ||
272 | if (empty($conditions)) | |
273 | message('Vous n\'avez saisi aucun critères de recherche.'); | |
274 | ||
275 | ||
276 | $page_title = pun_htmlspecialchars($pun_config['o_board_title']).' / Admin / Utilisateurs'; | |
277 | require PUN_ROOT.'header.php'; | |
278 | ||
279 | ?> | |
280 | <div class="linkst"> | |
281 | <div class="inbox"> | |
282 | <div><a href="javascript:history.go(-1)">Retour</a></div> | |
283 | </div> | |
284 | </div> | |
285 | ||
286 | <div id="users2" class="blocktable"> | |
287 | <h2><span>Utilisateurs</span></h2> | |
288 | <div class="box"> | |
289 | <div class="inbox"> | |
290 | <table cellspacing="0"> | |
291 | <thead> | |
292 | <tr> | |
293 | <th class="tcl" scope="col">Nom d'utilisateur</th> | |
294 | <th class="tc2" scope="col">E-mail</th> | |
295 | <th class="tc3" scope="col">Titre/Status</th> | |
296 | <th class="tc4" scope="col">Messages</th> | |
297 | <th class="tc5" scope="col">Note admin</th> | |
298 | <th class="tcr" scope="col">Actions</th> | |
299 | </tr> | |
300 | </thead> | |
301 | <tbody> | |
302 | <?php | |
303 | ||
304 | $result = $db->query('SELECT u.id, u.username, u.email, u.title, u.num_posts, u.admin_note, g.g_id, g.g_user_title FROM '.$db->prefix.'users AS u LEFT JOIN '.$db->prefix.'groups AS g ON g.g_id=u.group_id WHERE u.id>1 AND '.implode(' AND ', $conditions).' ORDER BY '.$db->escape($order_by).' '.$db->escape($direction)) or error('Unable to fetch user info', __FILE__, __LINE__, $db->error()); | |
305 | if ($db->num_rows($result)) | |
306 | { | |
307 | while ($user_data = $db->fetch_assoc($result)) | |
308 | { | |
309 | $user_title = get_title($user_data); | |
310 | ||
311 | // This script is a special case in that we want to display "Not verified" for non-verified users | |
312 | if (($user_data['g_id'] == '' || $user_data['g_id'] == PUN_UNVERIFIED) && $user_title != $lang_common['Banned']) | |
313 | $user_title = '<span class="warntext">Not verified</span>'; | |
314 | ||
315 | $actions = '<a href="admin_users.php?ip_stats='.$user_data['id'].'">Voir stats IP</a> - <a href="search.php?action=show_user&user_id='.$user_data['id'].'">Afficher messages</a>'; | |
316 | ||
317 | ?> | |
318 | <tr> | |
319 | <td class="tcl"><?php echo '<a href="profile.php?id='.$user_data['id'].'">'.pun_htmlspecialchars($user_data['username']).'</a>' ?></td> | |
320 | <td class="tc2"><a href="mailto:<?php echo $user_data['email'] ?>"><?php echo $user_data['email'] ?></a></td> | |
321 | <td class="tc3"><?php echo $user_title ?></td> | |
322 | <td class="tc4"><?php echo $user_data['num_posts'] ?></td> | |
323 | <td class="tc5"><?php echo ($user_data['admin_note'] != '') ? $user_data['admin_note'] : ' ' ?></td> | |
324 | <td class="tcr"><?php echo $actions ?></td> | |
325 | </tr> | |
326 | <?php | |
327 | ||
328 | } | |
329 | } | |
330 | else | |
331 | echo "\t\t\t\t".'<tr><td class="tcl" colspan="6">Aucun résultat.</td></tr>'."\n"; | |
332 | ||
333 | ?> | |
334 | </tbody> | |
335 | </table> | |
336 | </div> | |
337 | </div> | |
338 | </div> | |
339 | ||
340 | <div class="linksb"> | |
341 | <div class="inbox"> | |
342 | <div><a href="javascript:history.go(-1)">Retour</a></div> | |
343 | </div> | |
344 | </div> | |
345 | <?php | |
346 | ||
347 | require PUN_ROOT.'footer.php'; | |
348 | } | |
349 | ||
350 | ||
351 | else | |
352 | { | |
353 | $page_title = pun_htmlspecialchars($pun_config['o_board_title']).' / Admin / Utilisateurs'; | |
354 | $focus_element = array('find_user', 'username'); | |
355 | require PUN_ROOT.'header.php'; | |
356 | ||
357 | generate_admin_menu('users'); | |
358 | ||
359 | ?> | |
360 | <div class="blockform"> | |
361 | <h2><span>Recherche d'utilisateur</span></h2> | |
362 | <div class="box"> | |
363 | <form id="find_user" method="post" action="admin_users.php?action=find_user"> | |
364 | <p class="submittop"><input type="submit" name="find_user" value=" Rechercher " tabindex="1" /></p> | |
365 | <div class="inform"> | |
366 | <fieldset> | |
367 | <legend>Saisissez vos critères de recherche</legend> | |
368 | <div class="infldset"> | |
369 | <p>Recherche d'utilisateur dans la base de données. Vous pouvez saisir un ou plusieurs termes à rechercher. Utilisez le caractère astérisque (*) comme joker.</p> | |
370 | <table class="aligntop" cellspacing="0"> | |
371 | <tr> | |
372 | <th scope="row">Nom d'utilisateur</th> | |
373 | <td><input type="text" name="username" size="25" maxlength="25" tabindex="2" /></td> | |
374 | </tr> | |
375 | <tr> | |
376 | <th scope="row">Adresse e-mail</th> | |
377 | <td><input type="text" name="form[email]" size="30" maxlength="50" tabindex="3" /></td> | |
378 | </tr> | |
379 | <tr> | |
380 | <th scope="row">Titre</th> | |
381 | <td><input type="text" name="form[title]" size="30" maxlength="50" tabindex="4" /></td> | |
382 | </tr> | |
383 | <tr> | |
384 | <th scope="row">Nom réel</th> | |
385 | <td><input type="text" name="form[realname]" size="30" maxlength="40" tabindex="5" /></td> | |
386 | </tr> | |
387 | <tr> | |
388 | <th scope="row">Site web</th> | |
389 | <td><input type="text" name="form[url]" size="35" maxlength="100" tabindex="6" /></td> | |
390 | </tr> | |
391 | <tr> | |
392 | <th scope="row">ICQ</th> | |
393 | <td><input type="text" name="form[icq]" size="12" maxlength="12" tabindex="7" /></td> | |
394 | </tr> | |
395 | <tr> | |
396 | <th scope="row">MSN Messenger</th> | |
397 | <td><input type="text" name="form[msn]" size="30" maxlength="50" tabindex="8" /></td> | |
398 | </tr> | |
399 | <tr> | |
400 | <th scope="row">AOL IM</th> | |
401 | <td><input type="text" name="form[aim]" size="20" maxlength="20" tabindex="9" /></td> | |
402 | </tr> | |
403 | <tr> | |
404 | <th scope="row">Yahoo! Messenger</th> | |
405 | <td><input type="text" name="form[yahoo]" size="20" maxlength="20" tabindex="10" /></td> | |
406 | </tr> | |
407 | <tr> | |
408 | <th scope="row">Lieu</th> | |
409 | <td><input type="text" name="form[location]" size="30" maxlength="30" tabindex="11" /></td> | |
410 | </tr> | |
411 | <tr> | |
412 | <th scope="row">Signature</th> | |
413 | <td><input type="text" name="form[signature]" size="35" maxlength="512" tabindex="12" /></td> | |
414 | </tr> | |
415 | <tr> | |
416 | <th scope="row">Note admin</th> | |
417 | <td><input type="text" name="form[admin_note]" size="30" maxlength="30" tabindex="13" /></td> | |
418 | </tr> | |
419 | <tr> | |
420 | <th scope="row">Nombre de messages supérieur à</th> | |
421 | <td><input type="text" name="posts_greater" size="5" maxlength="8" tabindex="14" /></td> | |
422 | </tr> | |
423 | <tr> | |
424 | <th scope="row">Nombre de messages inférieur à</th> | |
425 | <td><input type="text" name="posts_less" size="5" maxlength="8" tabindex="15" /></td> | |
426 | </tr> | |
427 | <tr> | |
428 | <th scope="row">Le dernier message est après le</th> | |
429 | <td><input type="text" name="last_post_after" size="24" maxlength="19" tabindex="16" /> | |
430 | <span>(yyyy-mm-dd hh:mm:ss)</span></td> | |
431 | </tr> | |
432 | <tr> | |
433 | <th scope="row">Le dernier message est avant le</th> | |
434 | <td><input type="text" name="last_post_before" size="24" maxlength="19" tabindex="17" /> | |
435 | <span>(yyyy-mm-dd hh:mm:ss)</span></td> | |
436 | </tr> | |
437 | <tr> | |
438 | <th scope="row">Inscrit après le</th> | |
439 | <td><input type="text" name="registered_after" size="24" maxlength="19" tabindex="18" /> | |
440 | <span>(yyyy-mm-dd hh:mm:ss)</span></td> | |
441 | </tr> | |
442 | <tr> | |
443 | <th scope="row">Inscrit avant le</th> | |
444 | <td><input type="text" name="registered_before" size="24" maxlength="19" tabindex="19" /> | |
445 | <span>(yyyy-mm-dd hh:mm:ss)</span></td> | |
446 | </tr> | |
447 | <tr> | |
448 | <th scope="row">Trier par</th> | |
449 | <td> | |
450 | <select name="order_by" tabindex="20"> | |
451 | <option value="username" selected="selected">Nom d'utilisateur</option> | |
452 | <option value="email">e-mail</option> | |
453 | <option value="num_posts">messages</option> | |
454 | <option value="last_post">dernier message</option> | |
455 | <option value="registered">inscriptions</option> | |
456 | </select> <select name="direction" tabindex="21"> | |
457 | <option value="ASC" selected="selected">croissant</option> | |
458 | <option value="DESC">décroissant</option> | |
459 | </select> | |
460 | </td> | |
461 | </tr> | |
462 | <tr> | |
463 | <th scope="row">Groupe utilisateurs</th> | |
464 | <td> | |
465 | <select name="user_group" tabindex="22"> | |
466 | <option value="all" selected="selected">Tous les groupes</option> | |
467 | <?php | |
468 | ||
469 | $result = $db->query('SELECT g_id, g_title FROM '.$db->prefix.'groups WHERE g_id!='.PUN_GUEST.' ORDER BY g_title') or error('Unable to fetch user group list', __FILE__, __LINE__, $db->error()); | |
470 | ||
471 | while ($cur_group = $db->fetch_assoc($result)) | |
472 | echo "\t\t\t\t\t\t\t\t\t\t\t".'<option value="'.$cur_group['g_id'].'">'.pun_htmlspecialchars($cur_group['g_title']).'</option>'."\n"; | |
473 | ||
474 | ?> | |
475 | </select> | |
476 | </td> | |
477 | </tr> | |
478 | </table> | |
479 | </div> | |
480 | </fieldset> | |
481 | </div> | |
482 | <p class="submitend"><input type="submit" name="find_user" value=" Rechercher " tabindex="23" /></p> | |
483 | </form> | |
484 | </div> | |
485 | ||
486 | <h2 class="block2"><span>Recherche <acronym title="Internet Protocol" lang="en">IP</acronym></span></h2> | |
487 | <div class="box"> | |
488 | <form method="get" action="admin_users.php"> | |
489 | <div class="inform"> | |
490 | <fieldset> | |
491 | <legend>Saisissez une adresse <acronym title="Internet Protocol" lang="en">IP</acronym> à rechercher</legend> | |
492 | <div class="infldset"> | |
493 | <table class="aligntop" cellspacing="0"> | |
494 | <tr> | |
495 | <th scope="row">Adresse <acronym title="Internet Protocol" lang="en">IP</acronym><div><input type="submit" value=" Trouver " tabindex="25" /></div></th> | |
496 | <td><input type="text" name="show_users" size="18" maxlength="15" tabindex="24" /> | |
497 | <span>L'adresse <acronym title="Internet Protocol" lang="en">IP</acronym> à rechercher dans la base de données.</span></td> | |
498 | </tr> | |
499 | </table> | |
500 | </div> | |
501 | </fieldset> | |
502 | </div> | |
503 | </form> | |
504 | </div> | |
505 | </div> | |
506 | <div class="clearer"></div> | |
507 | </div> | |
508 | <?php | |
509 | ||
510 | require PUN_ROOT.'footer.php'; | |
511 | } |