我有一个web界面,它可以帮助我使用shell中的命令创建配置文件,但实际上我的代码中有一些错误,因为我在web界面中输入的值在shell srcipt中无法识别,这是我的源代码:
index.php:
<div class="inputbox">
<form id="createProfile" name="createProfile">
<label for="channelName">Group Name</label>
<br/>
<input type="text" id="groupName" name="groupName" />
<br/>
<label for="profileName">Profile Name</label>
<br/>
<input type="text" id="profileName" name="profileName" />
<input type="button" value="Create Profile" onclick="createUser()" />
</form>
</div>script.js
function createUser(){
if ($('#groupName').val() != '' && $('#profileName').val() != ''){
$.ajax({
type:'post',
url: 'addProfile.php',
data:{group_name:$('#groupName').val()+'/'+$('#profileName').val()},
cache:false,
success: function(returndata){
$('#profilesList').append('<option value="'+ $('#groupName').val()+'/'+$('#profileName').val() +'">' + $('#groupName').val()+'/'+$('#profileName').val() + '</option>');
alert('profile added');
}
});
}
else{
alert('you must enter both group name and profile name');
}
}addprofile.php
<?php
$var='.$_POST['group_name'].';
$output1=shell_exec('/etc/init.d/nfsen --add-profile $var expire=0 maxsize=0 shadow=1');
echo "<pre>$output1</pre>";
?>你能告诉我我的代码出了什么问题吗?
发布于 2015-06-09 20:36:38
在PHP代码中,您使用'来分隔字符串。如果您希望将$var扩展为它的值,则必须使用"作为字符串分隔符,或者终止字符串并像这样连接它:'string start '.$var.' string end'。
此外,如果此应用程序是公开的,请非常小心这里的安全性。提交一个可以执行任何外壳命令的group_name是非常容易的。
编辑:正如@Tool在您的问题注释中指出的那样,出于同样的原因,$var=行也需要进行调整。
https://stackoverflow.com/questions/30732156
复制相似问题