来自PHP的PERL参数提交/发布

时间:2012-11-15 22:43:34

标签: php perl apache

  

可能重复:
  HTML form POST to a python script?

所以我有一个使用命令行参数的perl脚本,例如:

./ gen_cards_md5.pl --num_cards = 1000 --num_seeds = 10

我正在尝试构建一个php网页来调用上面的脚本并将其传递给表单上的params输入并提交,这大致是我所拥有的:

echo <<<_END
<html>
    <head>
        <title>Generate Card Numbers Test</title>
    </head>
    <body>
    Number of Cards: $num_cards<br />
    Number of Seeds: $num_seeds<br />
    <form method="post" action="gen_cards_md5.pl">
        Enter number of Cards to generate: <input type="text" name="num_cards" /> <br />
        Enter Number of Seeds: <input type="text" name="num_seeds" /> <br />
        <input type="submit" name="params" value="params"/>
    </form>
    </body>
</html>
_END;

所以你可能猜到我要去哪里,php正在调用perl,但是它没有传递命令行参数。有没有一种简单的方法可以看到什么(如果有什么东西被传递),或者是否有人能够理解我是如何“格式化”帖子以使其进入Perl脚本的?注意,我只是在学习Python,而且我甚至不熟悉php和perl,所以我真的很想知道如何查看正在发生的事情并能够回答我自己的问题,但是为了时间的关系,我只需要使用这个大的honkin'perl脚本并让它从输入到HTML页面运行。既然我已经说过了,我在想我甚至需要把它变成一个.php?我不是直接将HTML转换为Perl而使事情变得更复杂吗?我离题了,重申;给定一个接受命令行参数的工作perl脚本,如何通过Web界面传递它在命令行中期望的参数? TIA! JP

1 个答案:

答案 0 :(得分:1)

<form method="post" action="somephpfile.php">

if (count($_POST) > 0){
     $num_cards = (isset($_POST['num_cards'])) ? (int)$_POST['num_cards'] : false;
     $num_seeds = (isset($_POST['num_seeds'])) ? (int)$_POST['num_seeds'] : false;
     if($num_cards !== false && $num_seeds !== false){
        exec("./gen_cards_md5.pl --num_cards={$num_cards} --num_seeds={$num_seeds}", $outputArray);
     }else{
         die('Number of cards or number of seeds not provided.');
     }
}