php 将值传递给 php shell_exec
php form passing value into php shell_exec
我正在尝试创建一个简单的页面,在 youtube-dl 应用程序的帮助下下载 youtube 视频。
<form action="" method="post">
<input type="submit" name="youtubedl" value="dload YouTube">
<input type="text" name="addr" value="">
</form>
PHP 部分如下所示:
<?php
echo "<pre>";
$link = escapeshellarg($_GET["addr"]);
if(isset($_POST['youtubedl']))
{
$output=shell_exec("/usr/local/bin/youtube-dl $link");
echo $link;
echo $output;
}
?>
我认为我的变量没有传递到 PHP,因为 echo $link 没有产生任何输出。
error.log returns ERROR: u'' is not a valid URL
您正在 $_GET
中寻找 addr
,而它会在 $_POST
中,因为您使用 method="post"
.
@Jonas Äppelgran 说的,我要补充一点,
我会更好地检查 link,所以不要这样测试它:
$link = escapeshellarg($_GET["addr"]);
if(isset($_POST['youtubedl']))
{
...
我会这样检查:
if(isset($_POST['youtubedl']) && !empty($_POST['addr'])){
$link = escapeshellarg($_POST["addr"]);
...
按照您目前的方式,当页面在发布表单之外加载时,您可能会得到一个未定义的索引 addr
。因为,你在条件之前评估它。即使您只是将它移到 if 内部,如何阻止表单提交空地址。
我正在尝试创建一个简单的页面,在 youtube-dl 应用程序的帮助下下载 youtube 视频。
<form action="" method="post">
<input type="submit" name="youtubedl" value="dload YouTube">
<input type="text" name="addr" value="">
</form>
PHP 部分如下所示:
<?php
echo "<pre>";
$link = escapeshellarg($_GET["addr"]);
if(isset($_POST['youtubedl']))
{
$output=shell_exec("/usr/local/bin/youtube-dl $link");
echo $link;
echo $output;
}
?>
我认为我的变量没有传递到 PHP,因为 echo $link 没有产生任何输出。
error.log returns ERROR: u'' is not a valid URL
您正在 $_GET
中寻找 addr
,而它会在 $_POST
中,因为您使用 method="post"
.
@Jonas Äppelgran 说的,我要补充一点,
我会更好地检查 link,所以不要这样测试它:
$link = escapeshellarg($_GET["addr"]);
if(isset($_POST['youtubedl']))
{
...
我会这样检查:
if(isset($_POST['youtubedl']) && !empty($_POST['addr'])){
$link = escapeshellarg($_POST["addr"]);
...
按照您目前的方式,当页面在发布表单之外加载时,您可能会得到一个未定义的索引 addr
。因为,你在条件之前评估它。即使您只是将它移到 if 内部,如何阻止表单提交空地址。