是PHP的新手。
我希望有一个特定solaris服务器的下拉列表,其中从下拉列表中选择服务器时,服务器将自行执行脚本。我怎么做到这一点?
<?php
session_start();
echo ("Select a Solaris System to audit");
?>
<form action="report.php" method="POST">
<div>
<select name="options">
<option value="1">Solaris 001</option>
<option value="2">Solaris 002</option>
<option value="3">Solaris 003</option>
</select>
<br>
<br>
<input type="submit" value="Audit"/>
</div>
</form>
非常感谢任何帮助。
答案 0 :(得分:1)
首先,重要的免责声明:)
请注意,后端使用的shell_exec
是相当危险的功能,因为它可能会带来安全威胁。尽可能从用户输入中隔离shell_exec
并应用严格的安全策略
你必须实现两个“工件”:
在每台服务器上,您需要一个执行所需脚本的后端文件。该文件应该可以通过网络访问。让我们说它可以通过URL http://*solarisservername*/justdoit
访问它可能类似于
//Check for authentication, if authenticated set $authenticated = true
if ($authenticated){
$script_response = shell_exec("<script to execute>");
}
//if you need, you may return result to the calling script
//I'm using json format, but you may want to use plain text, XML or whatever.
$result = array("script_response"=>$script_responce,"success"=>true);
echo json_encode($result);
在您的页面上,您需要实现查询我们在上一步中设置的URL。您有两种选择:使用cURL
和使用AJAX
。我将使用AJAX
描述jQuery
方法,因为它更简单,更花哨:)。注意,它是Javascript
<script type='text/javascript'>
$(document).ready(function(){
$("#submit").click(function(){
var url = $("select[name='options']").val();
url = url + "justdoit"; //url now contains http://*solarisservername*/justdoit
$.ajax({
type:post,
dataType: 'json'
url: url,
success: function(data,textStatus){
//process your response here
//access script response as data.script_response.
}
});
});
});
</script>
<!--you dont't need method and action here, as we don't even post the form-->
<form>
<div>
<select name="options">
<option value="http://solarisserver1">Solaris 001</option>
<option value="http://solarisserver2">Solaris 002</option>
<option value="http://solarisserver3">Solaris 003</option>
</select>
<br>
<br>
<!--onclick='return false' prevents form from submitting-->
<input type="submit" id='submit' onclick='return false' value="Audit"/>
</div>
</form>
答案 1 :(得分:0)
将此添加到您的report.php
<?php
if (isset($_POST['options'])){
// you can get value now
$server = $_POST['options'];
echo $server; // will print the current selected value
}