一家公司正在向我的网站发送信息,他们希望将其发送到CGI文件,如下所示:
mysite.com/cgi-bin/process.cgi?custid=ab123&amount=12345
我必须将参数数据写入PHP db,并且我更喜欢使用MySql (因为我不知道cgi)。如何将url参数传递给我的php脚本?另外,如果我重定向到一个php文件,发送者会知道我在这么做吗?难道我不能直接从cgi脚本中“调用”php文件吗?
发布于 2013-01-09 07:29:03
要将PHP脚本作为CGI运行,您需要了解以下内容
应将manually.发送给
所以你的process.cgi看起来像这样,
#!/usr/bin/env php-cli
<?php
// populating $_GET
$_GET=parse_str(getenv('QUERY_STRING'));
$custid=$_GET['custid'];
$amount = $_GET['amount'];
// do work
echo "Content-type: text/html\r\n";
echo "Connection: Close\r\n\r\n";
// start output here.
?>发布于 2017-05-01 01:05:01
在PHP7.2.0 (http://php.net/manual/en/function.parse-str.php)中,不推荐使用不带第二个参数的parse_str来存储解析结果。该函数现在不返回值。您可以从$_SERVER['QUERY_STRING']中提取查询字符串,这样parse_str调用就变成了parse_str($_SERVER['QUERY_STRING'], $destination),如下所示:
<?php
$DEBUG = true;
if ($DEBUG) echo "<p>PHP: good to go</p>";
if ($DEBUG) echo $_SERVER['QUERY_STRING'];
parse_str($_SERVER['QUERY_STRING'], $_GET);
if (empty($_GET)) {
if ($DEBUG) echo "<p>Not picking up the GET.</p>";
exit;
}
if ($DEBUG) echo "<p>Got a GET.</p>";
if ($DEBUG) print_r($_GET);
?>发布于 2013-01-09 07:18:38
您可以编写一个普通的PHP脚本来处理它们传递的数据(使用$_GET变量),并设置一个.htaccess重定向来掩盖它不是由实际的CGI脚本处理的事实。
只需将其放在站点根目录下的.htaccess文件中,与PHP脚本(在本例中称为"process.php“)一起。
RewriteRule ^cgi-bin/process.cgi$ process.php [L]您可以通过CGI脚本运行PHP脚本,但这只会增加复杂性。保持简单。
https://stackoverflow.com/questions/14225543
复制相似问题