3

私は現在、PHP の自動化スクリプトに取り組んでいます (HTML はありません!)。2 つの PHP ファイルがあります。1 つはスクリプトを実行しており、もう 1 つは $_POST データを受け取り、情報を返します。問題は、ある PHP スクリプトから別の PHP スクリプトに POST を送信し、戻り変数を取得して、HTML フォームやリダイレクトなしで最初のスクリプトの作業を続行する方法です。最初のPHPファイルから別のPHPファイルへ、さまざまな条件下でリクエストを数回行い、リクエストに応じてさまざまなタイプのデータを返す必要があります。私はこのようなものを持っています:

<?php // action.php  (first PHP script)
/* 
    doing some stuff
*/
$data = sendPost('get_info');// send POST to getinfo.php with attribute ['get_info'] and return data from another file
$mysqli->query("INSERT INTO domains (id, name, address, email)
        VALUES('".$data['id']."', '".$data['name']."', '".$data['address']."', '".$data['email']."')") or die(mysqli_error($mysqli));
/* 
    continue doing some stuff
*/
$data2 = sendPost('what_is_the_time');// send POST to getinfo.php with attribute ['what_is_the_time'] and return time data from another file

sendPost('get_info' or 'what_is_the_time'){
//do post with desired attribute
return $data; }
?>

属性で呼び出され、ポストリクエストを送信し、リクエストに基づいてデータを返す関数が必要だと思います。そして 2 番目の PHP ファイル:

<?php // getinfo.php (another PHP script)
   if($_POST['get_info']){
       //do some actions 
       $data = anotherFunction();
       return $data;
   }
   if($_POST['what_is_the_time']){
       $time = time();
       return $time;
   }

   function anotherFunction(){
   //do some stuff
   return $result;
   }
?>

よろしくお願いします。

更新:わかりました。curl メソッドは、php ファイルの出力を取得しています。出力全体ではなく $data 変数を返す方法は?

4

2 に答える 2

9

curlを使用する必要があります。関数は次のようになります。

function sendPost($data) {
    $ch = curl_init();
    // you should put here url of your getinfo.php script
    curl_setopt($ch, CURLOPT_URL, "getinfo.php");
    curl_setopt($ch,  CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    $result = curl_exec ($ch); 
    curl_close ($ch); 
    return $result; 
}

次に、次のように呼び出す必要があります。

$data = sendPost( array('get_info'=>1) );
于 2013-02-14T12:12:34.103 に答える