由于我正在构建一个简单的游戏,因此我需要用户即使在离开时也保持登录状态。出于安全原因,最好将 cookie 存储在我自己的服务器上,这样用户就无法更改它们。这可能吗?
我将所有内容存储在会话变量中,如果用户正在战斗,如果用户正在做一些耗时的事情等等。在完成之前的任务之前,他们无法访问我网站上的其他点!这就是为什么我需要将此信息存储在我的会话 cookie 中!
如果这是不可能的,我想我只需要将这些东西存储在我的数据库中,但这将是我手上大量额外的数据库操作......
我什至可以将这些数据保存在 cookie 中,以便当用户离开并返回时,会话仍会将变量设置为以前的数据吗?
我正在尝试使用 cookie 来记住访问者是否已经在我的网站上看过特定的教程页面。该站点是使用 Flask 构建的。
教程页面是从烧瓶路由加载的,所以我认为尝试使用烧瓶框架中的 make_response 和 response.set_cookie 函数更改烧瓶路由定义中的 cookie 是有意义的。
但是,此(会话)cookie 仅在会话期间有效。我找不到有关使用烧瓶设置永久/持久 cookie 的任何信息。我怎么能用烧瓶做到这一点?
谢谢!
我正在设置 cookie 以在页面加载时启动模态。目前,模态只发生一次。
我需要它每个月重置一次,以便每个访问者每个月都会弹出一次。
是否可以修改我的代码来实现这一点,还是我需要以另一种方式做到这一点?任何帮助表示赞赏。
$(document).ready(function () {
//if cookie hasn't been set...
if (document.cookie.indexOf("ModalShown=true")<0) {
$("#newsletterModal").modal("show");
//Modal has been shown, now set a cookie so it never comes back
$("#newsletterModalClose").click(function () {
$("#newsletterModal").modal("hide");
});
document.cookie = "ModalShown=true; expires=Fri, 31 Dec 9999 23:59:59 GMT; path=/";
}
Run Code Online (Sandbox Code Playgroud)
});
我创建了一个 PHP websocket 服务器并与一个 webbrowser 连接到它。一切正常。现在我想将一些 cookie 信息发送到 websocket 服务器,但 cookie 并从不与标头一起发送。我真的不知道为什么 cookie 不包含在请求标头中。(在 index.php 中使用 php 回显时,cookie 已设置且不为空)
这是请求和响应头
要求
GET ws://127.0.0.1:9000/chat HTTP/1.1
Host: 127.0.0.1:9000
Connection: Upgrade
Pragma: no-cache
Cache-Control: no-cache
Upgrade: websocket
Origin: http://localhost
Sec-WebSocket-Version: 13
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36
Accept-Encoding: gzip, deflate, sdch
Accept-Language: nl-NL,nl;q=0.8,en-US;q=0.6,en;q=0.4
Sec-WebSocket-Key: 2nR9SZYdLOG32fpV6eJ/wA==
Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits
Run Code Online (Sandbox Code Playgroud)
回复
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: QecMAdsem/PYww1pYkyjD+79OmM=
Run Code Online (Sandbox Code Playgroud)
握手
// do handyshake: (hybi-10)
$secKey = $headers['Sec-WebSocket-Key'];
$secAccept …Run Code Online (Sandbox Code Playgroud) 下面,从我所看到的,是一个非常标准的 reducer 签名,用于处理基于令牌的身份验证:
function auth(state = {
isFetching: false,
isAuthenticated: localStorage.getItem('id_token') ? true : false
}, action)
Run Code Online (Sandbox Code Playgroud)
该isAuthenticated属性根据 localStorage 中是否存在令牌来检查用户是否登录,如果我使用带有 cookie 的会话身份验证,我将如何做同样的事情?
编写一个函数来根据其名称从 document.cookie 中检索 cookie 并以与上面的示例代码完全相同的方式使用它是否就足够了?
谢谢
我想向我的 cookie 中的现有数组变量添加值。
目前我使用 Ajax 设置我的 cookie:
阿贾克斯:
function setcookie(productid){
$.ajax({
type: 'POST',
url: "setcookies.php",
data: {
id: "productid"
},
success: function (e) {
alert(e);
}
});
}
Run Code Online (Sandbox Code Playgroud)
PHP setcookies.php
<?php
$cookiename = "products";
$cart = array();
$pid = $_POST['id'];
array_push($cart, $pid);
setcookie($cookiename, serialize($cart), time() + 3600, "/");
$_COOKIE[$cookiename] = serialize($cart);
Run Code Online (Sandbox Code Playgroud)
当我单击 addproduct 按钮时 setcookie() 函数将被调用。单击 addproduct 按钮三次我希望应该将产品的 3 个 id 添加到 cookie 数组,但是当我访问将在我的页面中显示 cookie 的页面时,它只会显示最后添加的 productid。
提前谢谢你们。
编辑我的工作代码:
下面的代码对我有用:只是稍微修改了 Dominique 回答的代码。
$cookiename = "products";
$cart = null;
$pid = …Run Code Online (Sandbox Code Playgroud) 使用 Rails,我正在完成一个教程,其中作者主张使用以下内容存储用户 ID: cookies.permanent.signed[:user_id] = user.id
这似乎很明智,但我很好奇:如果整个事情都通过 ssl 提供服务,这是否真的提高了我网站的安全性?
我的理解是 cookie 与所有其他响应内容一起加密。签名 cookie 将如何改善问题?
问题是什么?
while($rov = mysql_fetch_array($result)) {
$expire = time()+(60*60*24*30);
setcookie('cookie',$rov,$expire);
$userID = $rov;
}
if(isset($_COOKIE['cookie'])) {
$userID = $_COOKIE['ID'];
}
if(isset($_COOKIE['cookie'])) {}
Run Code Online (Sandbox Code Playgroud)
错误信息:
警告:setcookie() 期望参数 2 是字符串,数组在第 24 行的 /index.php 中给出
当用户按下过滤器上的重置按钮时,我想删除我之前创建的用于保存用户输入并重定向到同一页面“/search/influencers”的 cookie。我已经在整个 stackoverflow 上进行了搜索,但列出的删除 cookie 的方法均无效。请帮忙!
/**
* resets the cookie that holds previous filter query
*/
public function resetFilter(Request $request){
if(Cookie::has('if_query_pref')) {
Cookie::queue(
Cookie::forget('if_query_pref')
);
}
return redirect()->route('influencerSearch'); //change the expiration time
}
Run Code Online (Sandbox Code Playgroud) 当我运行此代码时:
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import cookieParser from 'cookie-parser';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
app.use(cookieParser());
await app.listen(3000);
}
bootstrap();
Run Code Online (Sandbox Code Playgroud)
我得到:
(node:28) UnhandledPromiseRejectionWarning: TypeError: cookie_parser_1.default is not a function
at bootstrap (/usr/src/app/dist/main.js:8:36)
at processTicksAndRejections (internal/process/task_queues.js:93:5)
Run Code Online (Sandbox Code Playgroud)
如果我注释掉“app.use(cookieParser());” 问题消失了,但我需要 cookie 解析器。