PHP是比較流行的腳本語(yǔ)言,WEB開(kāi)發(fā)使用廣泛,如何在C++程序中不依賴(lài)任何WEB
創(chuàng)新互聯(lián)建站專(zhuān)注于楊浦企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站建設(shè),電子商務(wù)商城網(wǎng)站建設(shè)。楊浦網(wǎng)站建設(shè)公司,為楊浦等地區(qū)提供建站服務(wù)。全流程定制網(wǎng)站制作,專(zhuān)業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)建站專(zhuān)業(yè)和態(tài)度為您提供的服務(wù)
SERVER調(diào)用PHP,并取得執(zhí)行結(jié)果完成交互。
PHP安裝好后,在目錄下有一個(gè)php-cgi.exe,我們只要執(zhí)行這個(gè)CGI程序,并將數(shù)據(jù)通過(guò)命名管道傳遞給它,然后把執(zhí)行結(jié)果通過(guò)命名管道讀取出來(lái)即可,過(guò)程并不復(fù)雜!請(qǐng)看如下代碼:
命名管道的創(chuàng)建:
SECURITY_ATTRIBUTES
sa
=
{sizeof(SECURITY_ATTRIBUTES)};
sa.bInheritHandle
=
1;
sa.lpSecurityDescriptor
=
NULL;
HANDLE
hStdoutR,
hStdoutW,
hStdinR,
hStdinW;
CreatePipe(hStdoutR,
hStdoutW,
sa,
0);
SetHandleInformation(hStdoutR,HANDLE_FLAG_INHERIT,
0);
CreatePipe(hStdinR,
hStdinW,
sa,
0);
SetHandleInformation(hStdinW,
HANDLE_FLAG_INHERIT,
0);
啟動(dòng)php-cgi進(jìn)程:
STARTUPINFO
si
=
{sizeof(STARTUPINFO)};
PROCESS_INFORMATION
pi;
si.dwFlags
=
STARTF_USESTDHANDLES;
si.hStdOutput
=
hStdoutW;
si.hStdInput
=
hStdinR;
char
env[255]
=
"REQUEST_METHOD=POST\0CONTENT_LENGTH=18\0CONTENT_TYPE=
application/x-www-form-urlencoded\0SCRIPT_FILENAME=D:\\test.php";
if(!CreateProcess(NULL,
"d:\\php5\\php-cgi.exe
D:\\test.php",
NULL,
NULL,
1,
NORMAL_PRIORITY_CLASS,
env,
NULL,
si,
pi))
return
0;
CloseHandle(hStdoutW);
CloseHandle(hStdinR);
傳遞數(shù)據(jù):if(!WriteFile(hStdinW,
"var=Hello
VCKBASE!",
18,
dwWritten,
NULL))
return
0;
CloseHandle(hStdinW);
讀取返回?cái)?shù)據(jù):char
buf[1000]
=
{0};
DWORD
dwRead
=
0;
while(ReadFile(hStdoutR,
buf,
sizeof(buf),
dwRead,
NULL)
dwRead
!=
0){
printf(buf);
}
CloseHandle(hStdoutR);
D盤(pán)的test.php
?
echo
$_REQUEST["var"];
?
執(zhí)行結(jié)果:
X-Powered-By:
PHP/5.3.1
Content-type:
text/html
Hello
VCKBASE!
實(shí)際上,C++調(diào)用其他CGI程序,例如PERL,方法也大同小異,如果你打算做一個(gè)自己的WEB服務(wù)器,調(diào)用CGI程序是少不了的。
你這樣做簡(jiǎn)直就是浪費(fèi)了PHP 。
PHP 是做后端的不是做前端的。前端用 html。
如果不是效率要求特別高,是用不上C 的。
而且PHP 的效率已經(jīng)非常高了。
PHP(外文名:PHP: Hypertext Preprocessor,中文名:逗超文本預(yù)處理器地)是一種通用開(kāi)源腳本語(yǔ)言。語(yǔ)法吸收了C語(yǔ)言、Java和Perl的特點(diǎn),利于學(xué)習(xí),使用廣泛,主要適用于Web開(kāi)發(fā)領(lǐng)域。PHP 獨(dú)特的語(yǔ)法混合了C、Java、Perl以及PHP自創(chuàng)的語(yǔ)法。它可以比CGI或者Perl更快速地執(zhí)行動(dòng)態(tài)網(wǎng)頁(yè)。用PHP做出的動(dòng)態(tài)頁(yè)面與其他的編程語(yǔ)言相比,PHP是將程序嵌入到HTML(標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言下的一個(gè)應(yīng)用)文檔中去執(zhí)行,執(zhí)行效率比完全生成HTML標(biāo)記的CGI要高許多;PHP還可以執(zhí)行編譯后代碼,編譯可以達(dá)到加密和優(yōu)化代碼運(yùn)行,使代碼運(yùn)行更快。
例如:PHP連接一個(gè)mysql數(shù)據(jù)庫(kù)操作的演示,
實(shí)現(xiàn)連接打開(kāi)一個(gè)庫(kù),并讀取數(shù)據(jù)的基本功能。
數(shù)據(jù)庫(kù)名稱(chēng)為:test 表名為:user
分別有7個(gè)字段:id userid sex age tel email address
服務(wù)器;數(shù)據(jù)庫(kù)編碼 均采用 utf-8
mysql_query("set names 'gbk'"); // //這就是指定數(shù)據(jù)庫(kù)字符集,一般放在連接數(shù)據(jù)庫(kù)后(解決數(shù)據(jù)庫(kù)亂碼)
*/
?
HTML
HEAD
META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0"
style type="text/css"
!--
input { font-size:9pt;}
A:link {text-decoration: underline; font-size:9pt;color:000059}
A:visited {text-decoration: underline; font-size:9pt;color:000059}
A:active {text-decoration: none; font-size:9pt}
A:hover {text-decoration:underline;color:red}
body,table {font-size: 9pt}
tr,td{font-size:9pt}
--
/style
title注冊(cè)會(huì)員列表 - 讀取mysql的測(cè)試/title
/HEAD
body alink="#FF0000" link="#000099" vlink="#CC6600" topmargin="8" leftmargin="0" bgColor="#FFFFFF"
brbrcenterfont color=green size=3b注 冊(cè) 會(huì) 員 列 表/b/font/center
br
table cellspacing=0 bordercolordark=#FFFFFF width="95%" bordercolorlight=#000000 border=1 align="center" cellpadding="2"
tr bgcolor="#6b8ba8" style="color:FFFFFF"
td width="5%" align="center" valign="bottom" height="19"ID/td
td width="10%" align="center" valign="bottom"姓名/td
td width="5%" align="center" valign="bottom"性別/td
td width="5%" align="center" valign="bottom"年齡/td
td width="20%" align="center" valign="bottom"聯(lián)系電話(huà)/td
td width="20%" align="center" valign="bottom"電子郵件/td
td width="20%" align="center" valign="bottom"家庭住址/td
/tr
?
//連接到本地mysql數(shù)據(jù)庫(kù)
$myconn=mysql_connect("localhost","root","root");
//選擇test為操作庫(kù)
mysql_query("set names 'gbk'"); // //這就是指定數(shù)據(jù)庫(kù)字符集,一般放在連接數(shù)據(jù)庫(kù)后面就系了
mysql_select_db("test",$myconn);
$strSql="select * from user";
//用mysql_query函數(shù)從user表里讀取數(shù)據(jù)
$result=mysql_query($strSql,$myconn);
while($row=mysql_fetch_array($result))//通過(guò)循環(huán)讀取數(shù)據(jù)內(nèi)容
{
?
tr
td align="center" height="19"?echo $row["id"]?/td
td align="center"?echo $row["userid"]?/td
td align="center"?echo $row["sex"]?/td
td align="center"?echo $row["age"]?/td
td align="center"?echo $row["tel"]?/td
td align="center"?echo $row["email"]?/td
td align="center"?echo $row["address"]?/td
/tr
?
}
//關(guān)閉對(duì)數(shù)據(jù)庫(kù)的連接
mysql_close($myconn);
?
/table
/BODY
/HTML