получить информацию о Json из php файла, используя cURL - PullRequest
1 голос
/ 31 января 2012

Я видел много примеров, и, честно говоря, я немного запутался в этом вопросе.

Я занимаюсь php всего 3 недели, поэтому я очень новичок в этом.

По сути, я написал функцию, которая запрашивает токен и URL, затем проверяет базу данных, если существует, если она существует, то предложит массив json. Мне было интересно, как выбрать файл и войти в функцию и получить данные JSON с помощью cURL.

Функция, которую я создал, находится в пределах 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 Ответ

1 голос
/ 31 января 2012

Простой запрос 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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...