【问题标题】:retrieve Json information from php file using cURL使用 cURL 从 php 文件中检索 Json 信息
【发布时间】:2012-01-30 23:46:44
【问题描述】:

我看过很多例子,老实说我对这件事有点困惑。

我只做了 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 在那里,这就是我想要检索的内容。

如果你能解释一下也将有助于我的学习。

提前感谢您的帮助:)

【问题讨论】:

    标签: php json api curl


    【解决方案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);
    }
    

    【讨论】:

    • @parameters - 我看不到这会将任何变量发送到函数并实际上调用函数,我怎么能用 cURL 做到这一点,或者我只是没有正确理解这一点,因为看起来你只是在调用 url,但它没有调用函数。
    • 应该如何调用get_json 方法?我更新了我的答案,包括一个关于如何做到这一点的例子。
    • 我所看到的代码尚未更新。例如,在 www.exampleurl.com/api.php 中检索它需要输入到函数中的字段的 json 数据、令牌和 url,您的代码只要求直接从 url 获取数据,它不会调用函数或输入函数中的任何字段。
    • 如果字段是指 GET 参数,它们可以包含在 URL 中,如下所示:http://www.example.com?token=abc123
    • 谢谢你的例子和你的时间,我现在了解一点点:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-22
    • 1970-01-01
    • 1970-01-01
    • 2021-02-09
    • 2022-01-08
    • 2017-05-23
    • 1970-01-01
    相关资源
    最近更新 更多