Модераторы: Snowy, Poseidon, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Delphi и php, Подскажие  
V
    Опции темы
geronime
Дата 25.12.2007, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 24.12.2007

Репутация: нет
Всего: нет



Здравствуйте, подскажите новичку  пожалуйста!У меня есть сервер на ServerSocket и есть прога Scilab ( не важно конечно какая  ) они между собой общаются по сокетам прекрасно.Мне надо что бы присланные данные с проги  на сервер отправлялись на php скрипт.Как    это реализовать на делфи или на php?Если на php дайте пожалуйста ссылочку или где можно почитать,если это можно реализовать на делфи то соответстенно, буду рад любой помощи!!!! 
PM MAIL   Вверх
SneG0K
Дата 26.12.2007, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Max Mara
***


Профиль
Группа: Завсегдатай
Сообщений: 1887
Регистрация: 1.12.2007
Где: Wis Dells

Репутация: 2
Всего: 54



Смотри в пхп пишеш следующее!
Код

$dannye=$_GET['infa'];


А в дельфи пишеш следующее
Код

var
infa:string;
......

IdHttp1.get('твой_сайт.флаг/скрипт.php?infa='+infa);


infa - в эту переменную записуй данные

Если я тебе помог, то пометь тему как решенную smile 

Это сообщение отредактировал(а) SneG0K - 27.12.2007, 10:25
PM WWW Skype   Вверх
geronime
Дата 27.12.2007, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 24.12.2007

Репутация: нет
Всего: нет



Спасибо что заметили!Я попробовал что ты предложил и у меня ничего не получилось , может потому что я полный чайник если можно то по подробнее.И еще мне надо что бы любой подключившейся получал инфу с сервака зная его порт и ip.
Заранее всем благодарен!
PM MAIL   Вверх
SneG0K
Дата 27.12.2007, 23:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Max Mara
***


Профиль
Группа: Завсегдатай
Сообщений: 1887
Регистрация: 1.12.2007
Где: Wis Dells

Репутация: 2
Всего: 54



Кароч если я правильно тебя понял, то тебе надо, чтоб какие-то данные записывались в PHP скрипт, и еще клиенту передавался ip и порт сервера?

смотри.... обьясняю на пальцах....
это добавляеш в PHP скрипт

Код

$information=$_GET['inf']; - в эту переменную запишутся данные, которе пришли от твоей проги
$ip=$_GET['ip']; - в эту запишется ip
$port=$_GET['port']; - а в эту соответственно порт
echo 'инфа - $information, $ip, $port; - тут ети данные выводятся на экран


А вот следующие данные добавляеш в Delphi
Код

............
var
infa:string;
ip:string;
port:integer;
.......
/этим переменным присваивай значения и вперед

/С помощью api функций получай ип и порт
/добавь на форму TIdHTTP с закладки indy clients
/данные отправляй так отправляй 
IdHttp1.get('http://адресс_твоего_сайта_где_будет_PHP_скрипт/имя_скрипта?inf='+infa+'&ip='+ip+'&port='+port);


У меня все работает! Надеюсь помог! потом опишу получени ипи порта.... щас так башка трещит smile 

Это сообщение отредактировал(а) SneG0K - 27.12.2007, 23:58
PM WWW Skype   Вверх
geronime
Дата 28.12.2007, 15:11 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 24.12.2007

Репутация: нет
Всего: нет



Я маленько плохо выразился!Мне не надо выводить в php  ip и  port. Мне надо то есть имееться один сервер и несколько php  скриптов  на разных сайтах которые обращаются к этому серверу и получают одинаковую информацию которая находится в мемо у сервака!!!

Я пробовал как ты предлогал в php
Код

<?php
$information=$_GET['inf']; 
echo  $information,
?>
 
в делфи
Код

procedure TForm1.Button5Click(Sender: TObject);
var
infa:string;
begin
infa:= ('ghghjghjg');
IdHTTPServer1.get('http://localhost/6.php?inf='+infa);
end;
 
пишет ошибка  Undeclared identifier: 'get'   
PM MAIL   Вверх
SneG0K
Дата 28.12.2007, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Max Mara
***


Профиль
Группа: Завсегдатай
Сообщений: 1887
Регистрация: 1.12.2007
Где: Wis Dells

Репутация: 2
Всего: 54



 smile  smile  smile ГЫ.... теперь понятно!!!
С закладки IndyClients кидаеш на форму IdHTTP1
Далее пишеш
Код

var
infa:string;
............
infa:='hello';
IdHTTP1.GET('http://localhost/6.php?inf='+infa);

Не IdHTTPServer, а IdHTTTP smile 
Вот так.... ты название скорей всего неправильно написал!!!

Это сообщение отредактировал(а) SneG0K - 28.12.2007, 15:38
PM WWW Skype   Вверх
geronime
Дата 29.12.2007, 08:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 24.12.2007

Репутация: нет
Всего: нет



