Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.06.2009, 13:13   #1
Lime
Форумчанин
 
Аватар для Lime
 
Регистрация: 10.02.2009
Сообщений: 815
Вопрос Клиент на Delphi7 , Сервер на PHP

Доброго времени суток !
Возник такой вопрос ( а точнее их набор )

Хочу сделать "сервер-клиент" но основанный на Делфи и Пхп скриптах на сервере.

Желаемые возможности :
1)Авторизация клиента на сервере
2)Загрузка на сервер файлов/данных через формы
3)"Общение в сторону Сервер => Клиент. То есть сервер "отправляет данные/сообщения" клиенту
4)Управление полученными данными на сервере(Админка так сказать)
5)Список подключившихся/подключённых ? клиентов

Реализовать я всё это собрался по примитивному) так как php изучил только азы, коих в прочем хватает для работоспособности задуманного.
А конкретнее : авторизация на сервере описана в другом разделе - тут. Данные ( текстовые к примеру , type=text , textarea ) вожможно передавать методом Пост , Как "заливать на сервер файлы" - есть примеры скриптов , правда они расчитаны под браузер , а у меня это должно происходить "без вмешательства пользователя".
Редактирование данных на сервере(текстовых) также довольно просто, открытие в textarea оригинала , изменение , пересохранение.
А вот ткак быть с общением в другую сторону? Чтобы сервер отсылал данные клиенту? Я решил сделать всё очень примитивно - Сервер создаёт файл2 с "командами/данными"(тхт) и меняет постоянный файл1 с настройками( файл1 с настройками создаётся предварительно , при регистрации клиента) , а точнее исправляет в нём путь на текущий файл2 с командами/данными. Клиент же в свою очередь (залогинившись) Смотрит настройки файла1 , уточняет время исполнения и скачивания файла2 , в установленное время скачивает и выполняет при этом отправляет отчёт о работе на сервер.

После некоторого времени пользования сервисом , на сервере получится некий список клиентов ( который хотелось бы видеть для информации , видеть тех кто в данный момент подключен) их данные ( отосланные ими файлы, отчёты о проделанной работе лог коннектов дисконектов скачиваний IP итд. Тут же вопрос , создавать каждому юзеру свою папку с данными?

Подскажите ,как эффективнее реализовать то , что я задумал?Если можно , по пунктам
//На днный момент , авторизация происходит по константам встроенным в пхп файл, и имеет переменные типа "уровня доступа" 0-3 , очень хотелось бы обойтись без MySQL ...

Последний раз редактировалось Lime; 27.06.2009 в 13:55.
Lime вне форума Ответить с цитированием
Старый 29.06.2009, 11:28   #2
mv28jam
Старожил
 
Аватар для mv28jam
 
Регистрация: 09.09.2008
Сообщений: 2,624
По умолчанию

Цитата:
Реализовать я всё это собрался по примитивному)
То что Вы написали по примитивному не получится.
По пунктам как просили.(целых 2)
1.Отказаться от описанной вами схемы.
2.Углубиться в php до работы с сокетами и базами данных.

Вариантов у Вас 2:
1)Работать через БД. Клиент и сервер работают с одной базой данных. Схема такая Delphi-клиент держит соединение с бд, с заданным интервалом обновляя данные и соответственно на них реагируюя. Взаимодействие происходит по схеме: сервер(php) пишет сообщение в базу->клиент читает его при обновлении, клиент пишет сообщение в базу и вызывает скрипт обработчик нужного события.
Предпочтительный вариант учитывая что в php у Вас "только азы".
2)Работа через сокеты. Придумать протокол для "общения". Открыть соединение мд сервером и клиентом. Если вы работалт через сокеты то обьяснять как работать я думаю не надо. В этом случае возникают сложности, тк на сервере надо запускать php-демона.
Этот вариант наилучший, но требует глубоких знаний php и delphi.
Стрелок-охотник
mv28jam вне форума Ответить с цитированием
Старый 29.06.2009, 21:16   #3
Lime
Форумчанин
 
Аватар для Lime
 
Регистрация: 10.02.2009
Сообщений: 815
Радость

Хмм ... ЗА 3 дня один ответ , значит либо тема сложная , либо меня не поняли , либо действительно нужно переходить на бд.
Сокеты на делфи более менее занакомы , в пхп на данном этапе не хочу туда соватся. Как я понимаю необходимо у клиентов иметь "чистый" IP ... привязанный провайдером к компьютеру юзера/клиента.

