Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Прием с $_get (https://forum.antichat.xyz/showthread.php?t=81848)

dimash 21.08.2008 22:07

Прием с $_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?

Vid0k 21.08.2008 22:12

он не вдупляет что за ф-ия string

.Slip 21.08.2008 22:12

Что ты хочешь сделать с этой строкой?

eLWAux 21.08.2008 22:15

пробуй так:
PHP код:

<?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

eLWAux 21.08.2008 22:16

"Call to undefined function string()"
визов неизвестной функции string()
тоесть в php функции string() нету))))

GreenBear 21.08.2008 22:51

(string) $_GET['id_mail']

eLWAux 21.08.2008 22:58

dimash, ето ведь пример..
или тебе надо чтоб здесь написали код, в котором идет проверка на ковички и т.д..

ладно, special for you(супер мега проверка):

PHP код:

 function n($msg)
 {
   
$msg substr($msg,0,1024);//обрезаем 1024сиволов))
   
$msg htmlspecialchars($msg);//quot
   
return $msg;//возв знак
 


возвращает провереную строчку)))

NOmeR1 21.08.2008 23:01

Тема - бред. Get параметры всегда в формате string, а если его нет, то NULL.
eLWAux, мда )))
Код:

<?php echo htmlspecialchars($_GET['id_mail']); ?>

eLWAux 21.08.2008 23:03

PHP код:

function n($msg)
{ $msg = substr($msg,0,1024);
$msg = htmlspecialchars($msg);
return $msg;
}

<?php echo n($_GET['id_mail']); ?>

и никакой хакер не достучитса))

scrat 21.08.2008 23:32

Цитата:

Сообщение от eLWAux
PHP код:

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

Цитата:

Сообщение от NOmeR1
Тема - бред. Get параметры всегда в формате string, а если его нет, то NULL.
eLWAux, мда )))
Код:

<?php echo htmlspecialchars($_GET['id_mail']); ?>

?id_mail[]=lol

.:EnoT:. 22.08.2008 00:24

PHP код:

$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;
}
}
это не с тебя брали?

Isis 22.08.2008 03:44

eLWAux, мда)
.:EnoT:., прочитай статью "Роковые ошибки PHP" не помню какую часть.. про is_numeric

BlackSun 22.08.2008 03:48

Цитата:

Сообщение от Isis
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()

nerezus 22.08.2008 11:21

Цитата:

.: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

да так...

Demonyx 22.08.2008 13:12

А так если писать?

PHP код:

<?php

if( (strval(intval($_GET['id_mail'])) == $_GET['mail']){
 
//ОК!
}else{
 
//Лог & Бан)
}
?>


Isis 22.08.2008 13:52

Я Славик (с)

NOmeR1 22.08.2008 14:48

Цитата:

Сообщение от Isis
Я Славик (с)

Ща модно флудить что ли стало?

Цитата:

Сообщение от PHP.RU
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??';
}
?>



Время: 21:36