免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2047 | 回复: 3
打印 上一主题 下一主题

如何让这个php代码支持中文人名呢?! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-02-04 13:34 |只看该作者 |倒序浏览
这是我在网上找的一个老外的php文档,但是只是识别英文字母和数字,可是现在想用在我的库上,我的数据库的人物名都是中文名字的,我试着改了一点,让他能支持中文识别,比如
function shitChecker($str)
{
    $var = preg_match('/^[\x{4e00}-\x{9fa5}A-Za-z0-9_]+$/u',$str);
        return $var;
}

可是放在这个文档之后运行之后还是说找不到该人名,返回的值是No such character exists on that account!,我就郁闷了,整个文档如下,看哪位朋友能有余力能指点一二,先谢了!在线等
<?php

/*
Nothing needs to be changed, feel free to alter anything.
Please leave the 'Made by Bellatrix' line.
*/


echo "<html><body>";
echo "<center><table>";
echo "<tr><td colspan=2 align=center>Put a picture here</td></tr>";

include('_config.php');
global $aHost, $aDatabase, $aPort, $aUsername, $aPass, $cHost, $cDatabase, $cPort, $cUsername, $cPass;

function shitChecker($str)
{
&nbsp;&nbsp;&nbsp;&nbsp;$var = preg_match('/^[\x{4e00}-\x{9fa5}A-Za-z0-9_]+$/u',$str);
&nbsp;&nbsp;&nbsp;&nbsp;return $var;
}
function shitCheckerNum($str)
{
&nbsp;&nbsp;$var = preg_match('/[^a-zA-Z0-9]/', $str);
&nbsp;&nbsp;return $var;
}

//if unstuck button is pressed, verify and query db if valid

if(isset($_POST['submit']))
{
&nbsp;&nbsp;&nbsp;&nbsp;//players account name, password and character name

&nbsp;&nbsp;&nbsp;&nbsp;$account = $_POST['account'];
&nbsp;&nbsp;&nbsp;&nbsp;$password = $_POST['password'];
&nbsp;&nbsp;&nbsp;&nbsp;$character = $_POST['character'];
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//Connect to character database

&nbsp;&nbsp;&nbsp;&nbsp;$con = mysql_connect($cHost.":".$cPort, $cUsername, $cPass) or die(mysql_error());
&nbsp;&nbsp;&nbsp;&nbsp;mysql_select_db($cDatabase) or die(mysql_error());


&nbsp;&nbsp;&nbsp;&nbsp;//Remove bullshit characters from user entered data

&nbsp;&nbsp;&nbsp;&nbsp;$character = mysql_real_escape_string(html_entity_decode(htmlentities($character)));

&nbsp;&nbsp;&nbsp;&nbsp;//check for non-alpha characters

&nbsp;&nbsp;&nbsp;&nbsp;if(shitChecker($character) == 1)
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;die("Error: The character name contains invalid characters!");
&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;//Get acct id

&nbsp;&nbsp;&nbsp;&nbsp;$query = "SELECT acct FROM characters WHERE name = '".$character."'";

&nbsp;&nbsp;&nbsp;&nbsp;$result = mysql_query($query) or die(mysql_error());
&nbsp;&nbsp;&nbsp;&nbsp;$numrows = mysql_num_rows($result);

&nbsp;&nbsp;&nbsp;&nbsp;echo "<tr><td align=center>";

&nbsp;&nbsp;&nbsp;&nbsp;//if no rows exist, the character does not exist

&nbsp;&nbsp;&nbsp;&nbsp;if($numrows == 0)
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;die("No such character exists on that account!");
&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;$row = mysql_fetch_array($result);
&nbsp;&nbsp;&nbsp;&nbsp;$acct = $row[0];

&nbsp;&nbsp;&nbsp;&nbsp;mysql_close();

&nbsp;&nbsp;&nbsp;&nbsp;//Connect to accounts database

&nbsp;&nbsp;&nbsp;&nbsp;$con = mysql_connect($aHost.":".$aPort, $aUsername, $aPass) or die(mysql_error());
&nbsp;&nbsp;&nbsp;&nbsp;mysql_select_db($aDatabase) or die(mysql_error());

&nbsp;&nbsp;&nbsp;&nbsp;//Remove bullshit characters from user entered data

&nbsp;&nbsp;&nbsp;&nbsp;$account = mysql_real_escape_string(html_entity_decode(htmlentities($account)));
&nbsp;&nbsp;&nbsp;&nbsp;$password = mysql_real_escape_string(html_entity_decode(htmlentities($password)));

&nbsp;&nbsp;&nbsp;&nbsp;if(shitCheckerNum($account) == 1)
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;die("Error: Account contains invalid characters!");
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;if(shitCheckerNum($password) == 1)
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;die("Error: Password contains invalid characters!");
&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;$query = "SELECT login, acct, password FROM accounts WHERE login ='".$account."' AND password = '".$password."' AND acct = '".$acct."'";

&nbsp;&nbsp;&nbsp;&nbsp;$result = mysql_query($query) or die(mysql_error());
&nbsp;&nbsp;&nbsp;&nbsp;$numrows = mysql_num_rows($result);

&nbsp;&nbsp;&nbsp;&nbsp;//if no rows, user entered invalid data

&nbsp;&nbsp;&nbsp;&nbsp;if ($numrows == 0)
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;die("Account name or password is incorrect!");
&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;//update the character table to set the character to hearth location

&nbsp;&nbsp;&nbsp;&nbsp;$query = "update characters SET positionX = bindpositionX, positionY = bindpositionY, positionZ = bindpositionZ, mapId = bindmapId, zoneId = bindzoneId WHERE name = '".$character."'";

&nbsp;&nbsp;&nbsp;&nbsp;mysql_query($query) or die(mysql_error());

&nbsp;&nbsp;&nbsp;&nbsp;echo "Character '".$character."' has been unstuck!";

&nbsp;&nbsp;&nbsp;&nbsp;echo "</td></tr>";

&nbsp;&nbsp;&nbsp;&nbsp;//close mysql connection

&nbsp;&nbsp;&nbsp;&nbsp;mysql_close();
}
//if page is loaded, display unstuck form

