SQLi - the right syntax to use near '-45, 15' at line 1 ?

cmsfan

Registered
Това:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-45, 15' at line 1
Може ли да е дупка в сигурността ?
 

cmsfan

Registered
Добре, може ли да се пробва да я оправи някой:
Код:
<?php 
define('IN_VALID', true);
include ('conf.php');
//$ns - номер страница 
//$br - брой страница 
//$one - първа 
//$sl - следваща 
//$pl - последна 
//$pr - предишна 
$br = 15; 
$pageNum = 1; 
if(isset($_GET['page'])) { 
$pageNum = (int)$_GET['page'];
$pageNum = ($pageNum)?$pageNum:1;
} 
$redove = ($pageNum - 1) * $br; 
$result = mysql_query("SELECT * FROM `chatbox` ORDER BY id DESC LIMIT $redove, $br")or die(mysql_error()); 
while($row = mysql_fetch_array($result)) { 
$id = $row['id']; 
$nick = $row['nick']; 
$message = $row['message']; 
$date = date('Y-m-d');
echo '<table border="0" style="width: 100%" class="backbox"><tr><td style="background: #272727; border:1px solid #474747"><b><img src="chat/chat.png" alt="" /> [' . $row[2] . ']</b> <a href="forum/member/'.$nick.'" title="виж профила на '.$nick.'">' . $nick . '</a>: ' . $message . '</td></tr></table>'; 
} 
$query = mysql_query("SELECT COUNT(id) AS numrows FROM chatbox") or die(mysql_error()); 
$row = mysql_fetch_array($query, MYSQL_ASSOC); 
$numrows = $row['numrows']; 
$maxPage = ceil($numrows/$br); 
$ns = 'Страници: '; 
for($page = 1; $page <= $maxPage; $page++) { 
if ($page == $pageNum) { 
$ns .= " <a class=\"typ1noh\" style=\"color: #ffffff\">$page</a> "; 
} 
else { 
$ns .= "<a class=\"typ1\" href=\"?a=ranking&page=$page\">$page</a> "; 
}} 
if ($pageNum > 1) { 
$page = $pageNum - 1; 
$pr = " <a href=\"?a=ranking&page=$page\"></a> "; 
$one = " <a href=\"?a=ranking&page=1\"></a> "; 
} 
else { 
$pr = ' '; 
$one = ' '; 
} 
if ($pageNum < $maxPage) { 
$page = $pageNum + 1; 
$sl = (" <a href=\"?a=ranking&page=$page\"></a> "); 
$pl = (" <a href=\"?a=ranking&page=$maxPage\"></a> "); 
} 
else { 
$sl = ''; 
$pl = ''; 
} 
echo $one . $pr . $ns . $sl . $pl; 
?>

Да каже какво трябва да се замени/промени.
 

cmsfan

Registered
Ето:
Код:
<?php
$hostname = "localhost1"; // Sql сървър
$user = "user1";//Потребителско име
$pass = "pass1";//Парола
$database = "db_1";//База данни
$conn = @mysql_connect("$hostname","$user","$pass");
$chars="SET CHARACTER SET utf8"; mysql_query($chars);
@mysql_select_db($database);

//default site db connect (for some other components
mysql_connect("localhost1","user1","pass1"); 
mysql_select_db("db_1"); 

?>
 

rainbowdio

Registered
Проблема ти е в първият файл.

Замести:

$br = 15;

$br = '15';

Няма проблем в този ред! Когато на променливата се задава число може и без кавички.

проблема ти идва от страницирането или стойноста след LIMIT -45, 15

дай echo на заявката и ще видиш проблема :)
имаш грешка в логиката, бърка се някаде и началната стойност е отрицателна -45 :)
 

cmsfan

Registered
Ами така просто си излиза това:
SELECT * FROM `chatbox` ORDER BY id DESC LIMIT $redove, $br
Не разбирам явно какво имаш в предвид.
 

rainbowdio

Registered
интересува ме самата заявка без да се изпълнява самия код разбираш ли искам да видя какви стойности се показват зад променливите $redove, $br

Сложи този ред преди твоят и ми покажи резултата :)

echo "SELECT * FROM `chatbox` ORDER BY id DESC LIMIT $redove, $br";
 

eddyy93

Registered
rainbow ако го направи това ще му излезе array.

Сложи след заявката $result и преди цикъла while

PHP:
print_r ($result);


-----------


Сложи също след $query и преди $row:

PHP:
print_r ($query);
 

cmsfan

Registered
1-во:
Resource id #59

2-ро:
Resource id #60

Това излиза хора...

Ето как беше:
Код:
$result = mysql_query("SELECT * FROM `chatbox` ORDER BY id DESC LIMIT $redove, $br")or die(mysql_error()); 
print_r ($result);
while($row = mysql_fetch_array($result)) { 
$id = $row['id']; 
$nick = $row['nick']; 
$message = $row['message']; 
$date = date('Y-m-d');
echo '<table border="0" style="width: 100%" class="backbox"><tr><td style="background: #272727; border:1px solid #474747"><b><img src="chat/chat.png" alt="" /> [' . $row[2] . ']</b> <a href="forum/member/'.$nick.'" title="виж профила на '.$nick.'">' . $nick . '</a>: ' . $message . '</td></tr></table>'; 
} 
$query = mysql_query("SELECT COUNT(id) AS numrows FROM chatbox") or die(mysql_error());
print_r ($query); 
$row = mysql_fetch_array($query, MYSQL_ASSOC);
 

rainbowdio

Registered
виж сега направи го така

$sql = "SELECT * FROM `chatbox` ORDER BY id DESC LIMIT $redove, $br";
echo $sql;
$result = mysql_query($sql)or die(mysql_error());

