Вы не зашли.
Ну я злодей, хотел показывать активность гостей написавших сообщение, а потом подумал и
Ахаха
Код:
span style="color: #0000BB"><?php$result = $db->query('SELECT `active_id` FROM `activity` WHERE `active_id` > 0 AND `active_point` > NOW();');$activity = $array = array();while ($array = $result->fetch()) { if ($array['active_id']) { $activity[$array['active_id']] = $array; }/* else { $key = md5($array['active_ip'] . $array['active_browser']); $activity[$key] = $array; }*/}$result = $db->query('SELECT * FROM `users`;');$users = $array = array();while ($array = $result->fetch()) { $users[$array['user_id']] = $array;}foreach ($users as $user) { echo $user['user_id']; echo ' '; echo isSet($activity[$user['user_id']]) ? 'On' : 'Off'; echo '<br/>';} |
Отредактировано tipsun (2012.04.07 20:08)
Привет, Геморрой.
Стоит задача написать свой небольшой шаблонизатор на нейтивном php.
Вот и стоит задача импортировать с помощью функции extract в область видимости метода класса view переменные с массива.
Какие минусы этого метода, стоит ли его использовать или нет?
Компилировать шаблоны или использовать другие решения не очень-то хочется, а писать $this->array['var'] - слишком длинно.
Желание стать программистом из-за того, что вам нравляться компьютерные игры-это все равно, что желание стать гинекологом из-за того, что вам нравиться секс
во первых, я бы настоятельно рекомендовал не велосипедить, а найти шаблонизатор по вкусу. от банальных smarty и twig до blitz и xslt.
что до
extract, то в принципе, можно все сделать достаточно безопасно, если делать аккуратно, учитывая все моменты описанные в документации.
Понятно.
Да я понимаю, что лучше не велосипедить, все же чтобы использовать готовое решение - хочется самому попытаться понять, как оно работает изнутри.
Желание стать программистом из-за того, что вам нравляться компьютерные игры-это все равно, что желание стать гинекологом из-за того, что вам нравиться секс
Кстати, вспомнил об одной уязвимости.
Есть файл, внутри него код:
<?php
$addr="my_file.txt\0";
echo $addr;
if(file_exists($addr.".php")) echo 'OK!';
include $addr.".php";
Результат будет отличным - мы проинклюдим файл my_file.txt, а остальная строка проигнорится!!!
То есть, как это может сработать.
Мы хотели получить от пользователя имя файла, к примеру, lol, а затем проверить, если существует файл lol.php - инклюдим его.
Но с помощью символа конца строки \0 остаток строки игнорируется, что позволит пройти проверку и подключить другой файл с другим расширением!
Вопрос - а какие еще функции подверждены этой уязвимости?
Желание стать программистом из-за того, что вам нравляться компьютерные игры-это все равно, что желание стать гинекологом из-за того, что вам нравиться секс
Кстати, есть объект $test, он является экземпляром класса son, а son является сыном (через extends) абстрактного класса parent.
Если сделать $test instanceof parent - запрос будет работать?
Желание стать программистом из-за того, что вам нравляться компьютерные игры-это все равно, что желание стать гинекологом из-за того, что вам нравиться секс
Akdmeh написал:
"my_file.txt\0"
на какой версии php проверял?
проверил сейчас на php 5.3.8 - не работает.
по-моему, это что-то из времен бородатого php 4.
Код:
span style="color: #0000BB"><?phpabstract class _parent {}class son extends _parent {}$test = new son;var_dump($test instanceof _parent); //bool(true) |
На какой версии:
на php 5.3.1, винда.
Попытаюсь обновить, посмотреть.
Пришли код, как проверил, посмотрю.
Желание стать программистом из-за того, что вам нравляться компьютерные игры-это все равно, что желание стать гинекологом из-за того, что вам нравиться секс
Код:
span style="color: #0000BB"><?php$file = '../robots.txt';var_dump(include $file);var_dump(include $file . "\0txt");// если бага присутствует, то файл должен проинклудится |