我看过很多例子,老实说,我对这件事有点困惑。
我只做了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);
}