将表单变量从PHP传递到Python(Joomla中的jumi内部)

2024-09-27 07:21:58 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有一种方法可以让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}$

Tags: 模块方法脚本web表单requesthtmlpost
2条回答

我会回答我自己的问题来解释我是如何使用得到的信息的。在

我还必须补充一点,我使用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脚本。在

echo passthru('/usr/bin/python /var/www/html/joomla/jumi/ldap-script.py '. escapeshellarg(json_encode($_POST)))

然后,在python脚本中,我使用sys.argv读取变量,并使用simplejson将json对象从PHP映射到python字典(大大简化):

^{pr2}$

我现在可以测试是否可以找到我想要的钥匙:

if ( 'var1' in mydict):
    print mydict['var1']

用户以简单的形式发布到这些变量:

<form name="INPUT" action="" method="POST">
    MyVar1 <input type="number" name="var1">
    <input type=SUBMIT" value="Submit">
</form>

热心的读者会发现,在这些步骤中,大多数都引用了“var1”,而PHP没有意识到,也不必知道。在

如果您确实想通过cgi.FieldStorage读取值,那么可以在HTTP服务器上运行python脚本,最好限制其对localhost的访问。通过HTTP执行调用也比将参数传递给未解析的passthrough()更安全。在

或者,您可以更改python脚本以使用^{}模块,这样可以更容易地在键值对中定义参数(为简洁起见,省略路径):

python portal-ldap.py  myvar1 nothing  myvar2 nothing

如果决定继续使用passthgough(),请记住用escapeshellarg()转义所有参数。在

编辑:您还可以json_encode($_REQUEST)并将其作为参数传递,然后在Python中json.loads()将其作为字典获取数组。在

相关问题 更多 >

    热门问题