我正在使用Laravel版本5.2.37。我在刀片视图中有一个简单的HTML表单,其中包含以下行:
<input type="hidden" name="_token" id="token" value="{{ csrf_token() }}">
当我将代码上传到客户端的共享主机(Cpanel,PHP 5.5.36)时,如果没有提交表单,我点击刷新并且csrf标记值不断变化。
但是,在我的本地计算机(MacOS / Apache2 / 5.6.16)上,csrf令牌会持续至少2分钟(每个config / session.php设置)。可能是造成这种情况的旧的5.5.36版本的PHP吗?
答案 0 :(得分:1)
尝试将config / session.php中的“domain”定义到正确的路径。默认情况下,它设置为null,但在服务器上,您应该清除它。
答案 1 :(得分:1)
好吧,我终于明白了。愚蠢的我做了一个自定义助手,其功能看起来像这样:
<?php
function doSomething($arg)
{
?><p>When this function is called,
display <b><?php echo $arg; ?> value.</b></p>
<?php
}
?>
你可能已经在WordPress中看到过很多这样的函数。虽然它不是工匠代码,但在大多数情况下它会正常工作,但是Laravel在处理帮助时不会容忍这种类型的废话。因此,在我编写函数以返回字符串之后,所有内容都恢复正常:
<?php
function doSomething($arg)
{
return '<p>When this function is invoked,
display <b>' . $arg . '</b> value.</p>';
}
?>
故事的道德 - 不要写丑陋的代码。确保您的函数返回并且永远不会直接回显/打印字符串,尤其是使用辅助函数。