Delphi Post Values ​​в php файл, но не может получить доступ к значениям из файлов PHP

Я использую Delphi для публикации значений в файл php для обработки. Я использую TWebPost от TMS, и ранее модуль работал отлично, за исключением замены всех пробелов на + Однако теперь я попытался изменить PostContentType от ctFormURLEncoded в ctMultiPartForm как они и рекомендовали.

После изменения я больше не могу получить доступ к переменным, которые я публикую, используя $_POST функция в PHP.

У кого-нибудь есть идея о том, как PHP-файл может получить доступ к переменным?

1 ответ

Есть такой же небольшой пример использования TWebPost и php-скрипта в Delphi.

Этот пример UwpdemoVersionProgram, который я делал, основан на демонстрационном примере GitHub для демонстрационной ссылки TWebPost для Uwpdemo.pas. Но лучше будет, если вы зарегистрируетесь на странице GitHub для регистрации на сервере GitHub GitHub - это хранилище для многих проектов, куда разработчик может поместить свой собственный проект и получить доступ ко многим проектам от других разработчиков. После регистрации вы можете скачать множество примеров в одном zip-файле.

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) 
Другие вопросы по тегам