有没有一种方法可以让PHP直接将HTML表单变量(POST)传递给PHP中用“passthru”调用的python脚本,而不必知道变量名?在
PHP是否可以将httppost请求传递给python,以便python中的cgi
模块可以像“从web”传递一样读取它?在
基本设置:Joomla CMS,带jumi模块。
注意!Redhat5.9上的Python2.4、PHP5.3.3—仅限标准包。在
jumi应用程序之一是一个python脚本,它创建一个表单,并处理POST变量。在
原因:我们的商店有更多的python知识,python脚本在后台做了很多工作。在
在jumi PHP脚本中,我有:
<?php
$var1 = $_REQUEST['myVar1'];
$var2 = $_REQUEST['myVar2'];
echo passthru('/usr/bin/python /var/www/html/joomla/jumi/portal-ldap.py '.$myVar1.' '.$myVar2);
?>
然后python脚本使用sys.arvg
来处理这些变量。在
它当然可以工作,但也意味着任何附加变量都必须为两个脚本所知。在
PHP有没有一种方法可以将表单变量直接传递给python脚本,以便python中的“cgi”模块可以像我用framework/cgi/mod_python/…运行python脚本一样处理变量。。。?在
Python处理表单变量:
^{pr2}$
我会回答我自己的问题来解释我是如何使用得到的信息的。在
我还必须补充一点,我使用Python2.4和simplejson(可能不受限制)的限制—因为我在这个项目中使用Redhat5.9—并且希望/需要使用提供的包。所以我有了web>;Joomla>;jumi>;php>;python>;后端。。。在
基于Kaivosukeltaja的回答和评论以及支持文章executing Python script in PHP and exchanging data between the two和{a2}
在jumi application/php脚本中,我添加了以下内容(除其他外),以允许httppost作为JSON对象发送到我的支持python脚本。在
然后,在python脚本中,我使用
^{pr2}$sys.argv
读取变量,并使用simplejson
将json对象从PHP映射到python字典(大大简化):我现在可以测试是否可以找到我想要的钥匙:
用户以简单的形式发布到这些变量:
热心的读者会发现,在这些步骤中,大多数都引用了“var1”,而PHP没有意识到,也不必知道。在
如果您确实想通过
cgi.FieldStorage
读取值,那么可以在HTTP服务器上运行python脚本,最好限制其对localhost
的访问。通过HTTP执行调用也比将参数传递给未解析的passthrough()
更安全。在或者,您可以更改python脚本以使用^{} 模块,这样可以更容易地在键值对中定义参数(为简洁起见,省略路径):
如果决定继续使用
passthgough()
,请记住用escapeshellarg()
转义所有参数。在编辑:您还可以
json_encode($_REQUEST)
并将其作为参数传递,然后在Python中json.loads()
将其作为字典获取数组。在相关问题 更多 >
编程相关推荐