The.Anti.9
The.Anti.9

Reputation: 44678

How to pass GET and POST data to the php executable?

I am writing a web server in C# and I'm trying to add support for PHP. I have it mostly working, except I don't know how to past GET and POST data to the PHP executable when i pass the file to it. I've been testing with GET since I haven't gotten to getting POST requests handled on the server, and I have the string of the arguments that gets passed separated, but I don't know how to feed the information to the php parser. Some tips would be appreciated.

Upvotes: 6

Views: 3811

Answers (5)

Vin-G
Vin-G

Reputation: 4950

For GET: The Easy Way (That i've found):

php-cgi.exe <script-file-name> <parameter1>=<value1> <parameter2>=<value2> [...] <parameterN>=<valueN>

The Harder Way (via php-cgi and windows cli) would be:

SET "QUERY_STRING=<parameter1>=<value1>&<parameter2>=<value2>&[...]&<paramterN>=<valueN>"
SET SCRIPT_NAME=<script-file-name>
SET REQUEST_METHOD=GET
SET REDIRECT_STATUS=0
php-cgi.exe

I'd assume there would be a way to set environment variable via C#/.Net. The environment variables would have to be unset after php-cgi.exe completes.

More info for CGI environment variables you could set (and CGI in general) at http://www.ietf.org/rfc/rfc3875.txt. Might also be of use would be PHP's $_SERVER variable documentation. Security considerations for running PHP as CGI also in PHP documentation at php.net.

Upvotes: 6

stronger
stronger

Reputation:

There is explanation in here http://stevedev.co.cc/php-curl-method-get-and-post/

Upvotes: 0

Jason
Jason

Reputation: 452

Have you considered piping the GET/POST data as STDIN to the PHP executable? i.e.

system("echo ".GETOrPOSTData." > foobar.php");

Upvotes: -1

John Feminella
John Feminella

Reputation: 311526

If you're in bash or a similar shell, try this: QUERY_STRING="fruitKind=apple&basketId=1000" php -q foo.php.

Upvotes: 1

Greg Hewgill
Greg Hewgill

Reputation: 993323

Are you familiar with CGI? This is normally how web servers will execute arbitrary external programs.

There are certainly more modern alternatives to CGI, but (almost) every web server and external program today will support CGI.

Upvotes: 1

Related Questions