Проблема с скриптом л2 топа
Использую выше прикрепленный скрипт голосования l2top и GamePulse.
Сборка сервера: l2emu Gracia
Ошибка:
Бонус для персонажа: [Administrator]
Ваш ip: 87.245.147.29
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in W:\www\l2top.php on line 140
Персонаж с таким именем не найден в базе!
0 adena добавлено вашему чару
Очень прошу о помощи!Я вообще не знаю что делать.Я не слепой, я вижу что написано at line 140, но я всеравно ничего с этим не могу сделать.Пожалуйста помогите разобраться в скрипте и найти ошибку.
— рас!11рас!1
Тут видимо структура БД другая... :)
supplied argument is not a valid MySQL
Неверная аргументация в запросе :)
Главная ошибка одится в полуметре от монитора...
Так и не понял в чем проблема вопрос остается открытым ...
— рас!11рас!1
Распечатай, то, что возвратит MySQL_Error() после сбойного запроса.
Так будет легче понять где ошибка.
Timeo Danaos et dona ferentes
<!-- ПОЖАЛУЙСТА СОХРАНЯЙТЕ КОПИРАЙТЫ. С уважением GamePulse Project. //-->
<html><center>
<head>
<title>Бонус за голосование!</title>
<link href="templates/style.css" rel="stylesheet" type="text/css" media="screen" />
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<link rel="shortcut icon" type="image/x-icon" href="favicon.ico" />
</head>
<body class=body2>
<div id="bgiright">
<div id="con">
<div id="site2">
<div id="111" class="321" align="right">
<span class="321"></span><br></div>
<div id="123"></div>
<div id="right" align="right"> </div>
<div id="upmenu2">
<div class="submenu">
<table border=0 align=center width=100%>
<tr><td heigth=10 valign=top><span id="menu_text"> </span>
</td></tr>
<tr><td heigth=10 valign=bottom>
<div><a href="index.php"><font color="#f3c0a1">На главную</font></a></div>
<div><a href="l2top.php"><font color="#f3c0a1">Бонус за голос в L2Top</font></a></div>
</div>
</div>
</td></tr>
</table>
<div class="clear"></div>
<div class="mainmenu">
</div></div>
</div>
<div class="clear"> </div>
<div id="con2">
<div class="content">
<div class="logo"><img class="logo_img" src="img/blank.gif" alt="" width="276" height="460" border="0" usemap="#Map" />
<map name="Map"><area shape="circle" coords="138,89,54" href="http://gamepulse.ru/" target="_blank"></map></div>
<div class=textarea2>
<div align="left">
<?php
//Пожалуйста сохраняйте копирайты. GamePulse Team. Gamepulse.ru
function antiinjection($str)
{
$words = array("\\", "'", ",", ";", "--", "-", "%20", "%27", " ", "`", "=", "%");
$words_preg = array("|INSERT|i", "|DROP|i", "|SELECT|i", "|DELETE|i", "|UPDATE|i", "|TRUNCATE|i", "|SHUTDOWN|i");
for($i=0;$i<count($words_preg);$i++){
if(preg_match($words_preg[$i], $str)){$apina = 500;}
}
for($i=0;$i<count($words);$i++){
$jopa=strpos($str, $words[$i]);
if(is_numeric($jopa)){$apina = 500;}
}
if($apina==500){
return FALSE;
} else {
return TRUE;
}
}
$adena_for_vote = 1; // Скольо аден платим за 1 голос. ВНИМАНИЕ! Чтобы добавить бонус у персонажа должен быть хоть 1 предмет с таким ИД!
$mysql_host = "localhost";
$mysql_login = "******";
$mysql_pass = "******";
$gameserver_db = "l2jdb";
$realtime = time();
$exp_time = 3;
$realtime2 = $realtime+$exp_time;
$serverip='127.0.0.1';
$porta=7777;
$sockres = @fsockopen ($serverip,$porta, $errno, $errstr, 1);
if (!$sockres)
{
@fclose($sockres);
echo "<span style='color:#990000;'>
<h1>Проголосуй и получи приз!</h1>
<b>Бонус за голос в L2Top.ru!</b><br>
Чтобы получить приз за голосование в рейтинге, вы должны:<br>
Проголосовать за сервер. ( <a href='http://l2top.ru/?voteme=5080' target='_blank'><b>
Нажмите здесь, чтобы проголосовать</u></b></a> )<br>
(<i>Голос считается зачисленным, если на L2TOP вам после голосования написали 'Спасибо. Ваш голос зачтен'. Приз можно получить только если ваш голос был зачтен!</i>)<br>
На этой странице вписать ник персонажа, которому вы хотите отдать приз.<br>
Далее если все данные верны вы получить приз на указанного персонажа.<br>
Внимание! Перед отправкой бонуса убедитесь что ваш персонаж не в онлайне, иначе мы не гарантируем зачисление.
<br><br></span><img src='img/offline.jpg' height='33' />";
}
else {
@fclose($sockres);
$ip='127.0.0.1';
if (!IsSet($ip)) die('IP required');
if (!IsSet($port)) $port=7777;
$fs=@fsockopen($ip,$port) or die('Sock ERROR');
fclose($fs);
echo "<span style='color:#990000;'>
<h1>Проголосуй и получи приз!</h1>
<b>Бонус за голос в L2Top.ru!</b><br>
Чтобы получить приз за голосование в рейтинге, вы должны:<br>
Проголосовать за сервер. ( <a href='http://l2top.ru/?voteme=5080' target='_blank'><b>
Нажмите здесь, чтобы проголосовать</u></b></a> )<br>
(<i>Голос считается зачисленным, если на L2TOP вам после голосования написали 'Спасибо. Ваш голос зачтен'. Приз можно получить только если ваш голос был зачтен!</i>)<br>
На этой странице вписать ник персонажа, которому вы хотите отдать приз.<br>
Далее если все данные верны вы получить приз на указанного персонажа.<br>
Внимание! Перед отправкой бонуса убедитесь что ваш персонаж не в онлайне, иначе мы не гарантируем зачисление.
<br><br></span><img src='img/online.jpg' height='33' /><br><br>";
}
if (isset($_POST['nick']))
{
$total = 0;
$your_ip = $_SERVER['REMOTE_ADDR'];
echo '<fieldset>
<legend><img src=img/coins_add.jpg> <b>Бонус для персонажа: </b><font color=red>'.$_POST['nick'].'</font><br /><br></legend>';
echo '<b>Ваш ip: </b>'.$your_ip.'<br />';
$error = '';
$voters = array();
$link = mysql_connect($mysql_host, $mysql_login, $mysql_pass) or die("Could not connect : " . mysql_error());
mysql_select_db($gameserver_db) or die("Could not connect : " . mysql_error());
mysql_query ("set NAMES cp1251");
$result = mysql_query("SELECT `obj_Id` FROM `characters` WHERE `char_name` = '".mysql_escape_string($_POST['nick'])."'");
$row = mysql_fetch_assoc($result);
if ($row == array())//есть ли такой чар вообще
$error .= '<font color=red>Персонаж с таким именем не найден в базе!<br /></font>';
else
{
$char_id = $row['obj_Id'];
$html = @file_get_contents('http://l2top.ru/?servID=1&act=info');
if (!$html || !preg_match_all('/<td><a href=\'[^\']+\'>([^<]+)<\/a><\/td>\s+<td>([^<]+)<\/td>/', $html, $matches))
$error .= 'Не удалось получить информацию с l2top.ru!<br/>';
else
{
foreach ($matches[1] as $id => $ip)
{
if ($ip == $your_ip)
$voters[] = $matches[2][$id];
}
if ($voters != array())
{
foreach ($voters as $time)
{
$result = mysql_query("SELECT * FROM `l2top` WHERE `ip` = '".mysql_escape_string($your_ip)."' AND `time` = '".mysql_escape_string($time)."'");
$row = mysql_fetch_assoc($result);
if ($row == array())
{//добавляем бонусы
$result = mysql_query("SELECT * FROM `items` WHERE `owner_id` = ".mysql_escape_string($char_id)." AND `item_id` = 57");
$row = mysql_fetch_assoc($result);
if ($row == array())
{
$result = mysql_query("SELECT MAX(`object_id`)+1 AS `id` FROM `items`");
$row = mysql_fetch_assoc($result);
$ins_id = $row['id'];
mysql_query("INSERT `items` (`owner_id`, `object_id`, `item_id`, `count`, `enchant_level`, `loc`, `loc_data`, `price_sell`, `price_buy`, `time_of_use`, `custom_type1`, `custom_type2`, `mana_left`)
VALUES(".mysql_escape_string($char_id).", ".$ins_id.", 6673, ".$adena_for_vote.", 0, 'INVENTORY', 0, 0, 0, NULL, 0, 0, -1, 0)");
}
else
mysql_query("UPDATE `items` SET `count` = `count` + ".$adena_for_vote." WHERE `owner_id` = ".mysql_escape_string($char_id)." AND `item_id` = 6673");
mysql_query("INSERT INTO `l2top` (`nick`, `ip`, `time`) VALUES ('".mysql_escape_string($_POST['nick'])."', '".mysql_escape_string($your_ip)."', '".mysql_escape_string($time)."')");
$total += $adena_for_vote;
$error .= '<font color=green>Голос за '. $time.' засчитан!<br/></font>';
}
else
$error .= '<font color=red>Голос за '. $time.' уже был засчитан ранее!<br/></font>';
}
}
else
$error .= '<font color=red>Ваш ИП не найден в списке голосовавших за сервер. Пожалуйста сначала проголосуйте!<br></font>';
}
}
echo $error.'<font color=green><b>'.$total.' adena</b></font> добавлено вашему чару!<br/><br><a href="l2top.php">Назад</a></fieldset>';
}
else
{
?>
<form method="POST" action="l2top.php">
<fieldset>
<legend><b><img src='img/coins_add.jpg'> <font color='blue'>Получить приз: </font></b></legend>
<table cellspacing=0 border=0 cellpadding=0 width=100%>
<tr><td align=left>
<br><b>Введите свой ник </b>
<br><i>(Или персонажа на которого хотите получить бонус. <font color="red">Персонаж должен находится OFFLINE! Т.е. быть не в игре.Иначе бонус зачислен не будет.</font>)</i> <br><br>
</td>
<td align=right>
<div align=right>
<input type=text name=nick value='' maxlength='16'>
</div>
</td></tr>
</table>
</fieldset>
<br>
<div align=right>
<input type=submit name=select value='Продолжить'></form></div>
<br>
<?php
}
?>
<img src='img/blank.gif' height='60' />
</div></div>
</div>
</div><div id="downmenu2"><div class="mainmenu"></div>
<div class="submenu">
</div>
<span id="menu_text2"> </span>
<br>
</div>
</div>
</div>
<div>
</body></center>
</html>
ВОТ САМ СКРИПТ.
Ошибка:
Бонус для персонажа: [Administrator]
Ваш ip: 87.245.147.29
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in W:\www\l2top.php on line 140
Персонаж с таким именем не найден в базе!
0 adena добавлено вашему чару
ВОТ САМА ОШИБКА.
Что еще выложить?Я просто вообще не понимаю что сдесь твориться :D
— рас!11рас!1



