Проблем с ID на страница (дава грешка при -1)

WildBeast

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 '-20, 10' at line 1
Как мога да защитя страницата си, така че това да не се показва и да не действа page.php?id=-1?
 
Код:
<?php
$id = $_GET['id'];
if($id > 0){

$s = mysql_query("SELECT * FROM news WHERE id='$id'");
while($row = mysql_fetch_array($s)){
echo $news;
}

}
?>

Нещо от този вид ? :)
 
$id = abs($_GET['id']);

Винаги ще показва резултат. Ако бъде въведено -1545494 числото ще бъде смятано за 1545494. abs действа като модул на числата(няма отрицателни).
 
само дето него abs него спасява.. трябва ти is_numeric тоест :

Код:
$id=(int)$_GET['id'];

if (!is_numeric($id))
{
echo "Това не е id !";
}
else
{
//Кода ти тук .. 
}
 
justspy каза:
само дето него abs него спасява.. трябва ти is_numeric тоест :

Код:
$id=(int)$_GET['id'];

if (!is_numeric($id))
{
echo "Това не е id !";
}
else
{
//Кода ти тук .. 
}

Глупости. Провери че is_numeric пропуска отрицателни числа. Предполага се че преди това си има проверка дали цифрата е число и иска да премахне проблем с отрицателните стойности на id.
abs си е точната функция, освен ако не решите да напишете регулярен израз за ид-то :lol: :lol: :lol:
 
Код:
<?php
$id=(int)$_GET['id'];
if($id>0)
{
	кода който да изпълнява ако е валидно id
}
else
{
	не е
}
?>
 
@Rushvet Сял инжекциите и по точно SQLi не е нужно да се правят с отрицателни числа може дори без стойност на id в някой случеи, но попринцип се правят с положителни числа is_numric те спасява ако ид-то е друго освен int тоест числова стойност както би трябвало за една Сял Инжекция .. може да прибавиш abs както @Rushvet казва тоест :
Код:
$id=(int)$_GET['id'];
$id=abs($id);

if (!is_numeric($id))
{
echo "Не е числова стойност !";
}
else
{
//Кода ти
}
 
Няма да обяснявам подробно. Точно бъгването с отрицателни числа с много цифри е проблем защото броенето започва отначало. За воте системите това е сериозно. Човека е дал само грешката и че се появява при отрицателна стойност. Не е написал нищо за други знакове, което предполага че има проблем само с знака "-".
 
Абее.. една проверка
if($page <= 0 || $page == NULL){
$page = 1;
}

какви са тя глупости, нумерик , мунерик..
 

Back
Горе