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


retrieve Json information from php file using 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就在那里,这就是我想要检索的内容。

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

感谢您提前提供的帮助:)

使用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);
}