2012-01-30 11 views
1

を使ってphpファイルからJsonの情報を取得しています。多くの例を見て、正直言って私は少し混乱しています。は、cURL

私は3週間しかPHPをやっていないので、私はこれに非常に新しいです。

基本的に私は、トークンとURLを要求する関数を書いています。そして、データベースが存在するかどうかをチェックし、存在する場合はjson配列を提供します。どのようにファイルを選択して関数を入力し、cURLを使用してjsonデータを取得するのか不思議でした。私が作成した

機能は、ここでhttp://www.domain.com/api.php

内にある機能コードです:あなたはjson_encodeがあり、それは私が望んでい何である見ることができるように

function check_api_website($token, $url){ 
$token = trim(htmlentities($token)); 
$safetoken = mysql_real_escape_string($token); 
$url = trim(htmlentities($url)); 
$safeurl = mysql_real_escape_string($url); 

$checkwebsite = "SELECT message,islive FROM websitetokens WHERE url='".$safeurl."' AND token='".$safetoken."'"; 
$checkwebsite_result = mysql_query($checkwebsite) OR die(); 
$numberofrows = mysql_num_rows($checkwebsite_result); 

if($numberofrows > 0){ 

    $website = mysql_fetch_array($checkwebsite_result); 
    $message = stripslashes($website["message"]); 
    $islive = stripslashes($website["islive"]); 

    json_encode(array(
     'message' => $message, 
     'islive' => $islive, 
    )); 

    $date = date('Y-m-d'); 
    $time = gmdate('H:i'); 

    $loginwebsite = "UPDATE websitetokens SET loggedin='".$date."',time='".$time."' WHERE url='".$safeurl."' AND token='".$safetoken."'"; 
    $loginwebsite_result = mysql_query($loginwebsite) OR die(); 

} else { 

    json_encode(array(
     'message' => '', 
     'islive' => '1', 
    )); 

} 

}

検索する。

私の学習に少しでも説明してください。事前に助けを

感謝:)

答えて

1

JSONデータを取得し、解析するカールとの単純な要求は次のようになります。

function get_json($url) { 
    $ch = curl_init(); 

    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_URL, $url); 

    $data = curl_exec($ch); 
    $resultCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); 
    curl_close($ch); 

    if ($resultCode == 200) { 
     return json_decode($data); 
    } else { 
     return false; 
    } 
} 

あなたのコード内でこのメソッドを配置し、簡単に呼び出すことができますそれこのような:グッド

$json = get_json('http://www.example.com'); 

ご承知のSQLインジェクションだと入力をエスケープ参照するには。しかし、いくつかのPHP構成では、いわゆる "magic quotes"が有効になっている可能性があり、スラッシュを使用して入力パラメータの引用符をエスケープします。

mysql_real_escape_stringを呼び出す前にこれらのスラッシュを削除しないと、結果の文字列が二重にエスケープされます。あなたは必ずすべてが適切にエスケープます作るために、このようなメソッドを使用することができます:

function escape_string($string) { 
    if (get_magic_quotes_gpc()) { 
     $string = stripslashes($string); 
    } 
    return mysql_real_escape_string($string); 
} 
+0

@parameters - 私はどのように行うことができるだろう、これは関数に任意の変数を送信しますと、関数を呼び出すInfactはしていることがわかりカントそれはcURLで、または私はちょうどあなたがURLを呼び出すように見えるが、これを正しく理解していないが、関数を呼び出さない。 – Robert

+0

'get_json'メソッドをどのように呼び出すべきですか?私はこれを行う方法の例を含めるように私の答えを更新しました。 – fivedigit

+0

コードは私が見るもののために更新されていません。たとえばwww.exampleurl.com/api.phpでは、関数、トークン、およびURLに入力するフィールドに必要なjsonデータを取得します。コードはURLから直接データを要求するだけで、関数または入力を呼び出すことはありませんすべてのフィールドを関数に追加します。 – Robert