我已经看过很多例子,说实话我对这个问题有点困惑。
我已经做了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就在那里,这就是我想要检索的内容。
如果你能解释一下也会对我的学习有所帮助。
感谢您的帮助:)
答案 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);
}