Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
shell_exec中使用的PHP变量提供不同的结果_Php_Html_Post_Shell Exec - Fatal编程技术网

shell_exec中使用的PHP变量提供不同的结果

shell_exec中使用的PHP变量提供不同的结果,php,html,post,shell-exec,Php,Html,Post,Shell Exec,这是一个转发,因为我之前的问题不够清楚,所以删除了它以防止进一步混淆 我有一个接受一个参数的shell脚本。它使用参数对网站进行卷曲,然后使用grep、head和${variable#*>}从网站中提取一些数据 在终端中,使用下面的命令,一切都很好$stockCode作为参数/priceAlert.sh$stockCode 我试着在本地主机上把它做成一个工作网页。(MAMP osx)我尝试了不同的解决方案,但除了shell脚本外,该网站总是会抛出“不来自同一来源” 在搜索如何将shell脚本与w

这是一个转发,因为我之前的问题不够清楚,所以删除了它以防止进一步混淆

我有一个接受一个参数的shell脚本。它使用参数对网站进行卷曲,然后使用grep、head和${variable#*>}从网站中提取一些数据

在终端中,使用下面的命令,一切都很好$stockCode作为参数/priceAlert.sh$stockCode

我试着在本地主机上把它做成一个工作网页。(MAMP osx)我尝试了不同的解决方案,但除了shell脚本外,该网站总是会抛出“不来自同一来源”

在搜索如何将shell脚本与web集成之后,我遇到了PHP,现在我正在研究如何让PHP与我的shell脚本对话

我的项目结构:

  • 表单中包含输入的HTML页面

    <form action="priceAlert.php" method="post">
        <input type="text" name="stockCode"></input>
        <input type="submit" name="submit" value="Submit me!">
    </form>
    
    
    
  • 通过POST从HTML页面接收输入的PHP页面

    $stockCode2 = $_POST['stockCode'];
    echo $stockCode2;
    $output = shell_exec('sh priceAlert2.sh ' . $stockCode2);
    echo "<pre>$output</pre>";
    
    $stockCode2=$\u POST['stockCode'];
    echo$stockCode2;
    $output=shell_exec('sh priceAlert2.sh'.$stockCode2);
    回显“$output”;
    
  • 现在有趣的部分。。。 HTML表单中$stockCode2的值为033360

    如果我使用$stockCode2作为帖子,shell脚本将提取我不想要的网站部分。(上面的代码提取我不想要的部分)

    如果我将值033360硬编码到$stockCode2中,shell脚本将提取我想要的部分。下面的代码提取了我想要的网站部分

    $stockCode2='033360';
    $output=shell_exec('sh priceAlert2.sh'.$stockCode2);
    回显“$output”;
    
    如果我回显所有内容,它们都显示值033360,但行为不同

    有办法解决这个问题吗?这可能是目标站点防止刮擦的一种方法吗


    谢谢。

    您应该在传递的shell参数上使用,以防止命令注入。您是这样使用的吗$输出=shell_exec('sh priceAlert2.sh'.escapeshellarg($stockCode2));不幸的是,这不起作用:(这是一个一般性的建议,不是针对你的问题。我明白了,不过谢谢你。。。
        $stockCode2 = '033360';
        $output = shell_exec('sh priceAlert2.sh ' . $stockCode2);
        echo "<pre>$output</pre>";