小编Mar*_*ann的帖子

如何在Windows上通过Laravel Installer安装Laravel?

我正在尝试使用Laravel Installer方法在Windows上安装Laravel Framework.

文档中我发现了以下内容:

首先,使用Composer下载Laravel安装程序.确保将"〜/ .composer/vendor/bin"目录放在PATH中,以便在终端中运行laravel命令时找到laravel可执行文件.

现在这个PATH对我来说并不熟悉.你能告诉我Windows的工作路径吗?

顺便说一句:我正在使用WAMP.Composer已安装并更新.

installer laravel composer-php laravel-4

50
推荐指数
4
解决办法
6万
查看次数

Laravel 4:防止多个表单提交 - CSRF令牌

问题场景:

我正在用Laravel 4创建一个博客.负责创建新博客文章的表单由CSRF保护(Laravel Docs:CSRF Protection)构建.

到目前为止一切正常,但似乎laravel不会在每个请求上刷新csrf标记.

出现的问题是,如果用户点击浏览器的后退按钮返回提交的表单,则输入的数据仍然存在,用户可以"重新提交"表单.这可能会为垃圾邮件发送者打开一扇门.

通常这是由CSRF令牌阻止的,因为它在每次请求时都会被刷新,但是Laravel似乎并没有这样做.

我使用laravel"资源控制器"方法(Laravel Docs:Resource Controllers)来处理表单和博客帖子视图.此外,在将提交的输入存储在数据库(MySQL)中之前,我使用Laravels输入验证器.


所以出现了以下想法:

  1. 以某种方式强制Laravel 4在每次请求时自动重新生成csrf

  2. 生成另一个令牌并手动将其包含在表单中

  3. 在用户会话(php或数据库)中保存表单子目录的时间戳,并在时基上限制新表单提交

我个人更喜欢第一个想法,但遗憾的是我无法找到一种方法来强制laravel表现我想要的样子,而不会破坏"Illuminate"本身(我想保持"原样"以便能够更新laravel没有"麻烦hoff "^^).

你会推荐什么?

你是怎么自己处理这个问题的?

php forms csrf post-redirect-get laravel-4

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

如何从存储在子目录中的配置文件中访问值?

在Laravel 4中运行时访问配置值是使用其Config类完成的:

Config::get('app.timezone');
Run Code Online (Sandbox Code Playgroud)

为了组织配置文件,我想把它们放到不同的子目录中.

例如:

  • /config/users/  - >   用于特定于用户的配置
  • /config/auth/    - >   认证相关
  • 等等...

我从Dayle Rees 读了一本老教程(Laravel v3),他说下面的内容是可能的:

$option = Config::get('ourconfig.sub.directory.size');
Run Code Online (Sandbox Code Playgroud)

试了一下,没有运气.根据杰森刘易斯的说法,它从未受到支持.

然后我看了一下Laravel 4 API并找到了load()getRequire()(这里可以找到更多相关的函数).

但是,我找不到在L4中获取sub-dir配置值的方法.

所以,

  1. Laravel 4有可能吗?
  2. ......如果是的话,怎么样?

app-config subdirectory laravel laravel-4

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

查看计数器 - 如何只为每个用户计算一次? - PHP/Laravel 4

我正计划用PHP编写一个用于博客的视图计数.计数器的目的是指示博客文章的阅读频率,例如StackOverflow在问题页面上显示"浏览n次".

首先,我想将计数器数据存储在文件中,但通过研究,我改变了主意,将MySQL与几个InnoDB表一起使用,因为这些表的执行速度比硬盘查找速度快,从长远来看也不那么费力,而且本身也提供了有用的功能.

我坚持的问题是如何只为每个用户计算一次?

限制IP不是一种解决方案,因为动态IP和网络通常只有一个IP与所有连接的设备(例如学校,办公室,公共接入点)共享连接.

编辑:

受到fideloper的回答的启发,我正在研究基于会话的解决方案.

我已经在会话中使用单独的数据库表,所以我会按照建议将其合并到解决方案中.

这是我到目前为止(使用Laravel 4Eloquent ORM):

SQL表设置:

-- 
-- Sessions Table
-- 
CREATE TABLE sessions (
    id VARCHAR(255) NOT NULL COLLATE 'utf8_unicode_ci',
    payload TEXT NOT NULL COLLATE 'utf8_unicode_ci',
    last_activity INT(11) NOT NULL,

    UNIQUE INDEX sessions_id_unique (id)
) COLLATE='utf8_unicode_ci' ENGINE=InnoDB;

-- 
-- Views Table
-- 
CREATE TABLE post_views (
    id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
    post_id INT(11) UNSIGNED NOT NULL,
    sess_id VARCHAR(255) NOT NULL COLLATE 'utf8_unicode_ci',
    viewed_at TIMESTAMP NULL DEFAULT …
Run Code Online (Sandbox Code Playgroud)

php mysql laravel laravel-4

-1
推荐指数
1
解决办法
3010
查看次数