[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проверка переменной на число
xJlaIIax
У меня в ссылки передаётся переменная id, подскажите пожалуйста, как проверить её на число с помощью int.
Эта переменная используется в
$result = mysql_query("SELECT name, txt FROM data WHERE id='$id'", $db);

$update = mysql_query("UPDATE data SET name = '$name', txt = '$txt' WHERE id='$id'", $db);

Сейчас проверяю так
if (!is_numeric($id)) 
{
exit ();
}

но мне сказали что это намного дольше обрабатывается чем int.



Спустя 13 минут, 36 секунд (21.11.2010 - 22:39) vinnie написал(а):

$id = !empty ($_GET['id']) ? (int)$_GET['id'] : NULL;

Спустя 1 минута, 21 секунда (21.11.2010 - 22:40) Sanchopansa написал(а):
А зачем тебе эта проверка? просто приводи к типу и все...
$id = (int) $_POST['id'];
$result = mysql_query("SELECT name, txt FROM data WHERE id='$id'", $db);

Спустя 8 минут, 9 секунд (21.11.2010 - 22:48) xJlaIIax написал(а):
Sanchopansa, что бы скрипт не написали.

Спустя 3 минуты, 11 секунд (21.11.2010 - 22:51) xJlaIIax написал(а):
vinnie, такой вариант, как ты мне предложил я и хотел использовать.
Просто хотел поинтересоваться может и другие варианты есть.

Какой вариант посоветуете?
$id = !empty ($_GET['id']) ? (int)$_GET['id'] : NULL;

$id = (int) $_POST['id'];

Спустя 44 минуты, 42 секунды (21.11.2010 - 23:36) vinnie написал(а):

$id = !empty ($_GET['id']) ? (int)$_GET['id'] : NULL;


и никакого скрипта тебе не напишут)))

Спустя 1 минута, 4 секунды (21.11.2010 - 23:37) Sanchopansa написал(а):
$id = isset ($_GET['id']) ? (int)$_GET['id'] : 'тут можно устанвить значение по умолчанию';

Лучше этот, потому что тут есть проверка на наличие переменной и есть возможность задать значение по умолчанию
vinnie
empty ('0') вернет true!!! ;)

Спустя 11 минут, 21 секунда (21.11.2010 - 23:48) xJlaIIax написал(а):
Спасибо Вам большое за дельные советы!

Спустя 1 минута, 7 секунд (21.11.2010 - 23:50) vinnie написал(а):
не за что... обращайся

Спустя 51 секунда (21.11.2010 - 23:50) vinnie написал(а):
карму поставь)))

Спустя 11 часов, 21 минута, 30 секунд (22.11.2010 - 11:12) xJlaIIax написал(а):
Я думаю если человек написал в переменную id не число, то его наверное разумнее переправить на главную страницу или на страницу 404. Если переменной id присвоить 1, то там выведется совершенно другая заметка, если 0, то выведется страница с не выбранными данными.
$id = !empty($_GET['id']) ? (int)$_GET['id'] : 0;
if ($id == 0)
{
echo ('<meta http-equiv="Refresh" content="0; URL=index.php">');
exit ();
}

Я правильно думаю?
Как думаете куда его лучше переправить на главную или на 404?

Спустя 22 минуты, 16 секунд (22.11.2010 - 11:34) phz написал(а):
Вместо...

<meta http-equiv="Refresh" content="0; URL=index.php">

нужно

header

Спустя 4 минуты, 41 секунда (22.11.2010 - 11:39) linker написал(а):
Переправляй на главную, нафига рефреш.

Спустя 35 минут, 48 секунд (22.11.2010 - 12:15) xJlaIIax написал(а):
Так?
$id = !empty($_GET['id']) ? (int)$_GET['id'] : 0;
if ($id == 0)
{
header ("Location: index.php");
exit ();
}

Спустя 4 минуты, 32 секунды (22.11.2010 - 12:19) linker написал(а):
$id = isset($_GET['id']) ? abs($_GET['id']) : 0;
if (!$id)
{
header("Location: index.php");
exit();
}

Спустя 3 минуты, 47 секунд (22.11.2010 - 12:23) xJlaIIax написал(а):
linker, Спасибо!

Спустя 4 минуты, 13 секунд (22.11.2010 - 12:27) FatCat написал(а):
Айдишник должен быть целочисленным? ;)
if( "".$_GET['id'] !== "".intval($_GET['id']) )

Спустя 1 минута, 30 секунд (22.11.2010 - 12:29) linker написал(а):
abs() сделает его не только целочисленным, но и больше нуля.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.