Witam mam taki kod serverka niestety obsługuje tylko html chciałbym go przystosować aby dało sie na nim uruchomić php ma to być prosta strona do sterowania podlewaniem ogrodu.
<font size="3">Kod servera</span>
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
String prgpath;
char chr=13;
bool IsServer;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
String TForm1::LoadTextFile(String NazwaPliku)
{
TStringList* Lista=new TStringList();
Lista->LoadFromFile(NazwaPliku);
String tekst=Lista->Text;
return tekst;
}
//---------------------------------------------------------------------------
void TForm1::wyslij(String co,TCustomWinSocket* soc)
{
int i,nm;
if(co=="/")
co="/"+prgpath+"\\www\\index.html";
else
co="/"+prgpath+"\\www\\"+co.SubString(2,co.Length());
if(FileExists(co.SubString(2,co.Length())))
{
Memo1->Lines->Add("");
Memo1->Lines->Add("<ok>Przesylam plik: "+co+" na adres "+soc->RemoteAddress+"<ok>");
soc->SendText("HTTP/1.0 200 OK\n");
}
else
{
Memo1->Lines->Add("");
Memo1->Lines->Add("Nie ma pliku: "+co+",adres"+soc->RemoteAddress);
soc->SendText("HTTP/1.0 404 Not found");
}
if(FileExists(co.SubString(2,co.Length())))
{
soc->SendText("Content-type: text/html\n\n"+LoadTextFile(co.SubString(2,co.Length())));
}
Memo1->Lines->Add("");
Memo1->Lines->Add("Koniec transakcji z "+soc->RemoteAddress);
ServerSocket1->Close();
ServerSocket1->Open();
}
//---------------------------------------------------------------------------
TStringList* TForm1::parametry(String s)
{
TStringList*p;
int i,io;
String param;
io=1;
p=new TStringList();
param=s;
param=param+" ";
for(i=1;i<param.Length();i++)
{
if(param[i]==' ')
{
p->Add(param.SubString(io,i-io));
io=i+1;
}
}
return p;
}
//---------------------------------------------------------------------------
void TForm1::dispathheader(String h,TCustomWinSocket* soc)
{
TStringList*header;
TStringList*params;
String get;
Memo1->Lines->Add(soc->RemoteAddress+" przesyla:");
Memo1->Lines->Add(h);
header=new TStringList();
params=new TStringList();
header->Text=h;
get=header->Strings[0];
params=parametry(get);
if(params->Strings[0]=="GET")
wyslij(params->Strings[1],soc);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::CheckBox1Click(TObject *Sender)
{
CheckBox1->Checked!=CheckBox1->Checked;
if(CheckBox1->Checked==true)
{
ServerSocket1->Active=true;
StatusBar1->SimpleText="Nasluchiwanie...";
Memo1->Lines->Add("<ok>Serwer w stanie nasluchu<ok>");
}
else
{
if(ServerSocket1->Active==true)
{
ServerSocket1->Active=false;
StatusBar1->SimpleText="";
Memo1->Lines->Add("<ok>Nasluchiwanie wylaczone<ok>");
}
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
ServerSocket1->Close();
Application->Terminate();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Memo1KeyPress(TObject *Sender, char &Key)
{
if(Key==VK_RETURN)
{
if(IsServer==true)
ServerSocket1->Socket->Connections[0]->SendText(Memo1->Lines->Strings[Memo1->Lines->Count-1]);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ServerSocket1ClientRead(TObject *Sender,
TCustomWinSocket *Socket)
{
dispathheader(Socket->ReceiveText(),Socket);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ServerSocket1Accept(TObject *Sender,
TCustomWinSocket *Socket)
{
IsServer=true;
Memo1->Lines->Add("<ok>Nowe polaczenie, adres: " + Socket->RemoteAddress+"<ok>");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ServerSocket1ClientDisconnect(TObject *Sender,
TCustomWinSocket *Socket)
{
ServerSocket1->Active=false;
CheckBox1->Checked!=CheckBox1->Checked;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
prgpath=ExtractFileDir(Application->ExeName);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormShow(TObject *Sender)
{
CheckBox1->Checked=false;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SpeedButton1Click(TObject *Sender)
{
Form2->Show();
}
//---------------------------------------------------------------------------
<font size="3">Strona w PHP </span>
<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=iso-8859-2">
<title>panel WWW</title>
</head>
<body>
<div align="center">
<p> </p>
<?php
$przycisk=$_POST["przycisk"];
$plik=fopen("stany.txt", "r");
flock($plik, 1);
$stan1=fread($plik,1);
$stan2=fread($plik,1);
$stan3=fread($plik,1);
$stan4=fread($plik,1);
$stan5=fread($plik,1);
$stan6=fread($plik,1);
$stan7=fread($plik,1);
$stan8=fread($plik,1);
flock($plik, 3);
fclose($plik);
switch($przycisk){
case '-1-':
if ($stan1==1){
$stan1=0;
}
else
{
$stan1=1;
}
break;
case '-2-':
if ($stan2==1){
$stan2=0;
}
else
{
$stan2=1;
}
break;
case '-3-':
if ($stan3==1){
$stan3=0;
}
else
{
$stan3=1;
}
break;
case '-4-':
if ($stan4==1){
$stan4=0;
}
else
{
$stan4=1;
}
break;
case '-5-':
if ($stan5==1){
$stan5=0;
}
else
{
$stan5=1;
}
break;
case '-6-':
if ($stan6==1){
$stan6=0;
}
else
{
$stan6=1;
}
break;
case '-7-':
if ($stan7==1){
$stan7=0;
}
else
{
$stan7=1;
}
break;
case '-8-':
if ($stan8==1){
$stan8=0;
}
else
{
$stan8=1;
}
break;
}
$do_zapisu=$stan1.$stan2.$stan3.$stan4.$stan5.$stan6.$stan7.$stan8;
$plik=fopen("stany.txt", "w");
flock($plik, 2);
fwrite($plik,$do_zapisu,8);
flock($plik, 3);
fclose($plik);
?>
<table border="2" cellpadding="10">
<tr>
<td align="center">
<p><font color="#FF0000" size="3"><strong>panel WWW</strong></font></p>
<font size="3">[</font><font color="#FF0000" size="3">
<?php
switch($stan1) {
case '1':
echo("o");
break;
case '0':
echo(" ");
break;
}
?>
</font>
<font size="3">][</font><font color="#FF0000" size="3">
<?php
switch($stan2) {
case '1':
echo("o");
break;
case '0':
echo(" ");
break;
}
?>
</font>
<font size="3">][</font><font color="#FF0000" size="3">
<?php
switch($stan3) {
case '1':
echo("o");
break;
case '0':
echo(" ");
break;
}
?>
</font>
<font size="3">][</font><font color="#FF0000" size="3">
<?php
switch($stan4) {
case '1':
echo("o");
break;
case '0':
echo(" ");
break;
}
?>
</font>
<font size="3">][</font><font color="#FF0000" size="3">
<?php
switch($stan5) {
case '1':
echo("o");
break;
case '0':
echo(" ");
break;
}
?>
</font>
<font size="3">][</font><font color="#FF0000" size="3">
<?php
switch($stan6) {
case '1':
echo("o");
break;
case '0':
echo(" ");
break;
}
?>
</font>
<font size="3">][</font><font color="#FF0000" size="3">
<?php
switch($stan7) {
case '1':
echo("o");
break;
case '0':
echo(" ");
break;
}
?>
</font>
<font size="3">][</font><font color="#FF0000" size="3">
<?php
switch($stan8) {
case '1':
echo("o");
break;
case '0':
echo(" ");
break;
}
?>
</font>
<font size="3">]</font>
<form action="index.php" method="POST">
<input type="submit" name="przycisk" value="-1-">
<input type="submit" name="przycisk" value="-2-">
<input type="submit" name="przycisk" value="-3-">
<input type="submit" name="przycisk" value="-4-">
<input type="submit" name="przycisk" value="-5-">
<input type="submit" name="przycisk" value="-6-">
<input type="submit" name="przycisk" value="-7-">
<input type="submit" name="przycisk" value="-8-">
</form>
</td>
</tr>
</table>
</body>
</html>
Stonka zapisuje do pliku dane w takiej postaci 00000000 ->11111111 zera oznaczają wyłączone jedynki włączone program w c++ bedzie odczytywał stany i podpowiednio reagował.
Moje pytanie brzmi tak<font size="3"> Jak przystosować ten kod do obsługi PHP?</span>
Lub w jaki sposób skontaktować się z programem za pomocą strony www? czy da się zaimplementować stronę bezpośrednio w kodzie c++?