powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (PHP) Разминка для мозгов
25 сообщений из 271, страница 5 из 11
(PHP) Разминка для мозгов
    #37029153
Хоббит маг
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
r u, жаль, у меня такого глубокого опыта работы с классами нет. =)
...
Рейтинг: 0 / 0
(PHP) Разминка для мозгов
    #37029154
Anjey aka PM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
r uAnjey aka PM,
1) classkit и другие сторонние модули расматривать не будем. так можно и свой написать тогда)
2) setAccessible появилось только в php 5.3, к томуже нужно изменить только значение, поле должно оставаться private.

Хоббит маг
Класс должен остаться темже.
тоесть например var_dump($p); до и после - должен отличаться только значением поля $this->p.это дополнительные условия, которые не были озвучены раньше посему не имеют силы =)
...
Рейтинг: 0 / 0
(PHP) Разминка для мозгов
    #37029180
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anjey aka PM,

согласен, моя вина, наверное.
Просто тут речь про чистый PHP, сторонние модули и дополнения оставим в стороне.

Класс очень примитивен специально, в реальности он может быть очень большим и сложным.
И нужно подменить значение, но так чтобы ниже, имея этот объект нельзя было выявить что значение было изменено)

Итак, уточняем задачу)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
class passwords {
	private $p = 'system_password';
	public function showP(){
		echo $this->p;
	}
}
$p = new passwords;
$p->showP(); // напечатает system_password
/*
 - Напишите тут код, который заставит следующий вызов $p->showP(); печатать слово 'HACK'
 - Нужно обойтись чистым php, из коробки )
 - класс изменять или заменять другим нельзя
*/
$p->showP();
...
Рейтинг: 0 / 0
(PHP) Разминка для мозгов
    #37029235
an0nym
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
r u,

Код: plaintext
$p = unserialize(strtr(serialize($p), array('s:15:"system_password";' => 's:4:"HACK";')));
...
Рейтинг: 0 / 0
(PHP) Разминка для мозгов
    #37029245
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
an0nym,

согласен)
...
Рейтинг: 0 / 0
(PHP) Разминка для мозгов
    #37029249
an0nym
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
r u,

на самом деле я надеялся будет что-то более изящное, типа $p->showP = function() {echo "HACK";};, но не сработало. :)
...
Рейтинг: 0 / 0
(PHP) Разминка для мозгов
    #37029281
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
an0nym,

куда уж изящнее. уже php6 на подходе, а тут в реализации ООП такая дыра. и далеко не одна.
...
Рейтинг: 0 / 0
(PHP) Разминка для мозгов
    #37029286
an0nym
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
r u,

будем надеяться (с оглядкой на последние посты), что о ней никто не знает. :)
...
Рейтинг: 0 / 0
(PHP) Разминка для мозгов
    #37029425
Anjey aka PM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
an0nym,

Знает, просто не люблю не элегантных решений =)
...
Рейтинг: 0 / 0
(PHP) Разминка для мозгов
    #37029497
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторуже php6 на подходе, а тут в реализации ООП такая дыра. и далеко не одна.
процедурный язык с добавлеными ОО возможностями (гибридный) будет изобиловать подобным до тех пор, пока его не перепишут под использование исключительно в ООП (создадут чистый ОО ЯП) (пример VB 6 -> VB.NET), в силу своей природной сущности. Вопрос в другом, кому он, после этого понадобится?! ;)
ЗЫ задачка была забавной!
...
Рейтинг: 0 / 0
(PHP) Разминка для мозгов
    #37029512
an0nym
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vladgrig,

скажите, что мне помешает сделать тот же финт с сериализуемым объектом в C#? Отвечаю: ничего.
...
Рейтинг: 0 / 0
(PHP) Разминка для мозгов
    #37029571
Anjey aka PM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vladgrig,

Да и с рефлекшн-апи тот же финт проходит как в джава так и в с#. Его конечно можно отключить или ограничить в правах, но далеко не все это делают.
...
Рейтинг: 0 / 0
(PHP) Разминка для мозгов
    #37029602
an0nym
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anjey aka PM,

не боитесь, что товарищ vladrig опять не захочет с вами разговаривать? :))
...
Рейтинг: 0 / 0
(PHP) Разминка для мозгов
    #37029604
