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

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

  Все выпуски  

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


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

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

Выпуск № 671
от 29.05.2007, 08:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 434, Экспертов: 61
В номере:Вопросов: 3, Ответов: 4


Вопрос № 88217: Здравствуйте! Имеется несколько таблиц в БД, нужно разделить пользователей по доступу к таблицам. Как лучше сделать: одна база - три таблицы и три пользователя с ограниченными правами к базе (НО могущих теоретически обращать ко всем таблицам, а не к ...
Вопрос № 88288: Здравствуйте! У меня стоит Денвер (PHP5). Использую в скрипте сессии. Скрипт один из трёх модулей: 1 - выбор действия; 2 - обработка данных, заполнение сессионных переменных; 3 - выбор данных из сессионных переменных, запись выбранных данных в фа...
Вопрос № 88345: Здравствуйте. Есть например следующий код в странице: <title>Название статьи</title> <description>Описание статьи</description> <access name=”level”>5</access> <kernel name="ar...

Вопрос № 88.217
Здравствуйте! Имеется несколько таблиц в БД, нужно разделить пользователей по доступу к таблицам. Как лучше сделать: одна база - три таблицы и три пользователя с ограниченными правами к базе (НО могущих теоретически обращать ко всем таблицам, а не к одной!) или разделить три таблицы на три разные базы (каждая уже с одной таблицей) и три пользователя, которые не смогут получить доступ не к своей таблице, т.к. она в другой базе?
Отправлен: 23.05.2007, 10:40
Вопрос задал: VicBar (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Madproger
Здравствуйте, Баринов Виктор Юрьевич!

Добрый день... В MySQL с помощью GRANT и REVOKE вы можете установить права на каждую таблицу... Т.е. разрешить SELECT и что еще надо отдельно на таблицу
(GRANT SELECT ON db.table1 TO user1@127.0.0.1 IDENTIFIED BY 'pass')

И если вы на остальные таблицы запретите SELECT то ни о каком "теоретическом чтении" (с) речи быть не может.... А создавать три разные базы - думаю не этично :)
---------
И будет вам счАстиЕ!
Ответ отправил: Madproger (статус: 10-ый класс)
Ответ отправлен: 23.05.2007, 10:48
Оценка за ответ: 5

Отвечает: Игорь Елизаров
Здравствуйте, VicBar!
А какая это СУБД ? Для MSSQL разграничение доступа пользователей возможно не только на уровне базы, но и на уровне таблицы, то есть можно задавать пользователям разные права на работу с таблицами.
кто-то будет видеть таблицу, а кто-то - нет
---------
Пользователь - тоже человек..
Ответ отправил: Игорь Елизаров (статус: Студент)
Ответ отправлен: 23.05.2007, 22:26


Вопрос № 88.288
Здравствуйте!
У меня стоит Денвер (PHP5). Использую в скрипте сессии. Скрипт один из трёх модулей: 1 - выбор действия; 2 - обработка данных, заполнение сессионных переменных; 3 - выбор данных из сессионных переменных, запись выбранных данных в файл.
Скрипт начинается так:
session_start();
if (!session_is_registered('content_anons')) session_register("content_anons");
if (!session_is_registered('content_tv')) session_register("content_tv");
if (!session_is_registered('day')) session_register("day");

Вопрос.
Почему выводится предупреждение:
Warning: Unknown: Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively. in Unknown on line 0

Предупреждение выводится только во втором модуле!

Сам по себе скрипт работает, но это предупреждение несколько раздражает :)
Отправлен: 23.05.2007, 17:39
Вопрос задал: Dedserge (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Селев Валерий
Здравствуйте, Dedserge!

Начиная с версии 4, рекомендуют обращаться к переменным сессии только через суперглобальный массив $_SESSION.

Поэтому просто используйте конструкции вида
if (!isset ($_SESSION['content_anons'])) ....
Ответ отправил: Селев Валерий (статус: 4-ый класс)
Ответ отправлен: 23.05.2007, 17:53
Оценка за ответ: 3
Комментарий оценки:
Никакого эффекта данная замена не дала :(


Вопрос № 88.345
Здравствуйте.

Есть например следующий код в странице:

<title>Название статьи</title>
<description>Описание статьи</description>
<access name=”level”>5</access>
<kernel name="article_id">2577</kernel>
<kernel name="article_dir">64</kernel>

<comment id=”15775562”>Все OK!</comment>
<comment id=”15775563”>Все BAD :(</comment>

<h1 class=”head”>Заголовок</h1>

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

$headers[title] = Название статьи
$headers[description] = Описание статьи
$headers[access][level] = 5
$headers[kernel][article_id] = 2577
$headers[kernel][article_dir] = 64
$headers[comment][15775562] = Все OK!
$headers[comment][15775563] = Все BAD :(
$headers[h1] = Заголовок

Для поиска простых значений элементов <name>Value</name> я использую следующую функцию:

function parse_element( $name = false, $read = false ) {

if( !empty( $read )
and !empty( $name )
and preg_match_all( "#(<".$name.".*?>)(.*?)(</".$name.">)#si", $read, $array ) )
return preg_replace( "#<".$name.".*?>|</".$name.">#si", "", $array[0][0] );
return false;
}

т.е. я определенно знаю что иксать, например
$headers[title] = parse_element( “title”, $file );

Помогите с задачей

Заранее благодарю
Отправлен: 24.05.2007, 04:30
Вопрос задал: Оськин Дмитрий Владимирович (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: HookEst
Здравствуйте, Оськин Дмитрий Владимирович!
для обработки аттрибутов, создал еще одну функцию parseA($tag,$att,$src) - возвращает массив значений всех тегов $tag из $src имеющих аттрибут $att.
Вообщем смотрите приложение.
Успехов.

Приложение:

Ответ отправил: HookEst (статус: Студент)
Ответ отправлен: 24.05.2007, 08:40
Оценка за ответ: 4
Комментарий оценки:
Спасибо.

Я сделал так:
/*
* @ parse_elements
*
*
* Value
*
* 2577
*
*/
function parse_elements( $element= false, $read = false ) {
$result = false;

if( !empty( $read )
and !empty( $element)
and preg_match_all( "#(<".$element.".*?>)(.*?)()#si", $read, $array ) ) {

foreach( $array[0] as $val ) {

preg_match( "#name="(.*?)"#si", $val, $name );
$name = preg_replace( "#name="|"$#si", "", $name[0] );

if(!empty( $name )) $result[$name] = preg_replace( "#<".$element.".*?>|#si", "", $val );
else $result[] = preg_replace( "#<".$element.".*?>|#si", "", $val );
}
}

if( is_array( $result ) and empty( $name ) and count( $result ) == 1 ) return join( "", $result );
return $result;
}
может конечно же не так и хорошо с регулярными выражениями:)


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

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

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

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

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


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


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Email: support@rusfaq.ru, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.52 от 02.05.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное