Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Использование одного MySQL-пользователя для реализации авторизации множества пользователей

Сообщения:  [1-10]   [11-15] 

 
 автор: Ralph   (07.03.2007 в 14:15)   письмо автору
 
   для: Ralph   (07.03.2007 в 13:59)
 

Лично я в начале каждого файла прописываю строку include'db.php'; где файл имеет текст
<?php

function mq($q,$e)

{
$r=mysql_query($q);
if(!
$r){exit('ошибка БД'.$e.mysql_error());}
return;}

$mid=@mysql_connect('server','login','password');
if(!
$mid){exit('не удалось соединиться с базой');}
mq("USE database",'Выбор базы данных');
?>
а далее в главном файле пользуюсь инструкциями типа mq("select...",'чтение...')

   
 
 автор: parallelepiped   (07.03.2007 в 14:01)   письмо автору
 
   для: Ralph   (07.03.2007 в 13:59)
 

Спасибо тебе огромное за то что потратил на меня время и все разжевал. Действительно, очень тебе благодарен! :)

   
 
 автор: Ralph   (07.03.2007 в 13:59)   письмо автору
 
   для: parallelepiped   (07.03.2007 в 13:37)
 

Сам просил поподробнее :-) В принципе,все правильно,но для того,чтобы все запросы в index.php работали,необязательно вызывать постоянное соединение mysql_pconnect,хватит обычного mysql_connect

   
 
 автор: Ralph   (07.03.2007 в 13:47)   письмо автору
 
   для: Ralph   (07.03.2007 в 13:36)
 

Если такая строка есть-значит,по крайней мере,пользователь зарегистрирован.Теперь проверим,имеет ли он право удалять статьи if($dim['статус']!='админ'){exit'извини,ты конечно классный мужик,но удалять статьи не имеешь права';}.Получается,мы проверили,что да,есть в таблице юзеров пользователь с таким логином и паролем,и что он админ,следовательно можно с чистой совестью посылать базе запрос на удаление из таблицы 'статьи' строки номер 8 mysql_query("DELETE FROM статьи WHERE num=8

   
 
 автор: parallelepiped   (07.03.2007 в 13:42)   письмо автору
 
   для: Ralph   (07.03.2007 в 13:36)
 

Да это-то понятно :) Как раз это в учебниках написано. Мне просто необходимо взглянуть с другой стороны на хранение имени пользователя и пароля к БД как-нибудь так, чтобы неавторизованый юзер мог получать инфу (не важно, через другой скрипт это делается или напрямую) но при этом не получал пароля от БД, в том-то и дело что я не понимаю принципа. Возможно, конечно, его можно прямо в коде писать не скрывая, если код php нельзя прочитать никому или как-то иначе, я вот этого как раз и не знаю.

   
 
 автор: parallelepiped   (07.03.2007 в 13:37)   письмо автору
 
   для: Ralph   (07.03.2007 в 13:11)
 

Ну про телефон, это ты переборщил, конечно ;) Я более-менее понимаю что к чему. И если бы была возможность создать несколько пользователей БД у меня и вопросов бы не возникло: один пользователь для web с правами SELECT на определенные таблицы и все, другой админ со всеми правами.
У меня пример такой: на странице выодится ежедневный анонс, и сопутствующие ему элементы, как действующие лица, например и еще что-нибудь. Т.е. только SELECT меня интересует. Как я понял, можно сделать так: К к index.php подключаем файл db_inf.php c сhmod 700, например (чтобы пользователям он был не доступен) из него устанавливаем постоянное соединение с БД ( mysql_pconnect(), если я правильно все понимаю), и все запросы в index.php работают. Или в этом файле с паролем и логином я пишу функцию подключения к БД, вида
db_connect () {
return mysql_connect('host','login,'pass);
}
' которой потом пользуюсь?

   
 
 автор: Ralph   (07.03.2007 в 13:36)   письмо автору
 
   для: Ralph   (07.03.2007 в 13:25)
 

переменная становится массивом,ключами которого становятся те столбцы,имена которых мы указали после слова select.Так как мы указали один столбец 'статус',то у нас должен получиться массив с одним ключом-$dim['статус'].Теперъ проверяем if(!$dim){exit'fuck you';}-если массив не создан-значит,в той таблице нет строки,соответствующей нашим условиям-скорее всего это значит,что со скриптом работает незарегистрированный пользователь.Следовательно,посылаем его нах и заканчиваем работу

   
 
 автор: Ralph   (07.03.2007 в 13:25)   письмо автору
 
   для: Ralph   (07.03.2007 в 13:11)
 

Если не получилось-выдает сообщение об ошибке и прекращает работу.Получилось-посылает базе запрос $dim=mysql_fetch_array(mysql_query("SELECT статус FROM юзеры WHERE l='логин,взятый из куки' AND p='пароль из куки' LIMIT 1")).У нас в базе есть таблица 'юзеры' со столбцами 'логин','пароль','статус'... Запрос запрашивает из таблицы юзеров одну строку,у которой значение столбца l равно нашему логину из кук,а значение столбца p равно паролю из кук.Если строка с таким условием найдена,то

   
 
 автор: Ralph   (07.03.2007 в 13:11)   письмо автору
 
   для: parallelepiped   (07.03.2007 в 12:59)
 

Хорошо,к примеру,кто-то загрузил страницу на моем сайте и нажал на ссылку "удалить статью #8",вызвав скрипт 'удаление.пхп'.скрипт начинает работу.Первым делом он должен узнать,кто к нему обратился.Простейший (правда,опасный,но пока это неважно) вариант-мой логин и пароль хранятся в куках.Скрипт читает куку 'логин' и куку 'пароль'.Дальше он устанавливает соединение с базой mysql_connect(имя сервера с базой данных,логин пользователя базы,пароль пользователя базы).Проверяет,получилось ли соединиться

   
 
 автор: parallelepiped   (07.03.2007 в 12:59)   письмо автору
 
   для: Ralph   (07.03.2007 в 12:51)
 

Спасибо тебе огромное за внесение некоторой ясности. А не мог бы ты указать мне на какой-нибудь пример того как это работает, только не на какой-нибудь CMS, желательно чтобы попроще было. Можно даже без кода, схемой или как-нибудь еще. Я много где искал просто, разжеванного нигде не нашел, а это ведь основа.

   

Сообщения:  [1-10]   [11-15] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования