gpt4 book ai didi

php - Python 脚本在传递 $_GET 参数时调用 PHP 脚本

转载 作者:可可西里 更新时间:2023-10-31 23:05:25 24 4
gpt4 key购买 nike

我目前在我的 python 脚本中使用 subprocess.call(["php", "test.php"]) 来调用 PHP 脚本。

我想知道是否可以在调用脚本时将 $_GET 参数传递给脚本。如果可能的话,我会怎么做?

这就是我想要得到的:
"subprocess.call(["php", "test.php?i=3"])"


这是我当前的代码:
测试.py

import subprocess
subprocess.call(["php", "test.php"])


测试.php

<?php
echo $_GET['i'];
?>

最佳答案

使用您的 Python 尝试以下操作,传入任意数量的参数。

subprocess.call(["php","-f","test.php","param0:value0", "param1:value1"])

现在在 PHP 中:

<?php
$_GET = array();

foreach($argv as $key => $pair) {
if ($key == 0) { //skip first element which is script name (test.php)
continue;
}

list($key, $value) = explode(":", $pair);
$_GET[$key] = $value;
}

这会为您手动解析 $argv 并填充 $_GET,因此您只需修改 PHP 文件的开头即可。

如果您的键或值与 : 分隔符具有相同的值,则这是一个不完美的解决方案。更好的方法是通过 JSON 字符串传入参数。像这样的东西:

subprocess.call(["php","-f","test.php", json.dumps(your_dictionary)])

在 PHP 中

<?php
if ($argc > 1) {
$json_str = $argv[1];
$_GET = json_decode($json_str);
}

最后,按照 user574632 的建议,您可以使用以下 if 语句包装此代码,以确保它不会干扰您仍然将其作为网络脚本运行。

if (php_sapi_name() == 'cli') {
//execute in here *only* if run from the command-line
}

关于php - Python 脚本在传递 $_GET 参数时调用 PHP 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23900794/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com