php - Post ajax 在 IOS 和 MacOs 设备中不起作用
问题描述
我正在为这个站点开发一个注册系统:bottlesbeach.eu 基本上,当用户注册或登录时,会创建一个 cookie,并且在这个 cookie 中有一个随机生成的字符串,该字符串也将插入到用户的 mysql 数据库中节表。当您单击注销时,cookie 应该被清除,并且 mysql 数据库中的随机字符串(字符串会话 id)应该被清除,这个删除 mysql db 中的 cookie 和会话字符串的操作我使用 Ajax 发布。
Index.php onclick 注销:
<?php
$logged = false;
if (isset($_COOKIE["sessionid"])){
$logged = true;
?>
<script>
console.log("status: Logged");
var ahr = document.getElementById('ahr');
ahr.setAttribute('href', '');
ahr.innerHTML="Log-out";
ahr.onclick = function remokecookies() {
$.ajax({
type: "POST",
url: '/ajax.php',
data:{action:'removecks'},
cache: false,
});
}
window.onload = function() {
if(!window.location.hash) {
window.location = window.location + '#logged';
window.location.reload();
}
}
</script>
<?
(显然我插入了重新加载,否则即使执行了 ajax 函数,按钮文本仍保持为“注销”,因此 cookie 被删除。)
在索引中我创建了一个条件,如果 cookie 存在,则表示您已登录,然后在右上角将有一个注销按钮,其中包含我之前显示的相应 onclick ajax 功能。否则它将被写入登录名并单击它将带您进入登录面板。
Ajax 函数(ajax.php):
<?php
if($_POST['action'] == 'removecks') {
setcookie("sessionid", "", time() - 86400 * 30);
$hostname="";
$username="";
$password="";
$dbname="";
$ckvalue = $_COOKIE["sessionid"];
$conn = new mysqli($hostname,$username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
?> <script> console.log("Connection to db failed");</script><?
}
$query = "UPDATE users SET sessionid = '' WHERE sessionid = '$ckvalue'";
$stmt = $conn->prepare($query);
$stmt->bind_param("s", $sessionid);
$stmt->execute();
}
?>
一切似乎都可以在桌面版本中运行,但在移动设备上(仅在苹果设备上),“注销”按钮仍然存在。所以,我假设ajax函数没有执行,cookie没有被清除。有人知道如何帮助我吗?
解决方案
推荐阅读
- mysql - mysql query on an audit table to get latest row where no delete row exists for each user and type
- objective-c - 如何在 Objective C / async 问题中解决这种竞争条件?'索引 1 超出空数组的范围'
- c# - 在 C# ASP.Net MVC 中更新子列表时出现问题
- java - 检索指纹 Blob 在运行时使应用程序崩溃,适用于 Android 的 SQLITE
- sql - Dremio 约会对话
- jquery - webform asp.net 中的可搜索 CheckListBox
- ajax - How to display 3 levels of hierarchical menu in WordPress using "wp_get_nav_menu_items"?
- git - Gitlab 从特定的源分支合并
- c++ - 为什么 std::begin 和 std::end “不是内存安全”?
- jquery - Syncfusion 报表设计器自定义