Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: Программирование на PHP

  Все выпуски  

RusFAQ.ru: Программирование на PHP


Новое направление Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / PHP

Выпуск № 933
от 28.03.2008, 23:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 477, Экспертов: 44
В номере:Вопросов: 2, Ответов: 6

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>


Вопрос № 128762: Здравствуйте, учителя! Вопрос такой: можно ли внутри объекта использовать ещё один объект? (Ну, или: можно ли внутри класса объектов использовать другой класс объектов?) Например, чтобы один из методов (свойств) мог раскрыться, как тоже объект. Н...
Вопрос № 128764: Здравствуйте! Есть ли существенная разница, как хранить и извлекать пароль? Два примера: $password=$_SERVER['DOCUMENT_ROOT']."/../password.txt"; // в password.txt - один текст пароля или: include $_SER...

Вопрос № 128.762
Здравствуйте, учителя!
Вопрос такой: можно ли внутри объекта использовать ещё один объект? (Ну, или: можно ли внутри класса объектов использовать другой класс объектов?) Например, чтобы один из методов (свойств) мог раскрыться, как тоже объект. Надеюсь, не совсем сумбурно спросил. В чём нужно быть осторожным, какие острозубые подстерегают? И, главное, как это делается?
Отправлен: 23.03.2008, 22:44
Вопрос задал: Прим Палвер (статус: 2-ой класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Шпилевский Евгений Васильевич
Здравствуйте, Прим Палвер!
class a
{
function aa(){}
}

class b
{
var c = new a();
}

var d = new b();
d->c->aa();
Ответ отправил: Шпилевский Евгений Васильевич (статус: 2-ой класс)
Ответ отправлен: 23.03.2008, 22:47
Оценка за ответ: 4
Комментарий оценки:
Спасибо! Чётко и оперативно. Но как-то чересчур лаконично :)

Отвечает: Товарищ Бородин / Borodul
Здравствуйте, Прим Палвер!
Это не запрещается объектной моделью, в PHP (особливо это касается 5-ой версии) она достаточно гибкая, хотя и не совсем полная. Свойства классов могут приобретать значения любых типов, будь то ресурсы, скалярные типы или объекты этого же или других классов. Требования тут простые. Классы должны быть определены на момент вызова. По синтаксису требования тоже не сложные. Класс должен быть определен "монолитным куском", не иметь "разрывов" и не содержать внутри себя определения других классов.

Вы можете использовать результат вывода метода или функции как "готовый" объект, то есть писать так:
someFunction()->someProperty,
конечно, если функция возвращает объект.
Естественно, можно писать и такие конструкции:
$this->someProperty->otherProperty->thirdProperty->...->property
Подводных камней тут особых нет. Ну разве что - определяете какое-либо свойство как объект - следите, чтобы класс этого объекта был определен, вот и все.
Короче, тут прослеживается некоторая аналогия с многомерными массивами, так я Вам скажу. Только с объектами, конечно, посложнее дело обстоит.
С уважением, Товарищ Бородин / Borodul
---------
- Я вчера коньяк пил, 25 лет выдержки, вот это выдержка!
- Ерунда! Вот я вчера выпил 5 литров пива и поехал от Сочи до Иваново на автобусе без остановок. Вот это выдержка...
Ответ отправил: Товарищ Бородин / Borodul (статус: Профессионал)
Россия, Новосибирск
Тел.: +7-923-245-3366
ICQ: 346988855
----
Ответ отправлен: 23.03.2008, 23:48
Оценка за ответ: 5
Комментарий оценки:
Отлично! Спасибо! А на вопрос этот меня натолкнули объектные способы работы с базами данных. Там явно есть вложенные объекты. Вот и подумал: либо неверно оценил, либо есть вложение, а значит, можно и своё такое ваять! (Повторяю про себя: "не содержать внутри себя определения других классов") :)


Вопрос № 128.764
Здравствуйте!
Есть ли существенная разница, как хранить и извлекать пароль?
Два примера:

$password=$_SERVER['DOCUMENT_ROOT']."/../password.txt";
// в password.txt - один текст пароля

или:

include $_SERVER['DOCUMENT_ROOT']."/../password.inc";
// в инклюде: <?php $password="пароль"; ?>
Отправлен: 23.03.2008, 22:51
Вопрос задал: Прим Палвер (статус: 2-ой класс)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 4)

Отвечает: Иван Сергеевич
Здравствуйте, Прим Палвер!

1. Первый Ваш способ присвоит переменной $password значение пути к файлу с паролем, а не значение в нем.
2. Через include_once работают многие распространенные проекты, это просто более удобный способ, чем прописывать в каждом скрипте. Более того, отдельный файл с паролями и защитить проще (например, в настройках фалов .htaccess проекта). Так что не вижу никаких препятствий для использования данного метода.
Ответ отправил: Иван Сергеевич (статус: 5-ый класс)
Ответ отправлен: 23.03.2008, 22:59
Оценка за ответ: 5
Комментарий оценки:
Упс! Не дописал. Конечно же так: $password=file_get_contents($_SERVER[\'DOCUMENT_ROOT\']."/../password.txt"); А теперь как лучше?

Отвечает: Миленин Александр
Здравствуйте, Прим Палвер!
Лучше и безопасней хранить пароль в php файле, ещё безопасней хранить не пароль, а хэш пароля (например md5 http://www.php.net/md5). Так-же у подключаемого файла должно быть расширение php(password.inc.php), т.к. при определённых настройках сервера его можно быдет увидеть из бразуера.
Ответ отправил: Миленин Александр (статус: Студент)
Ответ отправлен: 23.03.2008, 23:32
Оценка за ответ: 2
Комментарий оценки:
А ещё есть sha1(), но дело не в этом. Просветите, каким образом я могу использовать md5() для получения доступа к MySQL? И ещё, как "при определённых настройках сервера его можно будет увидеть из браузера(!)"? Вот его: $_SERVER[\'DOCUMENT_ROOT\']."/../password.inc"

Отвечает: Чаднов Н
Здравствуйте, Прим Палвер!
Зря Вы двойку поставили за второй ответ. Но не в этом суть. Допустим у вас есть папка moj_pas в ней лежит 3 файла. pass.txt pass.inc pass.php "при определёных настройках сервера его можно будет увидеть из браузера(!)" а именно в htaccess в папке с паролем не будет deny from all. То просто перейдя по адресу ваш_хост.ru/moj_pas/имя файла злоумышленник в случае файла txt inc без труда увидит пароль. В случае php он ничего не увидит. Есть еще более сложные конструкции изьятия паролей из inc txt. По сути вопроса ответ следующий. Оба варианта допустимы. Оба варианта не безопасны.
З.ы. Хранить файл с паролями лучше в директории за пределами root папки сервера.
Ответ отправил: Чаднов Н (статус: 2-ой класс)
Ответ отправлен: 24.03.2008, 01:11

Отвечает: Неизвестно
Здравствуйте, Прим Палвер!
Вторым способом можно не задумываться, как извлечь пароль из файла (открыть, считать, закрыть).
Ответ отправил: Неизвестно (статус: 3-ий класс)
Ответ отправлен: 24.03.2008, 09:09


Вы имеете возможность оценить этот выпуск рассылки.
Нам очень важно Ваше мнение!
Оценить этот выпуск рассылки >>

Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2008, Портал RusFAQ.ru, Росси, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале

∙ Версия системы: 4.72.6 beta от 22.03.2008

Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное