Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[分享] Discuz! 2.5f & Discuz! 2.5 SP1 - 檢查註冊用戶名自動免等待版

[复制链接]
笨水水 发表于 2005-5-7 18:25:45 | 显示全部楼层 |阅读模式
作者:笨水水 ( 即小弟笨田田-.-)
嗚謝Polo!提供義務指導
難度:中低
日期:二零零五年三月二十九日
功能:當訪客註冊時輸入用戶名稱後,系統就會自動偵測該用戶名能否使用、名稱是否違法,性能大大超越按鈕檢測,經測試後此功能可於IE、Maxthon、FireFox、Netscape、Opera使用

親身演示:http://www.sasky-zone.com/bbs/register.php
輸入用戶名稱後繼續輸入密碼,系統始執行,
測試用戶名稱為:Admin


修改方法

./register.php  -------簡體見第2樓

尋找:
  1. include template('register');
复制代码

上面加入:
  1.         if (isset($_GET["user"])) {
  2.                 echo '
  3.                         <html>
  4.                         <head>
  5.                         </head>
  6.                         <body style="margin:0">
  7.                         <style type="text/css">
  8.                         .smalltxt                { font-family: Tahoma; font-size: 11px }
  9.                         </style>
  10.                 ';
  11.                 $username = trim($_GET["user"]);
  12.                 $query = $db->query("SELECT * FROM $table_members WHERE username='$username'");
  13.                 if($db->fetch_array($query)) {
  14.                         echo "<span class=smalltxt><font color=#FF0000>此用戶名已經被註冊了,請重新填寫。</font></span>";
  15.                 } elseif(strlen($username) > 15) {
  16.                         echo "<span class=smalltxt><font color=#FF0000>對不起,用戶名超過 15 個字符,請使用一個較短的用戶名。</font></span>";
  17.                 } elseif(preg_match("/^\s*$|^c:\\con\\con$| |[%,\*"\s\t\<\>\&]|^游客|^Guest/is", $username) || @preg_match('/^'.str_replace(array('\\*', ',', ' '), array('.*', '|', ''), preg_quote($censoruser, '/')).'$/i', $username)) {
  18.                         echo "<span class=smalltxt><font color=#FF0000>用戶名包含敏感字符或被系統屏蔽,請重新填寫。</font></span>";
  19.                 } else {
  20.                         echo "<span class=smalltxt>此用戶名暫時未有人註冊使用,您可以放心使用。</span>";
  21.                 }
  22.                 echo '</body></html>';
  23.         } else {
复制代码



尋找:
  1. include template('register');
复制代码

下面加入:
  1. }
复制代码





./風格/register.htm

尋找:
  1. <!--{else}-->
复制代码

下面加入:
  1. <script language="javascript">
  2.                         <!--
  3.                                 function check(tmp) {
  4.                                         iframe.location="register.php?user="+tmp;
  5.                                 }
  6.                         //-->
  7. </script>
复制代码



尋找:
  1. <input type="text" name="username" size="25" maxlength="25">
复制代码

下面加入:
  1. <iframe tabindex=100 frameborder="0" style="width:550;height:14;" scrolling="no" name="iframe"></iframe>
复制代码



尋找:
  1. <input type="password" name="password" size="25"
复制代码

後面加入:
  1. onfocus="check(username.value)"
复制代码

[ Last edited by 笨田田 on 2005-5-7 at 18:42 ]
 楼主| 笨水水 发表于 2005-5-7 18:42:35 | 显示全部楼层
if (isset($_GET["user"])) {
                echo '
                        <html>
                        <head>
                        </head>
                        <body style="margin:0">
                        <style type="text/css">
                        .smalltxt                { font-family: Tahoma; font-size: 11px }
                        </style>
                ';
                $username = trim($_GET["user"]);
                $query = $db->query("SELECT * FROM $table_members WHERE username='$username'");
                if($db->fetch_array($query)) {
                        echo "<span class=smalltxt><font color=#FF0000>此用户名已经被注册了,请重新填写。</font></span>";
                } elseif(strlen($username) > 15) {
                        echo "<span class=smalltxt><font color=#FF0000>对不起,用户名超过 15 个字符,请使用一个较短的用户名。</font></span>";
                } elseif(preg_match("/^\s*$|^c:\\con\\con$| |[%,\*\"\s\t\<\>\&]|^游客|^Guest/is", $username) || @preg_match('/^'.str_replace(array('\\*', ',', ' '), array('.*', '|', ''), preg_quote($censoruser, '/')).'$/i', $username)) {
                        echo "<span class=smalltxt><font color=#FF0000>用户名包含敏感字符或被系统屏蔽,请重新填写。</font></span>";
                } else {
                        echo "<span class=smalltxt>此用户名暂时未有人注册使用,您可以放心使用。</span>";
                }
                echo '</body></html>';
        } else {
回复

使用道具 举报

wayn12000 发表于 2005-5-7 19:20:06 | 显示全部楼层
会跟发送邀请注册函相冲
回复

使用道具 举报

 楼主| 笨水水 发表于 2005-5-7 22:22:48 | 显示全部楼层
如何相沖?
回复

使用道具 举报

freddy 发表于 2005-5-7 23:29:55 | 显示全部楼层
原来是笨水水!
精英啊!!!
这个在FD见过!
大力支持啊!
回复

使用道具 举报

web-cy44 发表于 2005-5-8 01:59:23 | 显示全部楼层
搞定
回复

使用道具 举报

第5季 发表于 2005-5-8 06:30:43 | 显示全部楼层
非常多谢
回去试一试
回复

使用道具 举报

红色的木玲铛 发表于 2005-5-8 15:12:22 | 显示全部楼层
ノめ??竒砆爹???叫?穝恶糶
回复

使用道具 举报

freddy 发表于 2005-5-8 15:18:08 | 显示全部楼层
汗...看不懂楼上的
回复

使用道具 举报

julianchan 发表于 2005-5-8 19:59:37 | 显示全部楼层
Originally posted by freddy at 2005-5-8 15:18
汗...看不懂楼上的

他/她是說"用戶名已經被註冊了,請重新填寫 "...=3=~”
我是用繁體中文編碼看出的...~*
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-11-24 13:18 , Processed in 0.036055 second(s), 4 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表