Проблем с проверка numeric

webdeveloper

Registered
Здравейте, имам класация със странициране, но имам проблем.
Имам следната проверка за това дали page е цифра:

Код:
$page1 = (htmlspecialchars(addslashes($_GET['page'])));
$page = clean_var($page1);
if(!is_numeric($page)){
die ("Грешка");
}


Проблема е там, че когато се отвори класацията така:
ranking.php изписва грешка и за да покаже първата страница без да даде грешка трябва да се отваря така:
ranking.php?page=1 което за мен е проблем.

Как да направя така, че да проверява само ако има page= ...?
 
$page1 = (htmlspecialchars(addslashes($_GET['page'])));
if ($page1 == NULL ){
кода на страницата
}
else
{
$page = clean_var($page1);
if(!is_numeric($page)){
die ("Грешка");
}
}
Опитай така
 
0u7 каза:
$page1 = (htmlspecialchars(addslashes($_GET['page'])));
if ($page1 == NULL ){
кода на страницата
}
else
{
$page = clean_var($page1);
if(!is_numeric($page)){
die ("Грешка");
}
}
Опитай така

Така работи само ако в url адреса задам ranking.php, ако задам ranking.php?page=1, 2 или каквато и да е цифра не изкарва резултатите.
 
$page1 = (htmlspecialchars(addslashes($_GET['page'])));
$page = clean_var($page1);
if ($page == NULL ){
кода на страницата
}
else
{
if(!is_numeric($page)){
die ("Грешка");
}
}
Така :?
 
$page1 = (htmlspecialchars(addslashes($_GET['page'])));
$page = clean_var($page1);
if(!is_numeric($page)){
die ("Грешка");
}
else ($page == NULL ){
кода на страницата
}
 
Защо толкова сложно го правите, просто направи така:
$_GET['page'] = (isset($_GET['page'])) ? $_GET['page'] : 1;
$page1 = (htmlspecialchars(addslashes($_GET['page'])));
$page = clean_var($page1);
if(!is_numeric($page)){
die ("Грешка");
}
else {
кода на страницата
}
 
MontefuckeR каза:
Защо толкова сложно го правите, просто направи така:
$_GET['page'] = (isset($_GET['page'])) ? $_GET['page'] : 1;
$page1 = (htmlspecialchars(addslashes($_GET['page'])));
$page = clean_var($page1);
if(!is_numeric($page)){
die ("Грешка");
}
else ($page == NULL ){
кода на страницата
}

Странно защо, но ми дава Parse error: syntax error на едната кавичка...
 
WTF? Какви са тея addslashes, addbashes?

Код:
$page = $_GET['page'];
if (!$page || !ctype_xdigit($page)) {
$page = 1;
}

Това не върши ли работа?
 
<?php
$_GET['page'] = (isset($_GET['page'])) ? $_GET['page'] : 1;
$page1 = (htmlspecialchars(addslashes($_GET['page'])));
$page = clean_var($page1);
if(!is_numeric($page))
{
die ("Error!");
}
else
{
// тук въведи кода на страницата!
}
?>

Ето така май ще стане!
 
Извинявам се за офтопика но Baso с какво твоя код е по различен от кода на MontefuckeR

btw това което е дал gLaVoReZa
ще работи най добре според мене
 
0u7 каза:
Извинявам се за офтопика но Baso с какво твоя код е по различен от кода на MontefuckeR

btw това което е дал gLaVoReZa
ще работи най добре според мене


В същност не съм видял мнението на MontefuckeR извинявам се ако приложенията ни съвпадат!
 
Напълно достатъчно е да провериш променливата дали е число. Няма смисъл от htmlspecialchars и addslashes. А за да оправиш проблема с това, че ranking.php не отваря първата страница - трябва да сложиш $page да ти е равно на 1. И кодът ти трябва да изглежда така:
$page = 1;
if(is_numeric($_GET['page'])) {
$page = intval($_GET['page']); //С intval предотвратяваш присвояването на page на друга стойност освен число. Въпреки, че то не би минало дори през проверката на is_numeric.
}
След тази проверка вместо да използваш $_GET['page'] за изкарването на резултатите, е нужно само да напишеш $page, като си напълно спокоен за сигурността
 

Back
Горе