小编Mat*_*Mat的帖子

阻止php session_start()发送cookie

我想知道是否有办法防止PHP在调用时发送cookie session_start().

我的用例是网站优化:

  • (1a)我首先打开一个会话/发送标题.
  • (1b)然后生成并输出一些文本内容.
  • (1c)为了增强会话读/写,我不再需要在会话中写入时调用"session_write_close".
  • (2)最后,我有一个页面后渲染过程(对于统计数据),需要对会话进行写访问.会话已关闭,我无法再次调用session_start(),因为它发送了一个cookie,而且为时已晚.这是一个计算量很大的过程,因此我必须在将页面发送到客户端后执行此操作.

客户端已收到会话cookie.所以我不需要session_start()发送新的(和冗余的).

有人知道拦截cookie或类似的方法吗?当然我想避免"无法发送会话cookie - 已经发送的标题".此错误对用户不可见,因为该页面已经渲染,但在日志中看起来很难看.

我的问题似乎是多余的,但事实并非如此.我知道标题和内容是如何工作的(首先发送标题,然后发送内容).只是PHP不让我做我想做的事.

php session header

12
推荐指数
2
解决办法
5381
查看次数

重置通过 css 设置的图像宽度和高度

我正在尝试在 html 中创建一个包含图像的流体布局。现在,我支持 2 种尺寸的布局。默认布局用于显示 1000 像素宽的站点。如果屏幕足够宽(大于 1200 像素),我会使用 css 媒体查询增强许多方面。

我有一个 DIV 容器,默认布局宽度为 600 像素,增强布局宽度为 700 像素。里面有一个随机图像,我知道一些元数据(宽度和高度)。如果图像对于容器来说太大,我可能需要缩小图像的大小。

所以我使用这段代码来实现流畅的布局

<div class="container">
  <!-- for a 650px/400px image, the downsized version is 600px/369px -->
  <img src="/image?id=1234" width="650" height="400" style="width:600px;height:369px" />
</div>
Run Code Online (Sandbox Code Playgroud)

和风格

@media screen and (min-width:1200px){
  .container IMG {
    width:auto !important;
    height:auto !important;
  }
}
Run Code Online (Sandbox Code Playgroud)
  • 下面是它的工作原理:

在默认布局的情况下,内联样式适用。所以图像被缩小到 600px/369px 以适合容器。否则,将应用媒体查询样式,并且图像处于其默认宽度/高度(我知道图像的宽度永远不会超过 700 像素,因此一切正常)。

  • 我的问题来自图像的加载状态和浏览器保留的空间。chrome/firefox 的行为是相同的,但对我来说很奇怪。没有用 IE 测试(实际上不是我的优先事项)

对于默认布局,没问题,内联样式仍然适用。浏览器显示与图像对应的空白区域。

对于增强布局,“自动”尺寸适用。但是浏览器在没有完全加载时不知道图像的自然大小,并且看起来“auto”相当于0px。如果应用了为图像设置的宽度和高度属性,那将是完美的。但事实并非如此。结果是没有为图像保留空间,这不是我想要的行为。

  • 我发现的第一个解决方案是为图像添加另一个内联 css 规则。如果我添加 "min-width:600px; min-height:369px" 图像的保留空间始终为 600x369 像素,而不是增强布局的 0 像素。那更好,但还不完美。

- 你觉得怎么样 ?

  • 是否可以“重置”css 而不是使用“auto …

css image media-queries

5
推荐指数
1
解决办法
2万
查看次数

Yii2 路由使用 yii\rest\UrlRule 和几个参数

我正在尝试将 Yii 2 路由用于 REST API。

按照http://www.yiiframework.com/doc-2.0/guide-rest-routing.html 上的教程,我已经(成功)定义了很多 API 入口点规则,如下所示:

'urlManager' => [
    'enablePrettyUrl' => true,
    'enableStrictParsing' => true,
    'showScriptName' => false,
    'rules' => [
        [
            'class' => 'yii\rest\UrlRule', 
            'controller' => 'user'
        ],
    ],
]
Run Code Online (Sandbox Code Playgroud)

这样的规则定义:

  • GET /users(列出用户)
  • GET /users/123(显示用户 123 的详细信息)

现在,我的用户有游戏。所以我想要网址:

  • GET /users/123/games(列出用户123的游戏)
  • GET /users/123/games/864(用户123的864游戏详情——比如他的分数)

我尝试像这样定义我的新入口点(没有成功):

'rules' => [
    ... previous rules ...,
    [
        'class' => 'yii\rest\UrlRule',
        'controller' => [
            'game'
        ],
        'tokens' => [
            '{userid}' => '<userid:\\d>',
            '{gameid}' => '<gameid:\\d>',
        ],
        'patterns' => [
            'GET,HEAD …
Run Code Online (Sandbox Code Playgroud)

php rest routing yii yii2

4
推荐指数
1
解决办法
5134
查看次数

标签 统计

php ×2

css ×1

header ×1

image ×1

media-queries ×1

rest ×1

routing ×1

session ×1

yii ×1

yii2 ×1