Serwer www obsługujący PHP lub kontakt

0

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>&nbsp;</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++?

0
  1. Tak da sie napisac strone w c++ patrz CGI (ale tzreba miec odpowiednie uprawnienia na serw.

  2. mozna doimstalowac PHP do twojej aplikacji i wyluskiwac kod PHP

  3. mozna napisac samemu obsluge PHP (raczej malo praktyczne)

  4. Mozna uzyc gotowac np. WAMP i jeszcze bardziej go okroic

  5. Mozna napisac plugin do PHP w c++

Do podlewania ogrodu ... to powinno byc niezawodne bo jak sie zawiesi na wlaczone a ty bedziesz 1000km od domu to ...
Ja bym proponowal jakis stos tcp/ip na mikrokontrolerze (mozna kupic za ok 100zl) + przekaznik do wlaczania zaworu

0

Ok, czyli jak dopisać obsługę PHP do tego kodu?
Proszę o konkretny kod lub linki do stron na których jest to opisane.

0
  1. Trzeba napisac aplikacje potrafiaca odbierac parametr i wypluwac cos na out

np.
http://www.yolinux.com/TUTORIALS/LinuxTutorialC++CGI.html

  1. Watpie czy to opisane. Znajomosc linii komend PHP oraz umiejetnosc ciecia ciagow znakow w c++

  2. napisanie wlasnego parasera dla PHP (z formy pytan - nie dla Ciebie)

  3. Najlepiej opisane. To powinienes zastosowac

  4. Jest trohe na sieci chyba tez nie dla Ciebie (na razie przynajmniej)

Generalnie instalujesz PHP i wywolujesz linie polecen (jak zczytac z lini polecen jest na tym forum) a potem dalej wysylasz to swojim serwerkiem

1 użytkowników online, w tym zalogowanych: 0, gości: 1