php传递字符串给python,PHP将输入字符串传递给python文件,其中包含空格

本文讨论了在PHP中使用`shell_exec`函数将包含空格的字符串传递给Python脚本时遇到的问题。当PHP变量包含空格,Python会将其解析为多个参数。解决方案是使用引号包裹变量或者使用`escapeshellarg()`函数来确保参数正确传递。示例代码展示了如何修正这个问题,防止因空格导致的参数拆分错误。
摘要由CSDN通过智能技术生成

我正在通过HTML表单获取字符串,并使用以下命令将它们存储在PHP变量中:

$var1=$_GET['name']

现在我使用以下字符串将这些字符串传递给python脚本

shell_exec("python_file.py $var1")

假设,在PHP中收到的字符串就像世界一样.当变量传递给python文件时. Python将其视为两个不同的参数,例如:

##python code

arg=sys.argv

print arg[0] -> python_file.py

print arg[1] -> 'hello'

print arg[2] -> 'world'

有什么解决方法?

我尝试将the脚传递给其他引号.但这无济于事.

我没有在python代码中添加任何split()函数.

编辑:

变量是数据库中的条目. python脚本打开数据库,变量定义相应的更改.因此,如果python文件由于空格而将一个变量读取为2.它将错误的条目添加到数据库的错误列中

解决方法:

通常,您可能需要使用引号:

shell_exec(‘python_file.py“’.$var1.’”’)-最后的引号是简单的引号

您还可以使用escapeshellarg(),它将为外壳程序充分准备参数,按照我说的做,甚至更多,以便引用中的引号也能正确传递.

建议使用此解决方案从用户输入传递参数,这样可以避免灾难,例如escape-shell vulnerabilities.

我试过的

test.py:

import sys

print(sys.argv)

exec.php:

print(shell_exec('python3 test.py '.escapeshellarg($arg))); ?>

在我的壳中:

$php5 exec.php

[‘test.py’, ‘hello world’]

标签:python,php

来源: https://codeday.me/bug/20191025/1931820.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值