Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.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
无法通过AJAX调用将参数作为PHP脚本中命令的一部分传递_Php_Jquery_Ajax_Phpseclib - Fatal编程技术网

无法通过AJAX调用将参数作为PHP脚本中命令的一部分传递

无法通过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 )

我尝试将开始时间和结束时间值从前端屏幕传递到PHP脚本,并尝试使用AJAX调用运行一个包含已传递的开始时间和结束时间值的命令

我能够在屏幕上回显开始/结束时间,但当我在$ssh->exec()中作为命令的一部分传递它时;我不能运行它。您是否有任何关于为什么我不能作为命令的一部分通过的信息

 $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");