我有一个名为index.php的简单文件.我需要传递一个查询字符串,该查询字符串将存储在一个永不过期的cookie中.该文件看起来完全像这样:
<?php
if (isset($_GET['referrer_id']))
{
$querystringWithJunk = $_GET['referrer_id'];
$querystringArray = explode('/', $querystringWithJunk);
setcookie("referrer_id", $querystringArray[0], time() + 60*60*24*365*100);
}?>
Run Code Online (Sandbox Code Playgroud)
但是,没有设置cookie.什么是referrer_id内部是一个简单的整数(在我做的测试中,它是1).函数setCoookie返回true,一切似乎都正常但没有设置cookie.难道我做错了什么?
看起来它应该工作:
if ($_POST['stayloggedin'] == 'stayloggedin') {
setcookie("user", $_POST['mail'], time()+7*24*60*60, '/', 'subdomain.example.com', false, true);
setcookie("hash", md5(sha1(md5($_POST['pw']))), time()+7*24*60*60, '/', 'subdomain.example.com', false, true);
}
header("Location: /");
exit();
Run Code Online (Sandbox Code Playgroud)
我把ob_start()放在代码之上,所以这不应该是重点.
这是一个关于我的旧问题的问题:cookie不会取消设置: cookie不会 在我忘记cookie的时候出现问题(但是设置'正确'),
现在问题解决了; cookie似乎没有设置
cookie'set':(不起作用)
setcookie("id",$data['id'], time()+3600*24*30,'/');
setcookie("alias",$data['nombre'], time()+3600*24*30,'/');
Run Code Online (Sandbox Code Playgroud)
cookie检查:(似乎工作)
function sesion(){
if(isset($_COOKIE['id']) && isset($_COOKIE['alias'])){
$_SESSION['logueado'] = true;
$_SESSION['id'] = $_COOKIE['id'];
$_SESSION['alias'] = $_COOKIE['alias'];
return true; //THIS IS NEVER RETURNING TRUE
}
if(isset($_SESSION['id']) && isset($_SESSION['logueado']) && $_SESSION['logueado'] == true){
return true;
}
else{ return false;
}
}
Run Code Online (Sandbox Code Playgroud)
cookie未设置:(有效)
function cerrar_sesion(){
session_start();
$_SESSION['logueado']= false;
$_SESSION['id']= NULL;
session_unset();
session_destroy();
setcookie("id",false,time()-3600,"/");
setcookie("alias",false,time()-3600,"/");
unset($_COOKIE['id']);
unset($_COOKIE['alias']);
}
Run Code Online (Sandbox Code Playgroud)
发生的事情是登录只能通过$ _SESSION工作,因此在没有活动30分钟后用户不再登录,
知道我做错了什么吗?非常感谢!
当我尝试以下列方式设置cookie时,值在浏览器中显示我的cookie就像这个cookie名称 - >最近和值1%2c2其中1和2是我的获取参数和%2c我不知道这是什么我想要,代替%2c
if(!empty($_GET['c']))
{
$c = $_GET['c'];
if(isset($_COOKIE['recent']))
{
$c=$_COOKIE['recent'].','.$c;
setcookie('recent',$c);
}
else
{
if(setcookie('recent',$c))
{
echo "yes";
}
else
{
echo "no";
}
}
}
echo $_COOKIE['recent'];
Run Code Online (Sandbox Code Playgroud) 也许我错过了一些东西,但我不确定.我只是想做的就是设置cookie,以便我可以在以后检索它们的值.我试图实现这样的事情,但无济于事....不知道为什么它不工作,因为它并不那么困难.
我有一个简单的登录表单,你知道,用户名/通行证等......没什么特别的.
成功登录后,我有这样的事情:
// COOKIE DETAILS HERE
setcookie('username4pc',$userName);
setcookie('userpass4pc',$userPass);
header("Location:testCookie.php");
Run Code Online (Sandbox Code Playgroud)并且我已经确定这是在HTML标记之前以及在将任何内容输出到页面之前.这么多,我已经从我的程序中取出上面的内容,并将其放在一个空白的html页面上进行测试,现在它看起来像这样......
点击索引页面上的"登录"后,它会转到我的新测试页面,该页面只有以下内容:
<?php
setcookie('username4pc',$userName);
setcookie('userpass4pc',$userPass);
header("Location:testCookie.php");
?>
<html></html>
Run Code Online (Sandbox Code Playgroud)
并且在上面的运行之后,标题将它抛出到testCookie.php
只有这个的页面
<?php
//test cookie
if(isset($_COOKIE['first_name'])){
echo " cookies set";
} else {
echo "cookie not set";
}
?>
<html></html>
Run Code Online (Sandbox Code Playgroud)
无论我做什么,我总是得到"cookie not set"
关于为什么和出错的任何想法?
我正在学习PHP最重要且最难理解的概念."会话和Cookie"
根据我的理解,cookie只能通过使用setcookie()
或者setrawcookie()
函数设置到浏览器中.
根据我对会话过程的理解,它以下列方式工作.
PHPSESSID
.要在我的PHP代码中引用会话ID,我会引用变量$ PHPSESSID(它是一个cookie名称)如果我在以上解释中的任何地方理解错误,请纠正我.
我怀疑是因为会话在$_COOKIE
超全局中设置了一些价值,它无处使用任何函数,setcookie() or setrawcookie()
那么会话ID如何被存储为cookie变量?
如果我假设会话ID被设置为cookie变量并且setccookie() or setrawcookie()
可能已在内部调用,那么在调用任一函数 setccookie() or setrawcookie()
设置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 中给出
我正在编写一个应用程序,该应用程序使用 ReactJs 作为localhost:3001 的前端,使用 Symfony 作为后端localhost:3000,并且为了启用跨源通信,我在 Symfony 中使用“cors-bundle”。现在我想在用户登录时创建一个Cookie,但它似乎没有创建!
感谢您的帮助,
这是用户登录时 Symfony 中的代码:
use Symfony\Component\HttpFoundation\Cookie;
$cookie = new Cookie( 'my_cookie', 1, strtotime('tomorrow') );
$res = new Response();
$res->headers->setCookie( $cookie );
return new JsonResponse($res);
Run Code Online (Sandbox Code Playgroud)
这也是我尝试过的:
$res->headers->setCookie(Cookie::create('my_cookie', 1));
return new JsonResponse($res);
Run Code Online (Sandbox Code Playgroud) 我使用 Go 和 mux 作为后端,使用简单的 html 作为前端。在响应中设置cookie的代码(不完整):
import "github.com/gorilla/sessions" // this is where sessions come from
var store = sessions.NewCookieStore([]byte("secret"))
store.Options = &sessions.Options{
MaxAge: 3600 * 24,
HttpOnly: true,
Path: "/",
Secure: true,
}
session, _ := store.Get(request, "uid")
session.Values["uid"] = token
err = session.Save(request, writer)
if err != nil {
log.Fatalln(err)
return
}
Run Code Online (Sandbox Code Playgroud)
这就是我获取的方式:
fetch("http://localhost:8000/user/register", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
credentials: 'include',
body: JSON.stringify(user),
})
Run Code Online (Sandbox Code Playgroud)
我还在后端启用了 cors:
c := cors.New(cors.Options{
AllowedOrigins: []string{"http://127.0.0.1:3000"},
AllowCredentials: true,
})
Run Code Online (Sandbox Code Playgroud)
set-cookie …