Просмотр полной версии : Прием с $_get
<?php
$id_mail = (isset($_GET['id_mail'])) ? string($_GET['id_mail']) : null;
echo($id_mail);
?>
<Fatal error: Call to undefined function string() in Z:\home\priceie\www\getie.php on line 2
wtf?
он не вдупляет что за ф-ия string
Что ты хочешь сделать с этой строкой?
пробуй так:
<?php
$id_mail = (isset($_GET['id_mail'])) ? ($_GET['id_mail']) : null;
echo($id_mail);
?>
у меня все ОК! =)
тоесть:
если есть GET передача параметра id_mail, то значение присваеваетса)) $id_mail, а если нет такого параметра, то $id_mail присв. нул)) а дальше виводитса $id_mail. вот и все.
при запросе ?id_mail=123 ви ведетса текст 123
"Call to undefined function string()"
визов неизвестной функции string()
тоесть в php функции string() нету))))
GreenBear
21.08.2008, 22:51
(string) $_GET['id_mail']
dimash, ето ведь пример..
или тебе надо чтоб здесь написали код, в котором идет проверка на ковички и т.д..
ладно, special for you(супер мега проверка):
function n($msg)
{
$msg = substr($msg,0,1024);//обрезаем 1024сиволов))
$msg = htmlspecialchars($msg);//quot
return $msg;//возв знак
}
возвращает провереную строчку)))
Тема - бред. Get параметры всегда в формате string, а если его нет, то NULL.
eLWAux, мда )))
<?php echo htmlspecialchars($_GET['id_mail']); ?>
function n($msg)
{ $msg = substr($msg,0,1024);
$msg = htmlspecialchars($msg);
return $msg;
}
<?php echo n($_GET['id_mail']); ?>
и никакой хакер не достучитса))
function n($msg)
{ $msg = substr($msg,0,1024);
$msg = htmlspecialchars($msg);
return $msg;
}
<?php echo n($_GET['id_mail']); ?>
и никакой хакер не достучитса))
если у тебя id_main - число то не проще ли inval()-ом пользоваться?
GreenBear
21.08.2008, 23:37
Тема - бред. Get параметры всегда в формате string, а если его нет, то NULL.
eLWAux, мда )))
<?php echo htmlspecialchars($_GET['id_mail']); ?>
?id_mail[]=lol
.:EnoT:.
22.08.2008, 00:24
$id = !empty($_GET['id_mail']) && is_numeric($_GET['id_mail']) ? intval($_GET['id_mail']) : '';
echo htmlspecialchars($id);
))
GreenBear
22.08.2008, 01:09
.:EnoT:., кажется на баше была цитата
if($var == true){
//проверим для надежности..
if($var == false){exit;
}
}
это не с тебя брали?
eLWAux, мда)
.:EnoT:., прочитай статью "Роковые ошибки PHP" не помню какую часть.. про is_numeric
BlackSun
22.08.2008, 03:48
eLWAux, мда)
.:EnoT:., прочитай статью "Роковые ошибки PHP" не помню какую часть.. про is_numeric
C is_numeric как раз все впорядке)
[ intval(), (int) ]
У intval() есть интересная особенность - она возвращает TRUE если первой в аргументе содержится хотя бы одна цифра.
И у разработчиков тоже есть интересная особенность =)) -- они периодически используют intval()/(int) в логичесих условиях,
допуская непростительные ошибки.
Ведь наличие цифр в строке вовсе не гарантирует отсутствие других символов.
Пример:
/index.php?id=1'"qwerty
PHP код:
$id=$_GET['id'];
if(intval($id) && (int)$id)
{
sql_query("select $id from table_name");
}
else die('Id not integer!');
Несмотря на кажущуюся незначительность баги, встречается она в диком тырнете достаточно регулярно.
Для безопасного сравнения используйте is_numeric()
.:EnoT:., прочитай статью "Роковые ошибки PHP" не помню какую часть.. про is_numeric Все у него правильно ;) хотя можно было без условий только intval применить. Точнее нужно ;)
.:EnoT:.
22.08.2008, 11:46
GreenBear, оч смешно...обоснуй лучше к чему ты это написал?
Isis, в чём же эта "роковая ошибка PHP?" :)
http://www.xakep.ru/magazine/xa/110/068/1.asp вот статья. Вот цитата оттуда:
К счастью, для безопасного сравнения можно (и нужно!) использовать is_numeric().
В моём примере ничего уязвимого не вижу...id_mail проверяется, является ли он числом, если да, то берётся его целое числовое значение....или ты собрался sql-иньекцию проводить через это?)) И запрос вида ?id_mail[]=123 ошибку не выдаст, он просто не будет обработан.
Правда не знаю чё я туда htmlsprcialchars() запихнул, если там числовой параметр...ну пофиг
GreenBear
22.08.2008, 12:34
да так...
А так если писать?
<?php
if( (strval(intval($_GET['id_mail'])) == $_GET['mail']){
//ОК!
}else{
//Лог & Бан)
}
?>
Я Славик (с)
Ща модно флудить что ли стало?
Hexadecimal notation (0xFF) is allowed too but only without sign, decimal and exponential part.
<?php
if(is_numeric('0xABCDEF')) {
echo 'wtf?? "0xABCDEF" - is it number??';
}
?>
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot