我正在尝试使用 Symfony 1.4 框架将变量存储在 cookie 中。这是我的 sfAction 派生类的片段:
class productActions extends sfActions
{
public function preExecute()
{
$this->no_registration_form = true;
$request = $this->getRequest();
$cookie_value = $request->getCookie('pcatid');
$this->prod_category_id = (!isset($cookie_value)) ? 0 : $cookie_value;
$cookie_value = $request->getCookie('pitid');
$this->product_item_id = (!isset($cookie_value)) ? 0 : $cookie_value;
$cookie_value = $request->getCookie('pcatnm');
$this->product_category_name = (!isset($cookie_value)) ? null : base64_decode ($cookie_value);
$cookie_value = $request->getCookie('pipnm');
$this->product_info_partial_name = (!isset($cookie_value)) ? null : $cookie_value;
$cookie_value = $request->getCookie('protl');
$this->title = (!isset($cookie_value)) ? null : base64_decode ($cookie_value);
}
public function postExecute()
{
$expire = time()+2592000;
$path = '/products/';
$response = $this->getResponse();
$value = $this->prod_category_id;
if (isset($value))
$response->setCookie('pcatid', $value, $expire, $path);
$value = $this->product_item_id;
if (isset($value))
$response->setCookie('pitid', $value, $expire, $path);
$value = base64_encode($this->product_category_name);
if (isset($value))
$response->setCookie('pcatnm', $value, $expire, $path);
$value = $this->product_info_partial_name;
if (isset($value))
$response->setCookie('pipnm', $value, $expire, $path);
$value = base64_encode($this->title);
if (isset($value))
$response->setCookie('protl', $value, $expire, $path);
}
public function executeIndex(sfWebRequest $request)
{
// uses defaults or settings stored in cookies
}
... // other functions that set the required instance member fields
}
我已经在调试 session 中逐步执行代码,我可以看到 cookie 值正在 sfWebResponse 变量中进行整理 - 但是,没有设置任何 cookie - 这在preExecute() 函数 - 所有检索到的 cookie 的值为 null。
为什么会这样?
最佳答案
我在一个新的 symfony 项目上做了一个简单的测试。
我已经复制/粘贴了您的preExecute 和postExecute,并且添加了一个带有空模板的简单操作:
public function executeIndex(sfWebRequest $request)
{
var_dump($_COOKIE);
$this->prod_category_id = 123;
$this->product_item_id = 456;
$this->product_category_name = 789;
$this->product_info_partial_name = 159;
$this->title = 753;
}
我已经将这一行 $path = '/products/'; 更改为 $path = '/';。
第一次尝试时,我没有任何 cookie,所以我什么都没有:
array
empty
刷新时,cookie 已定义,我可以看到它们:
array
'symfony' => string 'c04khrspp5fmg3sh797uq9c9s1' (length=26)
'pcatid' => string '123' (length=3)
'pitid' => string '456' (length=3)
'pcatnm' => string 'Nzg5' (length=4)
'pipnm' => string '159' (length=3)
'protl' => string 'NzUz' (length=4)
您的代码可能有什么问题,您将 cookie 路径设置为 /products/。这意味着,当您访问 http://exemple.com/products/... 时,您将能够仅访问这些 cookie。
如果您尝试在 http://exemple.com/ 上访问这些 cookie,您将一无所获。
如果这不能解决您的问题,您能否粘贴一个操作示例,说明您在定义的 uri(至少是域之后的部分)出现问题的地方。
关于php - Symfony 1.4 cookie 检索失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14767258/
我已经构建了一些serverspec代码来在多个主机上运行一组测试。问题是当任何测试失败时,测试会在当前主机停止。即使测试失败,我也希望它继续在所有主机上运行。Rakefile:namespace:specdotask:all=>hosts.map{|h|'spec:'+h.split('.')[0]}hosts.eachdo|host|begindesc"Runserverspecto#{host}"RSpec::Core::RakeTask.new(host)do|t|ENV['TARGET_HOST']=hostt.pattern="spec/cfengine3/*_spec.r
我正在尝试在Rails上安装ruby,到目前为止一切都已安装,但是当我尝试使用rakedb:create创建数据库时,我收到一个奇怪的错误:dyld:lazysymbolbindingfailed:Symbolnotfound:_mysql_get_client_infoReferencedfrom:/Library/Ruby/Gems/1.8/gems/mysql2-0.3.11/lib/mysql2/mysql2.bundleExpectedin:flatnamespacedyld:Symbolnotfound:_mysql_get_client_infoReferencedf
我需要一个非常简单的字符串验证器来显示第一个符号与所需格式不对应的位置。我想使用正则表达式,但在这种情况下,我必须找到与表达式相对应的字符串停止的位置,但我找不到可以做到这一点的方法。(这一定是一种相当简单的方法……也许没有?)例如,如果我有正则表达式:/^Q+E+R+$/带字符串:"QQQQEEE2ER"期望的结果应该是7 最佳答案 一个想法:你可以做的是标记你的模式并用可选的嵌套捕获组编写它:^(Q+(E+(R+($)?)?)?)?然后你只需要计算你获得的捕获组的数量就可以知道正则表达式引擎在模式中停止的位置,你可以确定匹配结束
我在rubyonrails应用程序中有以下新方法:defnewifcookies[:owner].empty?cookies[:owner]=SecureRandom.hexend@movie=Movie.new@movie.owner=cookies[:owner]end基本上,每个新用户都应该获得一个代码来识别他们(尽管只是通过cookie)。因此,当用户创建电影时,创建的cookie将存储在owner字段中。所以有两个问题:使用.empty?方法,当我从浏览器中删除cookie时,返回一个undefinedmethodempty?'对于nil:NilClass`当我确实已经在
我正在尝试在配备ARMv7处理器的SynologyDS215j上安装ruby2.2.4或2.3.0。我用了optware-ng安装gcc、make、openssl、openssl-dev和zlib。我根据README中的说明安装了rbenv(版本1.0.0-19-g29b4da7)和ruby-build插件。.这些是随optware-ng安装的软件包及其版本binutils-2.25.1-1gcc-5.3.0-6gconv-modules-2.21-3glibc-opt-2.21-4libc-dev-2.21-1libgmp-6.0.0a-1libmpc-1.0.2-1libm
我试图在我的网站上实现使用Facebook登录功能,但在尝试从Facebook取回访问token时遇到障碍。这是我的代码:ifparams[:error_reason]=="user_denied"thenflash[:error]="TologinwithFacebook,youmustclick'Allow'toletthesiteaccessyourinformation"redirect_to:loginelsifparams[:code]thentoken_uri=URI.parse("https://graph.facebook.com/oauth/access_token
一段时间以来,我一直在使用open_uri下拉ftp路径作为数据源,但突然发现我几乎连续不断地收到“530抱歉,允许的最大客户端数(95)已经连接。”我不确定我的代码是否有问题,或者是否是其他人在访问服务器,不幸的是,我无法真正确定谁有问题。本质上,我正在读取FTPURI:defself.read_uri(uri)beginuri=open(uri).readuri=="Error"?nil:urirescueOpenURI::HTTPErrornilendend我猜我需要在这里添加一些额外的错误处理代码...我想确保我采取一切预防措施来关闭所有连接,这样我的连接就不是问题所在,但是我
我在思考流量控制的最佳实践。我应该走哪条路?1)不要检查任何东西并让程序失败(更清晰的代码,自然的错误消息):defself.fetch(feed_id)feed=Feed.find(feed_id)feed.fetchend2)通过返回nil静默失败(但是,“CleanCode”说,你永远不应该返回null):defself.fetch(feed_id)returnunlessfeed_idfeed=Feed.find(feed_id)returnunlessfeedfeed.fetchend3)抛出异常(因为不按id查找feed是异常的):defself.fetch(feed_id
我正在为毕业设计开发GEM,TravisCI构建不断失败。这是我在Travis上的链接:https://travis-ci.org/ricardobond/perpetuus/builds/8709218构建错误是:$bundleexecrakerakeaborted!Don'tknowhowtobuildtask'default'/home/travis/.rvm/gems/ruby-1.9.3-p448/bin/ruby_noexec_wrapper:14:in`eval'/home/travis/.rvm/gems/ruby-1.9.3-p448/bin/ruby_noexec_
request.cookies和RubyonRails中的cookies对象有区别吗?我目前正在尝试将带有cookie的请求从我的node.js服务器发送到我的ROR4应用程序。似乎在ROR应用程序中,request.cookies包含我发送的cookie,但是cookies对象(现有逻辑所基于的对象)没有它。我已经搜索了文档,但找不到任何相关内容。我错过了什么吗?感谢您的帮助。 最佳答案 理想情况下,request.cookies和cookies应该相同。但是,在POST(创建操作)请求中,rails会验证XSRFtoken。如果