Перейти к содержимому

Фото
- - - - -

Нужна помощь


  • Вы не можете создать новую тему
  • Please log in to reply
4 ответов в этой теме

#1 shizzquick

shizzquick

    Get the fuck out of there!

  • Пользователь
  • 23 сообщений
  • Откуда:Dangerous Area of Criminals

Отправлено 11 августа 2010 - 17:53

Хай всем, вообщем такая проблема, при входе в онлайн игру, пишет вот что:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/oldang/public_html/fclub/enter.php on line 46

Помогите, че нужно сделать чтоб избавиться? см. далее сам код страницы:
<?php

	include "connect.php";
	$data = mysql_fetch_array(mysql_query("SELECT * FROM .users. WHERE .login. = '{$_POST['login']}' AND .pass. = '".md5($_POST['psw'])."' LIMIT 1;"));
	if ($data[0] == null) {
		echo "<html><head><META http-equiv=Content-type content='text/html; charset=windows-1251'><title>Онлайн игра Ардания</title></head><body><BR>Неверный пароль, войдите с <a href=index.php>главной страницы</a>.<BR><BR><BR><hr><table width=100%><tr><td align=left><b><a href='javascript:window.history.go(-1);'>Назад</a></b></td><td align=right></td></tr></table></body></html>";
	}
	elseif($data['block']==1)
	{
		echo "<html><head><META http-equiv=Content-type content='text/html; charset=windows-1251'><title>Онлайн игра Ардания</title></head><body><BR>Онлайн игра Ардания<BR><BR><BR><hr><table width=100%><tr><td align=left><b><a href='javascript:window.history.go(-1);'>Назад</a></b></td><td align=right></td></tr></table></body></html>";
	}
	else
	{
		include("functions.php");
		session_start();
		//delo_multi
		if($_COOKIE['battle']!= null && $data['id'] != $_COOKIE['battle']) {
			mysql_query("INSERT INTO .delo_multi. (.idperslater.,.idpersnow.) values ('".$_COOKIE['battle']."','".$data['id']."');");
		}

		///
		setcookie("battle", $data['id']);
		$_SESSION['uid'] = $data['id'];
		mysql_query("UPDATE .online. SET .date. = ".time()." WHERE .id. = {$data['id']};");
		mysql_query("UPDATE .users. SET .sid. = '".session_id()."' WHERE .id. = {$data['id']};");
		$_SESSION['sid'] = session_id();
		//mysql_query("UPDATE .users. SET .ip. = '".$_SERVER['REMOTE_ADDR']."' WHERE .id. = {$data['id']};");
		if (!empty($_SERVER['HTTP_CLIENT_IP']))   //check ip from share internet
			{
			$ip=$_SERVER['HTTP_CLIENT_IP'];
			}
		elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))   //to check ip is pass from proxy
			{
			$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
			}
		else
			{
			$ip=$_SERVER['REMOTE_ADDR'];
			}
		$time_now=time();
		mysql_query("INSERT INTO .iplog. (owner,ip,date) values ('".$data['id']."','$ip','$time_now');");

		addch ("Вас приветствует <a href=javascript:top.AddTo(\"".$data['login']."\")><span oncontextmenu=\"OpenMenu()\">".$data['login']."</span></a>!   ",$data['room']);
		$rs=mysql_query("SELECT * FROM .telegraph. WHERE .owner. = '".$data['id']."';");
		mysql_query("DELETE FROM .telegraph. WHERE .owner. = '".$data['id']."';");
	   while($r = mysql_fetch_array($rs)) {
			addchp ($r['text'],'{[]}'.$data['login'].'{[]}');
		}
		##header("Location:fight.php");
$getLastID = mysql_fetch_row(mysql_query("SELECT max(id) FROM .chat. ")) or die(mysql_error());
mysql_query("UPDATE person SET chat_last_id = {$getLastID[0]}  WHERE user = '{$inf['user']}' ");
	}
?>

Прикрепленные файлы

  • Прикрепленный файл  enter.php   2,69К   3 Количество загрузок

  • 0

#2 Isamashii Tora

Isamashii Tora

    Странствующий

  • Постоялец
  • 1 840 сообщений
  • Откуда:Asylum

Отправлено 11 августа 2010 - 18:59

Ну очевидно из ошибки что неправильный аргумент пытается получить из результатов. Пиши разработчикам игры, пускай смотрят, чужой код копать :\

Хотя пункт $r = меня насторожил. Правда скорее всего он скрыт в functions.php или другом инклюде.

Сообщение изменено: Clement (11 августа 2010 - 19:02 )

  • 0
"Миры рождаются и умирают, память о людях с которыми их прошел - остается" © Тристар

#3 Ferzin

Ferzin
  • Постоялец
  • 1 967 сообщений

Отправлено 11 августа 2010 - 19:09

поставь @ перед mysql_fetch_array
  • 0

#4 еть.

еть.
  • Постоялец
  • 2 655 сообщений

Отправлено 12 августа 2010 - 15:38

Для диагностики проблемы исправь 44 строку на
$rs=mysql_query("SELECT * FROM .telegraph. WHERE .owner. = '".$data['id']."';") or die ('Error: '.mysql_error ());
Если ничего не выдаст, то скорее всего возвращается 0 записей и соответственно цикла не получается.

поставь @ перед mysql_fetch_array

Это всего лишь заткнёт проблему, а не решит её.
  • 0

– Совсем худо, – заключил хозяин, – что-то, воля ваша, недоброе таится в мужчинах, избегающих вина, игр, общества прелестных женщин, застольной беседы. Такие люди или тяжко больны, или втайне ненавидят окружающих.


#5 Alexano

Alexano
  • Пользователь
  • 109 сообщений

Отправлено 13 августа 2010 - 11:20

var_dump($rs) выдаёт пусто. Перед тем как делать while проверь что $rs не пустой

if(!empty($rs)) {
while($r = mysql_fetch_array($rs)) {
addchp ($r['text'],'{[]}'.$data['login'].'{[]}');
}

}

ну и конечно не мешало бы безопасности добавить, в скрипте одни дыры, используй хотя бы mysql_real_escape_string
  • 0