0

PHPが変数名を知らなくても、PHPで「パススルー」で呼び出されたPythonスクリプトにHTMLフォーム変数(POST)を直接渡す方法はありますか?

PHP は HTTP POST リクエストを Python に渡して、cgiPython のモジュールが「Web から」渡されたように読み取ることができますか?

基本的なセットアップ: Joomla CMS と jumi モジュール。
注意!RedHat 5.9 上の Python 2.4、PHP 5.3.3 - 標準パッケージのみ。

jumi アプリケーションの 1 つは、フォームを作成し、POST 変数も処理する Python スクリプトです。

理由: 当店にはより多くの 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これらの変数を処理するために使用します。

これは必ず機能しますが、追加の変数が両方のスクリプトに認識されている必要があることも意味します。

Framework/cgi/mod_python/. ..?

フォーム変数を処理する Python:

import cgi
form = cgi.FieldStorage()
var1 = form.getvalue("myVar1", "nothing")
var2 = form.getvalue("myVar2", "nothing")
4

2 に答える 2

0

入手した情報をどのように使用したかを説明するために、私自身の質問に答えます。

また、私はpython 2.4と(おそらく制限されていない)simplejsonを使用することで制限されていることを追加する必要があります-このプロジェクトではRedHat 5.9を使用しているため-提供されたパッケージを維持したい/維持する必要があります。だから私は web --> Joomla --> jumi --> php --> python --> backend を持っています...

Kaivosukeltaja からの回答とコメントに基づいて構築し、PHP で Python スクリプトを実行し、2 つと http://pymotw.com/2/json/ の間でデータを交換するサポート記事

jumi アプリケーション / php-script で、HTTP POST をサポートする Python スクリプトに JSON オブジェクトとして送信できるようにするために、(とりわけ) 以下を追加しました。

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

次に、Python スクリプトでsys.argv変数を読み取り、simplejsonjson オブジェクトを PHP から Python 辞書にマップします (非常に単純化されています)。

import sys
import simplejson as json
myjson = sys.argv[1]
mydict = json.loads(myjson)

目的のキーが見つかるかどうかをテストできます。

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 はそれを認識していませんし、認識している必要もありません。

于 2013-07-10T14:00:57.077 に答える