小编Mac*_*ski的帖子

如何在POST + HTTP重定向后向用户显示消息

我正在使用PRG模式来避免多个表单提交.然而,它有一个严重的缺点 - 你不能简单地echo向用户发出确认消息(显然,用户不会看到该页面,他将被重定向到另一个页面).

这个问题的解决方案是什么?我知道其中两个,但它们似乎都不完美.

  • 使用自定义重定向网址,例如:http://example.com/?msg=data-saved.它是无国籍的,所以我认为它非常可靠.但是当用户复制链接,书签等时会产生问题.
  • 存储会话变量/ cookie,并在每次加载页面时检查它.如果已设置,请将其清除并显示消息.看起来不错,但我不确定这个 - 它非常依赖于cookie,它有点复杂.

或许还有其他方法我不知道?会话和URL参数的某些组合?不知道.

你认为最好的方法是什么?哪一个缺点最少?优缺点都有什么?

error-handling session user-interface redirect post-redirect-get

21
推荐指数
3
解决办法
3896
查看次数

如何使用PHP设置Beanstalkd

最近我一直在研究使用Bean的Beanstalkd.我已经学到了很多,但对服务器上的设置有一些疑问等.

以下是我看到它的工作方式:

  1. 我在我的Ubuntu服务器上安装了Beanstalkd和任何依赖项(例如libevent).然后我启动Beanstalkd守护程序(它应该基本上一直运行).
  2. 在我的网站的某个地方(例如当用户执行某些操作等)时,任务会被添加到Beanstalkd队列中的各个管道中.
  3. 我有一个bash脚本(例如下面的一个),它作为一个基本上执行PHP脚本的守护进程运行.

    #!/bin/sh
    php worker.php
    
    Run Code Online (Sandbox Code Playgroud)

4)worker脚本会有类似的东西来执行排队的任务:

while(1) {
  $job = $this->pheanstalk->watch('test')->ignore('default')->reserve();
  $job_encoded = json_decode($job->getData(), false);
  $done_jobs[] = $job_encoded;
  $this->log('job:'.print_r($job_encoded, 1));
  $this->pheanstalk->delete($job);
}
Run Code Online (Sandbox Code Playgroud)

现在这里是基于上述设置的问题(如果我错了,请纠正我):

  1. 假设我有将RSS源导入数据库或其他任务的任务.如果10个用户同时执行此操作,则他们将全部排在"测试"管中.但是,它们只能一次执行一个.将10个不同的管同时执行会更好吗?

  2. 如果我确实需要更多电子管,那么这是否也意味着我需要10个工作脚本?除了watch()函数中的字符串文字之外,每个管都有一个基本相同的代码同时运行.

  3. 如果我将该脚本作为守护进程运行,那该怎么办?它会不断执行worker.php脚本吗?该脚本在理论上循环直到队列为空,所以不应该只启动一次吗?守护进程如何决定执行worker.php的频率?这只是一个场景吗?

谢谢!

php bash daemon message-queue beanstalkd

12
推荐指数
1
解决办法
7144
查看次数

安全动态包含

我一直在我的网站上使用这个PHP动态包含代码.但我认为这不安全,如何编写更安全,更好的代码来代替这个:

$page = (empty($_GET['page'])) ? '' : $_GET['page'].".html";

if (empty($page))
{ 
 $page = 'index.html';
}

else
 {
 $page = $page;

 }

 include($page);
Run Code Online (Sandbox Code Playgroud)

非常感谢你

php security

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