an0nym
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
an0nymAnjey aka PM,

не боитесь, что товарищ vladrig опять не захочет с вами разговаривать? :))
Сорри за коверканье ника. *vladgrig.
...
Рейтинг: 0 / 0
(PHP) Разминка для мозгов
    #37029620
Anjey aka PM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
an0nym,

А мне ни холодно ни жарко от этого.
Я от vladgrig не видел ни одного логически законченного и обоснованного опровержения ни одного из моих аргументов в наших спорах.
...
Рейтинг: 0 / 0
(PHP) Разминка для мозгов
    #37029663
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЯ от vladgrig не видел ни одного логически законченного и обоснованного опровержения ни одного из моих аргументов в наших спорах.
хм...
авторскажите, что мне помешает сделать тот же финт с сериализуемым объектом в C#? Отвечаю: ничего.
авторДа и с рефлекшн-апи тот же финт проходит как в джава так и в с#. Его конечно можно отключить или ограничить в правах , но далеко не все это делают.
внимание вопрос!

каким образом в PHP можно сделать объект не сериализуемым, либо как ограничить\отключить рефлекшн-апи?
...
Рейтинг: 0 / 0
(PHP) Разминка для мозгов
    #37029677
an0nym
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vladgrig каким образом в PHP можно сделать объект не сериализуемым, либо как ограничить\отключить рефлекшн-апи?
Реализовав методы wakeup и sleep?

Но проблема то не в запрете, а в том что возможность такого финта к качеству ОО ЯП не имеет абсолютно никакого отношения.
...
Рейтинг: 0 / 0
(PHP) Разминка для мозгов
    #37029684
coffeesnake
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
r uan0nym,

куда уж изящнее. уже php6 на подходе, а тут в реализации ООП такая дыра. и далеко не одна.

это не дыра.

спецификаторы доступа позволяют вам грамотно организовать инкапсуляцию и отловить потенциальных ошибки на уровне интерпретатора, а не пытаются от вас что-то "спрятать" или "утаить". так что если вам сильно хочется наговнокодить, чтобы вытащить или поменять какую-то приватную переменную, то никто вас останавливать не будет, это касается не только пхп.
...
Рейтинг: 0 / 0
(PHP) Разминка для мозгов
    #37029701
coffeesnake
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
продолжая дискуссию. ЗАЧЕМ "отключать рефлекшн, ограничивать в правах", делать несериализуемым и т.д.? от несанкционированного доступа нужно защищаться абсолютно другими средствами, но никак не приватными переменными :) если заводите такого рода дискуссию, то путаете назначение этого механизма.
...
Рейтинг: 0 / 0
(PHP) Разминка для мозгов
    #37029707
an0nym
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
coffeesnake,

дело в том, что некоторые персонажи считают такие обслуживающие механизмы чуть ли не фундаментальными признаками поддержки ОО в ЯП и на этом основании говорят, что PHP неполноценный ОО язык, в отличие от Java, C# etc.
...
Рейтинг: 0 / 0
(PHP) Разминка для мозгов
    #37029724
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторРеализовав методы wakeup и sleep?
спс. посмотрю! остальное было неинтересно.
...
Рейтинг: 0 / 0
(PHP) Разминка для мозгов
    #37029733
an0nym
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vladgrigостальное было неинтересно.
Мы скорбим по поводу того, что из многих упомянутых важных вещей, вам интересна только самая очевидная. :(
...
Рейтинг: 0 / 0
(PHP) Разминка для мозгов
    #37029746
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
<OFF>
авторМы скорбим по поводу того, что из многих упомянутых важных вещей, вам интересна только самая очевидная. :(
это ваша проблема!
</OFF>
...
Рейтинг: 0 / 0
(PHP) Разминка для мозгов
    #37029749
an0nym
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vladgrig<OFF>
авторМы скорбим по поводу того, что из многих упомянутых важных вещей, вам интересна только самая очевидная. :(
это ваша проблема!
</OFF>
Дык прискорбно вдвойне!
...
Рейтинг: 0 / 0
(PHP) Разминка для мозгов
    #37029760
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to an0nym смирись с этим - или заведи себе skype для обсуждения подобного рода вопросов!
...
Рейтинг: 0 / 0
25 сообщений из 271, страница 5 из 11
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (PHP) Разминка для мозгов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]