如何在变量中存储selectchange onchange并将其作为参数传递到单个php页面中

时间:2016-08-31 08:35:10

标签: php html mysql

我在php页面中有一个特定的要求。我正在运行2个查询,它从我的mysql DB中获取shell脚本名称。 第一个查询:在下拉列表中执行并提供输出,工作正常。 第二个查询:如果从下拉列表中选择任何选项,则该值应作为输入参数传递给我的第二个shell脚本。这是我无法实现的。 请指导我。

以下是我的php页面代码:

<?php
include('db.php');

function connect_db (){
    mysql_connect('localhost', 'root', '') or die('Could not connect to database' . mysql_error());
    mysql_select_db('dashboard');
}



function close(){
    mysql_close();
}



function query1(){
    connect_db ();
    $sql = mysql_query("SELECT * FROM webpage WHERE page = 'display_peer_info.php' ");
    $record = mysql_fetch_assoc($sql);
    $script = $record['arg1_script'];

    $conn = ssh2_connect('$server_ip',$port);
    ssh2_auth_password($conn, '$user', '$pass');
    //Executing 1st shell script on remote server and saving output in a variable
    $script_output = ssh2_exec($conn, "/home/$user/bin/webscript/$script");

    stream_set_blocking($script_output, true);
    while($line = fgets($script_output)) {
        flush();
        echo '<option value='.$line.'>'. $line . '</option>';
    }

}

function query2(){
    connect_db ();
    $sql1 = mysql_query("SELECT * FROM webpage WHERE page = 'display_peer_info.php' ");
    $record1 = mysql_fetch_assoc($sql1);
    $script1 = $record1['page_script'];

    $conn = ssh2_connect('$server_ip',$port);
    ssh2_auth_password($conn, '$user', '$pass');

    //Getting value from dropdown list
    $dropdown_value = $_POST['arg1'];
    // Executing 2nd shell script on same remote server with Argument selected from dropdown list 
    $script_output1 = ssh2_exec($conn, "/home/oaa/bin/webscript/$script1 \"$dropdown_value\"  " );
    echo  $script_output1;
}
?>


<!DOCTYPE>
<html>
<head>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" />
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
</head>
<body>

<div class="webpage">
    <select  id="arg1">
        <?php    query1();?>
    </select>
    <?php close(); ?>

</div><br />
<div id="output">
    <? php query2(); ?>
</div>
</body>
</html>

请提出一些逻辑/解决方法,以便从我的第二个查询功能中获取输出。

1 个答案:

答案 0 :(得分:0)

首先是

绝对不应该使用mysql_query或任何旧ext/mysql功能。这些函数已被弃用多年,已从PHP 7中删除。

如果您在过去的4年中只使用了一个look at the PHP manual快速执行任何这些功能,那么您会在每个页面顶部看到这个大红色警告,看起来像这样。

  

警告此扩展在PHP 5.5.0中已弃用,并已在PHP 7.0.0中删除。相反,应使用MySQLiPDO_MySQL扩展名。有关详细信息,另请参阅MySQL: choosing an API指南和related FAQ。该功能的替代方案包括:

     

上述代码的问题非常广泛。既然你还没有清楚地描述你想要解决的具体问题,我通常只会解决那些突出的问题。

  1. 您的shell中的参数(例如$dropdown_value)可能需要转义(see escapeshellarg
  2. ssh2_exec返回流资源,而不是字符串(read the manual on how to use it
  3. 函数应返回值,而不是直接打印到输出
  4. 您最关键的问题可能是使用shell2_exec。你清楚地假设它返回一个字符串,实际上它返回一个流资源。您需要使用fread之类的内容来读取此流资源。

    $stream =  ssh2_exec($conn, "/home/oaa/bin/webscript/$script1 \"$dropdown_value\"  " );
    $buffer = "";
    while($data = fread($stream, 8192)) {
        $buffer .= $data;
    }
    fclose($stream);
    echo $buffer; // this will be a string
    

    由于您从未解释shell脚本的预期输出应该是什么格式,因此不清楚如何帮助您从此处进一步处理该输出到您的HTML。