0

我正在使用 delphi 将值发布到 php 文件进行处理。我正在使用TMS 的 TWebPost,以前该模块运行良好,除了用+now 替换所有空格,但是我尝试按照他们的建议将PostContentTypefromctFormURLEncoded更改为。ctMultiPartForm

由于更改,我无法再使用$_POSTPHP 中的函数访问我发布的变量。

有人知道 PHP 文件如何访问变量吗?

4

1 回答 1

1

在 Delphi 中使用 TWebPost 和 php 脚本也有相同的小示例。

这个例子 UwpdemoVersionProgram 我是基于 GitHub 演示示例的 TWebPost 链接演示 Uwpdemo.pas 但是如果您在 GitHub 页面 页面注册以在 GitHub 服务器中注册 GitHub 是许多项目的存储库,开发人员可以将自己的存储库项目并从其他开发人员的 . 注册后,您可以在一个压缩文件中下载许多示例。

unit UwpdemoVersionProgram;
interface
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  WebPost, StdCtrls, ShellApi;

type
  TForm1 = class(TForm)
  WebPost1: TWebPost;
  Button1: TButton;
  procedure Button1Click(Sender: TObject);
 private
    { Private declarations }
  public
    { Public declarations }
   procedure GetVersionProgramFromRemote(var StringReceivedFromRemote:  AnsiString);
  end;
var
  Form1: TForm1;
  implementation
 {$R *.DFM}
 procedure TForm1.GetVersionProgramFromRemote(var StringReceivedFromRemote:  AnsiString);
var
 wpi:twebpostitem;
 Response: TMemoryStream;
 StrResponse: AnsiString ;
 begin
 Response := TMemoryStream.Create;
 webpost1.Server:='your_sever.com';;  //cannot be with http://
 webpost1.Action:='/subdirectory/GetVersionProgram_Post.php'; //  script php  with it will be cooperating program from Delphi
  webpost1.items.Clear;
 with webpost1.items do
  begin
   wpi:=add;
   wpi.name:='Name_program';
   wpi.value:= 'AWARD_SECRETARY.exe';
    //if you want obtain more data , repeat this there above lines with another's parameters
  end;
 if webpost1.execute then
  begin
   webpost1.savetofile('results.txt');
   Response:= TMemoryStream(webpost1.PostResult);
   StrResponse:=AnsiString( Response);
   StringReceivedFromRemote:=StrResponse;
   end;

procedure TForm1.Button1Click(Sender: TObject);
 var StringReceivedFromRemote: AnsiString;
  begin
   GetVersionProgramFromRemote(StringReceivedFromRemote);
  end;
----------------------------------------------------------------
 Php script GetVersionProgram_Post.php is as follow
<?PHP
include ('info.php');
 $link = mysql_connect($db_server, $db_username, $db_password);
 if (!$link) {
    die('Cannot conect : ' . mysql_error());
 }
 echo 'Connect was do '.chr(13)  ;
 mysql_select_db($db_database);
$Name_program=$_POST['Name_program'];   //this work work with  TWebPost - but value must be present not in a URL
                                                                            // but only in a webpost1.items  as this wpi.value:= 'AWARD_SECRETARY.exe';
 $result = mysql_query("SELECT *  FROM ACTUAL_PROGRAM_VERSION WHERE NAME_PROGRAM = '$Name_program' ");
 if (!$result) {
    echo 'Cannot run query : ' . mysql_error();
   exit;
 }
$row = mysql_fetch_row($result);
echo $row[0].chr(13)   ; // NAME_PROGRAM
echo $row[1].chr(13)   ; // ACTUAL_VERSION
echo $row[2].chr(13)   ; // CREATION_DATE
echo $row[3].chr(13)   ; // ID_PROGRAM
mysql_close($link);
?>

MYSQL 中的结构是:

   NAME_PROGRAM    varchar(32)
   ACTUAL_VERSION  varchar(32)
   CREATION_DATE   varchar(12)
   ID_PROGRAM      int(11) 
于 2016-03-06T17:28:23.527 回答