С бд я никогда не работал)) это меня немного и "пугает") вот и возможностей полных не знаю.
+Хостинг с пхп найти намного рпоще чем с пхп+mysql ....если разберусь то возможно платный возьму)
Ближе к теме , сопутствующие вопросы :
1)Мне будет нужно хранить файлы залитые с клиента на сервере , как их отделять? Создавать папки или можно использовать бд ?
2) Можно ли организовать доступ к бд(посредством скриптов) клиенту только полсе авторизации на сайте? Аналогично не только клиенту , но и юзерам на сайте? тоесть "юзер" - может просматривать файлы им залитые(его клиентом) и создавать/редактировать команды клиенту . "клиент" - только программа - может заливать файлы , смотреть команды , создавтаь команды для себя-же. "Админ" - соответственно имеет полный доступ , создание удаление просмотр ...ну и прочее не относящееся к бд.
3) - больше причина - SQL инекции ... как я понял для защиты достаточно всего лиш фильтрировать данные касающиеся запросов к бд.

Можно снова по пунктам? - Спасибо
Lime вне форума Ответить с цитированием
Старый 30.06.2009, 10:37   #4
Daramant
Форумчанин
 
Регистрация: 06.01.2009
Сообщений: 340
По умолчанию

1. Хранить можно или в определенной директории или в БД - зависит от того, какие данные будут храниться в файлах и как они будут использоваться в дальнейшем.

2. Из php-скрипта возможно обращение к БД, из Delphi тоже.

3. Да, нужно фильтровать: на кавычки, спецсимволы.
Истинный успех – это то, что Вы сделали в сравнении с тем, что могли бы сделать.
Никогда не бойся делать то, что ты не умеешь. Помни, ковчег был построен любителем. Профессионалы построили "Титаник".
Daramant вне форума Ответить с цитированием
Старый 30.06.2009, 11:07   #5
Lime
Форумчанин
 
Аватар для Lime
 
Регистрация: 10.02.2009
Сообщений: 815
Радость

По тем-же пунктам :
Цитата:
1. Хранить можно или в определенной директории или в БД - зависит от того, какие данные будут храниться в файлах и как они будут использоваться в дальнейшем.
Наверное сделаю поле в таблице - путь к папке с файлами "клиента" - может использовать просто № ? Тоесть порядковый номер , который при регистрации увелечивается.
Цитата:
2. Из php-скрипта возможно обращение к БД, из Delphi тоже.
Это мне понятно , вопрос был немного о другом : Возможно ли разделить доступ к бд на разные уровни? Тоесть как я понимаю из поставленной себе задачи - 2 уровня , 1вый - для приложения в делфи(клиентской части) 2рой - для пхп скриптов на сервере.
А может я не правильно выразился - просто в некоторой степени ограничить права доступа с ехе приложения( ведь можно отследить куда моё приложение подключается .. и далее пробовать к моей базе подключится другим способом ...попытка взлома)
Вот я и спрашиваю : Подключится к серверу - и в зависимости от логинпароля получить разные права на бд. возможно?

Или как вариант бд изменять не напрямую из делфи приложения - а с помощью POST'ов как через браузер? Тогда уже пхп скрипт будет определять "права" и давать доступ к "формам" для редактирования удаления добавления записей в таблицы в соответствии с переменными уровня в сессии.
От приложения в делфи требуется только залогинится + залить файлы в свою директорию/скачать файлы из своей директории/изменить некоторые данные о своём состоянии(-в файлах или бд ещё не решил , но скорее в бд)
Lime вне форума Ответить с цитированием
Старый 30.06.2009, 11:42   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

В принципе я делал на Делфи сервер на основе IdHTTP.
Можно прикрутить к ниму PHP интерпретатор, но на практике я такого не делал
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.06.2009, 12:09   #7
goblinyara
Форумчанин
 
Аватар для goblinyara
 
Регистрация: 02.01.2009
Сообщений: 340
По умолчанию

Цитата:
Сообщение от Lime Посмотреть сообщение
Как я понимаю необходимо у клиентов иметь "чистый" IP ... привязанный провайдером к компьютеру юзера/клиента.
Нет. тем более, он называется "белый" IP. так вот, белый IP должен быть у сервера. у клиентов вполне могут быть серые IP, то есть клиентам по барабану где быть, либо напрямую в инете, либо через локаль, главное, чтобы был путь до сервера
DelphiWorld 6. Скачай, поставь, и будет тебе счастье=)
Программирование, как и любовь -- одно слово, за которым скрывается бесконечное множество занятий.
goblinyara вне форума Ответить с цитированием
Старый 30.06.2009, 12:30   #8
Daramant
Форумчанин
 
Регистрация: 06.01.2009
Сообщений: 340
По умолчанию