else
{
&nbsp;&nbsp;&nbsp;&nbsp;echo "<form name=myform method=post action='unstuck.php'>";
&nbsp;&nbsp;&nbsp;&nbsp;echo "<tr><td colspan=2 align=center><font size=4>Character Unstuck</td></tr>";
&nbsp;&nbsp;&nbsp;&nbsp;echo "<tr><td width=125>Account Name: </td><td><input type=text name=account value=''></td></tr>";
&nbsp;&nbsp;&nbsp;&nbsp;echo "<tr><td width=125>Character Name: </td><td><input type=text name=character value=''></td></tr>";
&nbsp;&nbsp;&nbsp;&nbsp;echo "<tr><td width=125>Password: </td><td><input type=password name=password value=''></td></tr>";
&nbsp;&nbsp;&nbsp;&nbsp;echo "<tr><td colspan=2 align=center><br><input type=submit name=submit value=Unstuck></td></tr>";
&nbsp;&nbsp;&nbsp;&nbsp;echo "</form>";
}

echo "</table></center>";
echo "Made by Bellatrix";

?>

论坛徽章:
0
2 [报告]
发表于 2009-02-05 00:32 |只看该作者
已经解决了,谢谢各位的关心!哈哈

论坛徽章:
0
3 [报告]
发表于 2009-02-05 13:09 |只看该作者
include('_config.php');
global $aHost, $aDatabase, $aPort, $aUsername, $aPass, $cHost, $cDatabase, $cPort, $cUsername, $cPass;
这些变量是怎么回事呢?为什么要是这里定义为全局变量呢

论坛徽章:
0
4 [报告]
发表于 2009-02-05 14:21 |只看该作者
你没看到说调用的变量是config.php文件里面定义好的么,这是简单的mvc模式开发,所以这里定义的变量都是config里面定好的!
支持中文我说一下,就是在页头加一个header("Content-Type: text/html;charset=UTF-8"); 搞定,呵呵
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP