使用cURL从php文件中检索Json信息

时间:2012-01-30 23:46:44

标签: php json api curl

我已经看过很多例子,说实话我对这个问题有点困惑。

我已经做了3个星期的PHP,所以我对此很新。

基本上我写了一个函数,要求一个令牌和一个url,然后它检查数据库是否存在,如果它存在,那么它将提供一个json数组。我想知道如何选择文件并输入函数并使用cURL检索json数据。

我创建的功能在http://www.domain.com/api.php

之内

这是功能代码:

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',
    ));

}

}

正如您所见,json_encode就在那里,这就是我想要检索的内容。

如果你能解释一下也会对我的学习有所帮助。

感谢您的帮助:)

1 个答案:

答案 0 :(得分:1)

使用cUrl检索和解析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配置可能启用了所谓的“魔术引号”,它会使用斜杠转义任何输入参数的引号。

如果在调用mysql_real_escape_string之前没有删除这些斜杠,则生成的字符串将被双重转义。您可以使用这样的方法来确保所有内容都正确转义:

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