и копирай текста който ти се показва на екрана какво ти се показва на екрана !!!

или просто дай

echo $redove."|".$br";

искам да видя какво има в тези променливи
 

eddyy93

Registered
Всъщност аз съм в грешка, направи ли това което ти каза raibow ...


А този код го направи така:

PHP:
$result = mysql_query("SELECT * FROM `chatbox` ORDER BY id DESC LIMIT $redove, $br")or die(mysql_error()); 

while($row = mysql_fetch_array($result)) { 
print_r ($row);
$id = $row['id']; 
$nick = $row['nick']; 
$message = $row['message']; 
$date = date('Y-m-d');
echo '<table border="0" style="width: 100%" class="backbox"><tr><td style="background: #272727; border:1px solid #474747"><b><img src="chat/chat.png" alt="" /> [' . $row[2] . ']</b> <a href="forum/member/'.$nick.'" title="виж профила на '.$nick.'">' . $nick . '</a>: ' . $message . '</td></tr></table>'; 
} 
$query = mysql_query("SELECT COUNT(id) AS numrows FROM chatbox") or die(mysql_error());

$row = mysql_fetch_assoc($query);
print_r ($row);
 

nom3r1

Registered
Не съм сигурен дали ще работи, но пробвай:

PHP:
<?php
define('IN_VALID', true);
include ('conf.php');
$br = 15;
if(isSet($_GET['page'])) {
	$pageNum = (int)$_GET['page'];
	$pageNum = ($pageNum)?$pageNum:1;
} else {
	$pageNum = 1;
}
$redove = ($pageNum - 1) * $br;
$result = mysql_query("SELECT * FROM `chatbox` ORDER BY id DESC LIMIT $redove, $br")or die(mysql_error());
if(mysql_num_rows($result) > 0) {
	while($row = mysql_fetch_array($result)) {
		$id = $row['id'];
		$nick = $row['nick'];
		$message = $row['message'];
		$date = date('Y-m-d');
		echo '<table border="0" style="width: 100%" class="backbox"><tr><td style="background: #272727; border:1px solid #474747"><b><img src="chat/chat.png" alt="" /> [' . $row[2] . ']</b> <a href="forum/member/'.$nick.'" title="виж профила на '.$nick.'">' . $nick . '</a>: ' . $message . '</td></tr></table>';
	}
	$maxPage = ceil(mysql_num_rows($query)/$br);
	$ns = 'Страници: ';
	for($page = 1; $page <= $maxPage; $page++) {
		if ($page == $pageNum) {
			$ns .= " <a class=\"typ1noh\" style=\"color: #ffffff\">$page</a> ";
		} else {
			$ns .= "<a class=\"typ1\" href=\"?a=ranking&page=$page\">$page</a> ";
		}
	}
	if ($pageNum > 1) {
		$page = $pageNum - 1;
		$pr = " <a href=\"?a=ranking&page=$page\"></a> ";
		$one = " <a href=\"?a=ranking&page=1\"></a> ";
	} else {
		$pr = ' ';
		$one = ' ';
	}
	if ($pageNum < $maxPage) {
		$page = $pageNum + 1;
		$sl = (" <a href=\"?a=ranking&page=$page\"></a> ");
		$pl = (" <a href=\"?a=ranking&page=$maxPage\"></a> ");
	} else {
		$sl = '';
		$pl = '';
	}
	echo $one . $pr . $ns . $sl . $pl;
} else {
	echo "Страницата не съществува.";
}
?>
 

Karcho

Registered
От това

PHP:
if(isset($_GET['page'])) {
$pageNum = (int)$_GET['page'];
$pageNum = ($pageNum)?$pageNum:1;
}

На това

PHP:
if(isset($_GET['page'])) {
$pageNum = (int)$_GET['page'];
$pageNum = ($pageNum) && $pageNum >= 1 ?$pageNum:1;
}

:) ?
 

cmsfan

Registered
rainbowdio каза:
виж сега направи го така

$sql = "SELECT * FROM `chatbox` ORDER BY id DESC LIMIT $redove, $br";
echo $sql;
$result = mysql_query($sql)or die(mysql_error());

и копирай текста който ти се показва на екрана какво ти се показва на екрана !!!

или просто дай

echo $redove."|".$br";

искам да видя какво има в тези променливи

при първото си излезна пак самата заявка:
SELECT * FROM `chatbox` ORDER BY id DESC LIMIT $redove, $br

А при второто echo, излезе това:
0.'|'.15

eddy,
ето с твоя код какво излезе:
Код:
Array ( [0] => 1105 [id] => 1105 [1] => just [nick] => justyler [2] => 2012-02-01 [date] => 2012-02-01 [3] => elated emoticon [message] =>  elated emoticon )
 [2012-02-01] just: зДрАвЕиТе elated emoticon
Array ( [0] => 1104 [id] => 1104 [1] => ComerciaL [nick] => ComerciaL [2] => 2012-02-01 [date] => 2012-02-01 [3] => Здравейте на всички :) [message] => Здравейте на всички :) )
 [2012-02-01] Comer: Може ли да видите :)
Array ( [0] => 1103 [id] => 1103 [1] => justyler [nick] => justyler [2] => 2012-01-31 [date] => 2012-01-31 [3] => Преди малко пуснах заявка! [message] => Преи малко пуснах! )
 [2012-01-31] just: Преди малко пуснах заявката!
Array ( [0] => 1102 [id] => 1102 [1] => panter [nick] => panter [2] => 2012-01-29 [date] => 2012-01-29 [3] => Здравейте ! :) може ли да види
 

Горе