Цитата:
Или как вариант бд изменять не напрямую из делфи приложения - а с помощью POST'ов как через браузер
Конечно лучше сделать единообразный доступ и права проверять в скриптах.
Для разграничения прав, в БД вводится соответствующее поле "группа". (например таблица: логин, пароль, группа) группы, скажем: admin, user, guest and etc. Ну и в зависимости от группы, к которой пренадлежит пользователь, он может совершить набор операций.
Истинный успех – это то, что Вы сделали в сравнении с тем, что могли бы сделать.
Никогда не бойся делать то, что ты не умеешь. Помни, ковчег был построен любителем. Профессионалы построили "Титаник".
Daramant вне форума Ответить с цитированием
Старый 30.06.2009, 12:54   #9
Lime
Форумчанин
 
Аватар для Lime
 
Регистрация: 10.02.2009
Сообщений: 815
Подмигивание

Цитата:
Сообщение от goblinyara Посмотреть сообщение
Нет. тем более, он называется "белый" IP. так вот, белый IP должен быть у сервера. у клиентов вполне могут быть серые IP, то есть клиентам по барабану где быть, либо напрямую в инете, либо через локаль, главное, чтобы был путь до сервера
Ну я и не расчитывал на "белые ИП" у юзеров , а вот если работать с сокетами то как я понимаю серверу нужен ИП клиента чтобы знать куда отправлять , возможно я ошибаюсь ...

Всё же я решил совершать общение через запросы клиента к бд напрямую или через скрипты.
Цитата:
Конечно лучше сделать единообразный доступ и права проверять в скриптах.
Для разграничения прав, в БД вводится соответствующее поле "группа". (например таблица: логин, пароль, группа) группы, скажем: admin, user, guest and etc. Ну и в зависимости от группы, к которой пренадлежит пользователь, он может совершить набор операций.
Естественно так и будет , только я решил сделать вместо admin, user, guest - переменную level .. 01234 соответственно ... чем он выше( или ниже- ещё не решил) тем больше прав дают скрипты.

Остаётся вопрос по поводу загрузки файлов на сервер таким путём.
Тоесть клиент логинится(программа) далее смотри инфо на сервере , отправляет своё ... анализирует и выполняет то что нужно ... в тч в некоторых случаях загружает на сервер файлы "отчёты"

Файл схема со стороны юзера
{1) Юзер управляет клиентом из браузера
2) На 1го юзера может быть зарегестрировано несколько клиентов
3) Юзер не должен знать логинпароль клиента(приложения на делфи)
ЛогинПароль приложения сделан при регистрации клиентской части(при установке вводится логин пароль юзера , и на него регестрируется данная копия , так же ей лично выделается логин и пароль для работы с данного компьютера на сервере) для безопастности имеют больше прав чем юзер - потому что клиент выполняет только то что нужно , а юзер может натворить дел с правами клиента .. накидать лишних/ложных файлов на сервер итд итп ...
}
Изображения
Тип файла: jpg map2.JPG (32.9 Кб, 108 просмотров)

Последний раз редактировалось Lime; 30.06.2009 в 13:01.
Lime вне форума Ответить с цитированием
Старый 30.06.2009, 13:20   #10
Daramant
Форумчанин
 
Регистрация: 06.01.2009
Сообщений: 340
По умолчанию

Цитата:
если работать с сокетами то как я понимаю серверу нужен ИП клиента чтобы знать куда отправлять , возможно я ошибаюсь ...
Клиент должен знать IP сервера. Клиент пытается установить соединение. Сервер слушает порт, при получении запроса на соединение устанавливает его и дальнейшая работа идет через это соединение (чтение/запись). Серверу не нужно знать IP клиента.

P.S.
Почему одному юзеру недостаточно одного "exe-клиента"?
Если не секрет, можно в двух словах, что за проект?
Истинный успех – это то, что Вы сделали в сравнении с тем, что могли бы сделать.
Никогда не бойся делать то, что ты не умеешь. Помни, ковчег был построен любителем. Профессионалы построили "Титаник".
Daramant вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
БД клиент-сервер [62]Gambit Помощь студентам 5 25.05.2010 10:49
Возможно-ли Клиент-серверное приложение типа Клиент(Pascal) а сервер(CGI)? Demol Работа с сетью в Delphi 1 21.04.2009 16:18
клиент-сервер Orsika2006 Общие вопросы .NET 1 29.03.2009 13:09
Клиент-сервер-клиент Кронос Работа с сетью в Delphi 3 24.08.2007 07:57
Клиент-Сервер snakesoft Работа с сетью в Delphi 8 20.07.2007 17:34