几年前,我为我的一些移动应用程序创建了一个后端(PHP 来获取一些 JSON 数据)。从那时起我就没有碰过这段代码。现在它几周前就停止工作了。我不是后端开发人员,所以我在这里没有太多经验,但几年前我认为创建自己的后端而不是使用 Firebase/Serverless 会更好......这不是我最好的主意:)
我尝试了什么:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="robots" content="noindex, nofollow">
<title>One moment, please...</title>
<style>
body {
background: #F6F7F8;
color: #303131;
font-family: sans-serif;
margin-top: 45vh;
text-align: center;
}
</style>
</head>
<body>
<h1>Please wait while your request is being verified...</h1>
<form id="wsidchk-form" style="display:none;" action="/z0f76a1d14fd21a8fb5fd0d03e0fdc3d3cedae52f" method="get">
<input type="hidden" id="wsidchk" name="wsidchk"/>
</form>
<script>
(function(){
var west=+((+!+[])+(+!+[]+!![]+!![]+!![]+[])+(+!+[]+!![]+!![]+!![])+(+!+[]+!![]+!![]+!![]+[])+(+!+[])+(+!+[]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+[])+(+!+[]+!![]+!![]+!![]+!![])+(+!+[]+[])),
east=+((+!+[])+(+!+[]+!![]+[])+(+!+[]+!![]+!![]+!![]+!![]+!![]+!![]+!![])+(+!+[]+[])+(+![])+(+!+[]+!![]+[])+(+!+[]+!![])+(+!+[]+!![]+!![]+[])),
x=function(){try{return !!window.addEventListener;}catch(e){return !!0;} },
y=function(y,z){x() ? document.addEventListener("DOMContentLoaded",y,z) : document.attachEvent("onreadystatechange",y);};
y(function(){
document.getElementById('wsidchk').value = west + east;
document.getElementById('wsidchk-form').submit();
}, false);
})();
</script>
</body>
</html>
这是我的 PHP 文件:
$response = array();
function saveResultOfQueryToArray($result){
global $response;
$response['workouts'] = array();
while($row = mysqli_fetch_array($result)){
$temp = array();
// $temp['aufruf'] = $aufruf;
$temp['error'] = false;
$temp['workoutname'] = $row['workoutname'];
$temp['duration'] = $row['duration'];
...
array_push($response['workouts'],$temp);
}
}
if($_SERVER['REQUEST_METHOD']=='GET') {
$db = new DbOperation();
$users = $db->getHighestRatingWith31Results();
saveResultOfQueryToArray($users, $chooseMethod);
}
else {
$response['error'] = true;
$response['message'] = "Invalid Request";
}
echo json_encode($response);
有人可以向我解释我做错了什么/可以改变什么吗?
看起来
if($_SERVER['REQUEST_METHOD'] == 'GET')
没有$response
。除非代码中有更多内容,否则 $response
是未定义的。
if($_SERVER['REQUEST_METHOD']=='GET') {
$db = new DbOperation();
$users = $db->getHighestRatingWith31Results();
saveResultOfQueryToArray($users, $chooseMethod);
$response['error'] = false;
$response['message'] = 'Whatever you want returned here.';
else {
$response['error'] = true;
$response['message'] = "Invalid Request";
}
echo json_encode($response);
类似的东西应该可以解决问题!我还建议查看 HTTP 响应,例如 HTTP 405。 https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/405
编辑:所以我看到了您的更新,很抱歉,但这提出了更多问题。也就是说,
$db->getHighestRatingWith31Results();
有什么作用?函数 saveResultOfQueryToArray()
接受一个参数,但用法是给函数提供两个参数? saveResultOfQueryToArray 正在调用 mysqli_fetch_array(),它需要一个 mysqli_result 实例。
这是我的推荐:
saveResultOfQueryToArray()
返回 $response 要么考虑通过引用传递。 https://www.php.net/manual/en/language.references.pass.php