<?php
require_once("/config.php");session_start();if(!empty($_POST["security"])){ if($_SESSION["security"]  != $_POST["security"]) { $errors[] = "输入无效. 请重试."; }}$security = rand(10000, 100000);
$_SESSION["security"] = $security;if(!empty($_POST["accountname"]) && !empty($_POST["password"]) && !empty($_POST["charactername"]) && !empty($_POST["security"])){ $mysql_connect = mysqli_connect($mysql["host"], $mysql["username"], $mysql["password"]) or die("无法链接数据库.");
mysqli_select_db($mysql_connect, $mysql["characters"]) or die("无法链接服务器数据库.");

$post_accountname = mysqli_real_escape_string($mysql_connect, trim(strtoupper($_POST["accountname"])));
$check_account_query = mysqli_query($mysql_connect, "SELECT COUNT(*) FROM auth.account WHERE username = '".$post_accountname."'");
$check_account_results = mysqli_fetch_array($check_account_query);
if($check_account_results[0]==0){ $errors[] = "账户不存在.请重试."; }

$post_password = mysqli_real_escape_string($mysql_connect, trim(strtoupper($_POST["password"])));
$post_password_final = mysqli_real_escape_string($mysql_connect, SHA1("".$post_accountname.":".$post_password.""));
$check_password_query = mysqli_query($mysql_connect, "SELECT COUNT(*) FROM auth.account WHERE sha_pass_hash = '".$post_password_final."'");
$check_password_results = mysqli_fetch_array($check_password_query);
if($check_password_results[0]==0){ $errors[] = "密码错误.请重试."; }

$post_charactername = mysqli_real_escape_string($mysql_connect, trim(strtoupper($_POST["charactername"])));
$check_character_query = mysqli_query($mysql_connect, "SELECT COUNT(*) FROM characters.characters WHERE name = '".$post_charactername."'");
$check_character_results = mysqli_fetch_array($check_character_query);
if($check_character_results[0]==0){ $errors[] = "角色名不存在.请重试."; }

$check_accountguid_query = mysqli_query($mysql_connect, "SELECT COUNT(*) FROM characters.characters,auth.account WHERE characters.characters.`name` = '".$post_charactername."' AND characters.characters.account = auth.account.id AND auth.account.username = '".$post_accountname."'");
$check_accountguid_results = mysqli_fetch_array($check_accountguid_query);
if($check_accountguid_results[0]==0){ $errors[] = "账户角色不匹配.请重试."; }

if(!is_array($errors)){

mysqli_query($mysql_connect, "DELETE character_spell,character_classless FROM character_spell,character_classless,characters.characters WHERE characters.name = '".$post_accountname."' AND character_spell.guid = characters.guid AND character_classless.guid = characters.guid;") or die(mysqli_error($mysql_connect));

$errors[] = '<h2>成功重置账号<font color="red">'.$post_accountname.'</font>下角色:<font color="blue">'.$post_charactername.'</font>的天赋及技能</h2>.';  

}

mysqli_close($mysql_connect);}function error_msg(){ global $errors;

if(is_array($errors)){

foreach($errors as $msg){

echo '<div class="errors">'.$msg.'</div>';

}

}}?><!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="stylesheet" type="text/css" href="site.css" />
<meta name="description" content="<?php $site["meta_description"] ?>" />
<meta name="keywords" content="<?php echo $site["meta_keywords"]; ?>" />
<meta name="robots" content="<?php echo $site["meta_robots"] ?>" />
<meta name="author" content="Jordy Thery" />
<link rel="shortcut icon" href="img/favicon.png" type="image/png" />
<title><?php echo $site["title"]; ?></title>
</head>
<body>
  <div id="web_bg" style="position:absolute; width:100%; height:100%; z-index:-1">
  <img style="position:cover;" src="img/background.jpg" height="100%" width="100%" />
  </div>
 <script type="text/javascript">
 function checkform ( form )
 {
 
 if (form.accountname.value == "") { alert( "账户名称未填写. 请重试." ); form.accountname.focus(); return false; } else { if (form.accountname.value.length < 1) { alert( "账户名称小于1个字符,请重试" ); form.accountname.focus(); return false; } }
 if (form.password.value == "") { alert( "密码是空的. 请重试." ); form.password.focus(); return false; } else { if (form.password.value.length < 6) { alert( "密码长度小于6个字符,请重试!" ); form.password.focus(); return false; } }
 if (form.charactername.value == "") { alert( "角色名是空的. 请重试." ); form.charactername.focus(); return false; } else { if (form.charactername.value.length < 1) { alert( "角色名长度小于1个字符,请重试!" ); form.charactername.focus(); return false; } }
 if (form.security.value == "") { alert( "验证码是空的. 请重试." ); form.security.focus(); return false; }
 
 return true ;
 }
 </script><table class="reg">
<tr>
<td>
<a href="<?php echo $_SERVER["PHP_SELF"]; ?>"><img src="img/logo.png" alt="<?php echo $site["title"]; ?>" /></a>
</td>
</tr>
<tr>
<td>

<?php error_msg(); ?>

<form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="POST" onsubmit="return checkform(reg);" name="reg">

<table class="form">
    <li>重置说明</li>
<li>1、角色必须完全退出游戏。</li>
<li>2、角色名如果包含特殊字符,如火星文等,可能无法生效。</li>
<li>3、角色技能写入数据库有缓存,才学会的技能需要等待至少1分钟之后再进行重置。</li>
<li>4、重置会删除所有已学会的技能,谨慎使用!!!!!!。</li>
<tr>
<td align="right">
<font color="#FF0000">账户名称:</font>
</td>
<td align="left">
<input name="accountname" type="text" maxlength="32" /><font style="color:red;">避免特殊字符</font>
</td>
</tr>
<tr>
<td align="right">
<font color="#FF0000">账户密码:</font>
</td>
<td align="left">
<input name="password" type="password" maxlength="32" /><font style="color:red;">避免特殊字符</font>
</td>
</tr>
<tr>
<td align="right">
<font color="#FF0000">角色名称:</font>
</td>
<td align="left">
<input name="charactername" type="text" maxlength="32" /><font style="color:red;">避免特殊字符</font>
</td>
</tr> <tr>
<td align="right">
<font color="#FF0000">验&nbsp;&nbsp;证&nbsp;&nbsp;码:</font> 
</td>
<td align="left">
<input name="security" type="text" maxlength="5" />&nbsp;<font style="color:#00b0f2;"><?php echo $security; ?></font>
</td>
</tr>

<tr>
<td colspan="2" align="center">
<input type="submit" class="sbm" value="点击重置" />
<a href= "../index.html"><input type="button" class="sbm" value="返回主页" /></a>
</td>
</tr>
</table>

</form>

<div class="copy"><font color="#FF0000"><b><?php echo $site["realmlist"]; ?></b><br /></div></font> </td>
</tr>
</table></body>
</html>

解决方案 »

  1.   

    $check_accountguid_query = mysqli_query($mysql_connect, "SELECT COUNT(*) FROM characters.characters,auth.account WHERE characters.characters.`name` = '".$post_charactername."' AND characters.characters.account = auth.account.id AND auth.account.username = '".$post_accountname."'");
    $check_accountguid_results = mysqli_fetch_array($check_accountguid_query);
    if($check_accountguid_results[0]==0){ $errors[] = "账户角色不匹配.请重试."; }以前在没有添加这句,在数据库匹配账户以及账户下角色的时候,重置功能是有效的,但是添加了以后就不行了,功能可以匹配,但是无法执行数据库删除语句,求大神解决下