将Python值返回给PHP且不显示它
目前我正在通过PHP执行Python脚本,代码如下:
<?php
$output = shell_exec('python ../cgi-bin/admin_login.py');
echo $output;
?>
这个方法运行得很好。它会显示脚本中所有print()
调用的输出。
但是,我想知道如何将一个值返回给PHP,而不是让它显示在页面上?显然,我可以删除那个echo调用,但Python的return似乎没有任何作用。
这个Python脚本是用来处理登录过程的,负责所有的MySQL操作;我对PHP了解不多,所以才选择用Python来做这个。
运行脚本后,会根据登录是否成功生成一个结果。
例如:LOGGEDIN, EMPTYUSR, EMPTYPW, WRONGPW。
这些都是用来表示发生了什么错误(或者成功)的代码,PHP可以根据这些代码进行后续处理。
比如,如果返回的LOGGEDIN = True,PHP就应该创建一个会话,这样网站的其他部分就知道用户已经登录了。
所以我想要的解决方案是,从PHP运行这个Python脚本,并获取这些返回值,而不在页面上显示它们。
非常感谢任何建议,
Ilmiont
1 个回答
0
不要使用 shell_exec()
,而是用 exec()
,然后根据返回的代码来决定接下来要做什么。
<?php
exec('python ../cgi-bin/admin_login.py', $output, $code);
switch($code) {
case 0:
echo $output;
break;
// other case may follow
}
?>
警告 exec()
只会捕获标准输出(stdout),而不会捕获错误输出(stderr)。
如果你需要获取完整的输出,可以使用:
exec('python ../cgi-bin/admin_login.py 2>&1', $output, $code);