无法通过AJAX调用将参数作为PHP脚本中命令的一部分传递
我尝试将开始时间和结束时间值从前端屏幕传递到PHP脚本,并尝试使用AJAX调用运行一个包含已传递的开始时间和结束时间值的命令 我能够在屏幕上回显开始/结束时间,但当我在$ssh->exec()中作为命令的一部分传递它时;我不能运行它。您是否有任何关于为什么我不能作为命令的一部分通过的信息无法通过AJAX调用将参数作为PHP脚本中命令的一部分传递,php,jquery,ajax,phpseclib,Php,Jquery,Ajax,Phpseclib,我尝试将开始时间和结束时间值从前端屏幕传递到PHP脚本,并尝试使用AJAX调用运行一个包含已传递的开始时间和结束时间值的命令 我能够在屏幕上回显开始/结束时间,但当我在$ssh->exec()中作为命令的一部分传递它时;我不能运行它。您是否有任何关于为什么我不能作为命令的一部分通过的信息 $stime= $_POST['stime']; $etime = $_POST['etime']; echo $stime; // SUCCESS ( 2015-07-27 16:32:23 )
$stime= $_POST['stime'];
$etime = $_POST['etime'];
echo $stime; // SUCCESS ( 2015-07-27 16:32:23 )
echo $ssh->exec('/tpo/umc/bin/monitoring_dump -n r02xy01 -m -t0 $stime -t1 $etime -f line> /tmp/adwant.txt');
AJAX调用:
$(文档).ready(函数(){
原因
您应该使用双引号而不是单引号,因为像“$stime”
这样的变量不会被PHP解释
解决方案
请参阅下面的更正代码:
echo $ssh->exec("/tpo/umc/bin/monitoring_dump -n r02xy01 -m -t0 $stime -t1 $etime -f line> /tmp/adwant.txt");
注释
但是,未经验证就将参数传递给shell是一个很大的安全漏洞,应该避免
您需要验证$stime
和$etime
参数,以确保它们与您期望的格式(2015-07-27 16:32:23
)匹配
例如:
$is_stime_valid=preg_match('/^\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}$/',$stime);
$is_etime_valid=preg_match('/^\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}$/',$etime);
如果($在时间上有效,$在时间上有效){
echo$ssh->exec(“/tpo/umc/bin/monitoring_dump-n r02xy01-m-t0$stime-t1$etime-f line>/tmp/adwant.txt”);
}否则{
#错误:无效参数
}
我没有看到任何ajax@developerwjk更新了queryWell,问题不在于ajax。它的”
vs“
但是如果您允许用户直接将输入发送到shell命令中,那么您需要重新考虑这一点。@developerwjk代码中的双引号错误在哪里?在PHP中,$var'按字面意思输出字符串$var
“$var”
输出$var
的内容
echo $ssh->exec("/tpo/umc/bin/monitoring_dump -n r02xy01 -m -t0 $stime -t1 $etime -f line> /tmp/adwant.txt");