1

我正在使用 AJAX 在 PHP 中调用函数。它可以很好地返回我的数据,但是它一直将函数名称放在 returnText 的开头。

我的 Javascript/ajax

function getfirst() {
    var myphp=document.getElementById('myphp').value ;
    http=createRequestObject();
    url= tablename + '.php?filename=' + tablename;
    url= url + '&function=movefirst';
    url= url + '&seekindex=CustomerKey';
    url= url + '&maxdata=' + maxdata;
    http.open('GET',url,false);
    http.send(null);
    document.getElementById('myreturn').value;
}

我的 PHP

<?php include '../../tophat.php';

$_REQUEST['function']();

function movefirst(){
    $filename=$_REQUEST['filename'];
    $seekindex=$_REQUEST['seekindex'];
    $maxdata=$_REQUEST['maxdata'];
    opendbdata();
    $query="SELECT * FROM ". $filename . " ORDER BY " . $seekindex; 
    $result=mysql_query($query);
    $returnkey='';
    for ($i=0; $i<=$maxdata-1; $i++)  {
         $returnkey = $returnkey . mysql_result($result,0,$i) . "~";
    }
    echo $returnkey;
}

我正在我的客户数据库中查找第一个客户,它返回记录,但在 returnText 的开头是函数的名称。这是 .returnText 的开头:"movefirst4SEASONS1~4 Seasons Pottery~336 Hammond Dr NE~"

我以前从未遇到过这个问题。在此先感谢您的帮助。

4

2 回答 2

1

请注意,您

  • 允许用户执行此范围内可用的任何功能(类似于dropDatabase()or rebootServer()),因为您正在调用$_REQUEST['function']
  • 允许用户利用SQL 注入对您的数据库进行任何更改或读取机密信息!
于 2012-08-22T15:19:10.197 回答
0

我怀疑tophat.php 中还有一些调试代码。尝试在包含之后放置一个 die() 并查看新的 responseText 是否仅包含函数名称。

也就是说,我同意并赞成 Steffen 的回答——语法如

$_REQUEST['function']();

看起来就像一场等待发生的灾难。即使它不是,它仍然看起来像它,无论如何这很糟糕。

于 2012-08-22T15:25:37.777 回答