将Python值返回给PHP,而不是让它显示出来

时间:2014-07-28 07:57:47

标签: php python session login return

目前我正在使用PHP执行Python脚本:

<?php

    $output = shell_exec('python ../cgi-bin/admin_login.py');
    echo $output;

?>

哪个工作正常。它显示脚本中print()次调用的所有数据。

但是我怎样才能真正将值返回给PHP(而不是将其显示为输出)?显然删除了这个echo调用,但Python返回似乎没有做任何事情。

Python脚本用于登录过程并处理所有MySQL的工作;我知道有限的PHP,所以这就是我为此使用Python的原因。

运行脚本后,将生成一个结果,具体取决于登录是否成功..

e.g. LOGGEDIN, EMPTYUSR, EMPTYPW, WRONGPW. PHP的进一步操作错误(或正确)的所有代码。

e.g。如果返回时LOGGEDIN = True,PHP应该创建一个会话,以便站点的其余部分知道用户已登录。

所以我想要的是一个从PHP运行Python并获取这些返回值而不在页面上显示它们的解决方案。

任何建议都非常感谢,
Ilmiont

1 个答案:

答案 0 :(得分: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);