Огромное спасибо SneG0K что не забываешь про меня!!!И правдо я поменял элемент и все заработало только php на отказ нехотит отображать!
Я попробовал следующим образом
Код

<?php
$cfgserver = "192.168.0.21"; 
$cfgport = 3000; 
$cfgtimeout = 1; 
$fp = fsockopen($cfgserver, $cfgport, &$errno, &$errstr, $cfgtimeout);
if (!$fp) {
    echo "$errstr ($errno)<br />\n";
} else {
    fputs($fp, "Соединение");
    echo '<pre>'; //Что бы нам было лучше видно заголовки, которые отдаст сервер
    echo fgets($fp); //Выводим ответ сервера
    echo '</pre>';
            fclose($fp);
}
?>

а в делфи
Код

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
procedure WriteHeader(const s: String);
begin
Socket.SendText(s+#13#10);
Memo1.Lines.Add('> ' + s);
Memo2.Lines.Add('Клиет прислал сообщение');
Memo1.Lines.Add('> '+Socket.ReceiveText);
  end;
begin
WriteHeader(Edit1.Text);
Socket.Close;
end;

Получаеться в php отображаеться только то что я записал в Edit1
Но так как я ничего не соображаю в делфи, вопрос состоит в следущем мне по сокетам от одной програмки приходит строка которую я записываю в memo, как сделать так чтобы она сразу отправлялась на php???Заранее спосибо!!!!  
PM MAIL   Вверх
SneG0K
Дата 29.12.2007, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Max Mara
***


Профиль
Группа: Завсегдатай
Сообщений: 1887
Регистрация: 1.12.2007
Где: Wis Dells

Репутация: 2
Всего: 54



А ты просто эту строку отправляй с помощью IdHTTP1!
Код

IdHTTP1.GET('http://localhost/6.php?inf='+infa+'&stroka='+stroka);


А в пхп тогда внеси следующюю перемнную
Код

$stroka=$_GET['stroka'];

PM WWW Skype   Вверх
geronime
Дата 30.12.2007, 13:28 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 24.12.2007

Репутация: нет
Всего: нет



Всеравно что-то ничего не выходит может быть из-за того что у меня php 4. Не хочет он у меня отображыть и все.Может быть есть еще какой нибуть способ?А кстати  всех С НОВЫМ ГОДОМ!!!!!!!!!!!! 
PM MAIL   Вверх
SneG0K
Дата 30.12.2007, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Max Mara
***


Профиль
Группа: Завсегдатай
Сообщений: 1887
Регистрация: 1.12.2007
Где: Wis Dells

Репутация: 2
Всего: 54



Выложи код  в студию... а то я вообще не могу понять, что надо..... 
PM WWW Skype   Вверх
geronime
Дата 2.1.2008, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 24.12.2007

Репутация: нет
Всего: нет



Вот на делфи
Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ScktComp, StdCtrls, Spin, Buttons, IdBaseComponent, IdComponent,
  IdTCPConnection, IdTCPClient, IdHTTP, IdTCPServer, IdCustomHTTPServer,
  IdHTTPServer;

type
  TForm1 = class(TForm)
    ServerSocket1: TServerSocket;
    Button3: TButton;
    Edit1: TEdit;
    Memo1: TMemo;
    Memo2: TMemo;
    sedPort: TSpinEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Button4: TButton;
    sbtStartstop: TSpeedButton;
    Button1: TButton;
    IdHTTP1: TIdHTTP;
    procedure sbtStartstopClick(Sender: TObject);
    procedure ServerSocket1ClientConnect(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure ServerSocket1ClientDisconnect(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure ServerSocket1ClientError(Sender: TObject;
      Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
      var ErrorCode: Integer);
    procedure ServerSocket1ClientRead(Sender: TObject;
      Socket: TCustomWinSocket);
      procedure Button3Click(Sender: TObject);
    procedure sbtClearClick(Sender: TObject);
    procedure sbtClearClick1(Sender: TObject);
       procedure ServerSocket1ClientWrite(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
      private
      procedure AddLinef(const f: String);
      procedure AddLined(const d: String);
        { Private declarations }
  public

    { Public declarations }
  end;

var
  Form1: TForm1;


implementation

{$R *.dfm}
 
procedure TForm1.AddLinef(const f: String);
  begin
    Memo2.Lines.Add(f);
      end;
 procedure TForm1.AddLined(const d: String);
  begin
    Memo1.Lines.Add(d);
      end;
 procedure TForm1.sbtClearClick(Sender: TObject);
begin
  Memo1.Clear;
  end;
procedure TForm1.sbtClearClick1(Sender: TObject);
begin
  Memo2.Clear;
  end;
procedure TForm1.sbtStartstopClick(Sender: TObject);
begin
   if sbtStartStop.Tag = 0 then
    begin
     ServerSocket1.Port:=sedPort.Value;
      ServerSocket1.Active:=true;
      sbtStartStop.Caption:='Остановить сервер';
      sbtStartStop.Tag:=1;
      AddLinef('['+DateTimeToStr(Now) + ']: Сервер успешно запущен на ' + IntToStr(sedPort.Value) + ' порту');
    end
  else
    begin
      ServerSocket1.Active:=false;
      sbtStartStop.Caption:='Запустить сервер';
      sbtStartStop.Tag:=0;
      AddLinef('['+DateTimeToStr(Now) + ']: Сервер успешно остановлен');
    end
end;

procedure TForm1.ServerSocket1ClientConnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
 {Здесь клиент подсоединяется}
     AddLinef('['+DateTimeToStr(Now) + ']: Присоединился клиент ' + Socket.RemoteAddress + ' (' + Socket.RemoteHost + ') на порт ' + IntToStr(Socket.RemotePort));
end;

procedure TForm1.ServerSocket1ClientDisconnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
 {Здесь клиент отсоединяется}
      AddLinef('['+DateTimeToStr(Now) + ']: Клиент ' + Socket.RemoteAddress + ' (' + Socket.RemoteHost + ') отсоединился от порта ' + IntToStr(Socket.RemotePort));
end;

procedure TForm1.ServerSocket1ClientError(Sender: TObject;
  Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
  var ErrorCode: Integer);
begin
{Произошла ошибка - выводим ее код}
      AddLinef('Клиент ошибка. Code = '+IntToStr(ErrorCode));
end;

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
 var
 stroka:string;
 infa:string;
procedure WriteHeader(const s: String);
begin
Socket.SendText(s+#13#10);
AddLined('> ' + s);
AddLinef('Клиет прислал сообщение');
Memo1.Lines.Add('> '+Socket.ReceiveText);
  end;
begin
infa:='789';
stroka:='123456';
WriteHeader(Edit1.Text);
Socket.Close;
IdHTTP1.GET('http://localhost/index.php?inf='+infa+'&stroka='+stroka);

end;
procedure TForm1.ServerSocket1ClientWrite(Sender: TObject;
  Socket: TCustomWinSocket);
begin
AddLinef('Теперь можно написать в сокет');

end;
procedure TForm1.Button3Click(Sender: TObject);
   var i: Integer;
    begin
      {Посылаем ВСЕМ клиентам сообщение из Edit1}
      for i := 0 to ServerSocket1.Socket.ActiveConnections-1 do begin
       ServerSocket1.Socket.Connections[i].SendText(Memo1.Text);
      end;
      AddLined('< '+Edit1.Text);
     end;
end.

А это простенько на php
Код

<?php
$fp = fsockopen('192.168.0.21', 3000); //Подсоединяемся с хосту "localhost" на 80-й порт
if($fp)
{
    //Соединение создано, всё в порядке
    fputs($fp, "1");
    echo '<pre>'; //Что бы нам было лучше видно заголовки, которые отдаст сервер
    echo fgets($fp); //Выводим ответ сервера
    echo '</pre>';
    
    fclose($fp); //Закрываем сокет
}
?>


Вот!

Это сообщение отредактировал(а) geronime - 2.1.2008, 13:05
PM MAIL   Вверх
SneG0K
Дата 2.1.2008, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Max Mara
***


Профиль
Группа: Завсегдатай
Сообщений: 1887
Регистрация: 1.12.2007
Где: Wis Dells

Репутация: 2
Всего: 54



 А что он вообще делать должен??? Я чето нифига не понимаю...  Это пхп должен присоединяться к программе на дельфи?
PM WWW Skype   Вверх
geronime
Дата 7.1.2008, 08:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 24.12.2007

Репутация: нет
Всего: нет



Вот я думаю, как лучше сделать?Задача такая, php должен отображать инфу пришедшую по сокетам с программы!!!А как это сделать,с помощью чего безразницы!  
PM MAIL   Вверх
SneG0K
Дата 7.1.2008, 23:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Max Mara
***


Профиль
Группа: Завсегдатай
Сообщений: 1887
Регистрация: 1.12.2007
Где: Wis Dells

Репутация: 2
Всего: 54



Слушай... я ж тебе уже обьяснил, что всю инфу пришедшую сохраняй в какуй нить переменную! А потом уже пользуйся компонентом IDHTTP.... все подробно расписано... пошевели слегка мозгами smile

Добавлено через 2 минуты и 22 секунды
Стой... Отображать.. отображать в реальном времени?

Добавлено через 2 минуты и 24 секунды
Стой... Отображать.. отображать в реальном времени?
PM WWW Skype   Вверх
geronime
Дата 8.1.2008, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 24.12.2007

Репутация: нет
Всего: нет



Я пробовал как ты говорил и делаал как написал, и в коде использвал компонент только ничего не выходит.Мне надо как только с проги пришла инфа что бы она сразу отправлялась на php.Я понимаю, что уже достал,но мне очень надо ,помогите???
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0674 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.