1

PHP内で関数を呼び出すためにAJAXを使用しています。それは私のデータをうまく返しますが、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()またはのようなもの)を実行できるようにしますrebootServer()$_REQUEST['function']
  • SQL インジェクションを利用して、ユーザーがデータベースに変更を加えたり、機密情報を読み取ったりできるようにします。
于 2012-08-22T15:19:10.197 に答える
0

tophat.php にデバッグ コードが残っていると思われます。インクルードの直後に die() を配置して、新しい responseText が関数名のみを保持しているかどうかを確認してください。

そうは言っても、私はSteffenの答えに同意し、支持します-次のような構文

$_REQUEST['function']();

災害が待っているようです。そうでなくても、そうであるように見えますが、とにかく悪いです。

于 2012-08-22T15:25:37.777 に答える