小编dar*_*unk的帖子

如何检测用户是否为同一会话打开两个选项卡?

我已经完成了使用CakePHP完成的预订申请,该申请涉及结账页面前的几个步骤.在这些步骤之间,我将信息存储在会话中.

它是如何工作的,第1步要求他们填写他们的信息.转到步骤2时,步骤1中的信息将保存到会话对象中.当他们继续进行其他步骤时,重复该过程.结账时,所有数据都会保存到数据库中.

如果用户在浏览器中打开一个应用程序实例,那么一切都很有效.但是一旦他们在同一浏览器中为同一个应用程序打开了另一个页面或另一个选项卡,就会出现问题.

假设他们在选项卡A和选项卡B中打开了两个应用程序实例.在选项卡A中,他们在步骤1中输入了详细信息,然后继续执行步骤2.然后用户在选项卡B中执行相同的操作.

在用户执行结帐时的最后一步,选项卡A中的信息与选项卡B中的信息相同.

现在,我只能认为最好的方法是阻止用户在两个浏览器实例中打开相同的应用程序.

当他们尝试在标签B中打开另一个实例时,有没有办法检测并提示用户先在标签A中完成预订表格?

php session tabs

18
推荐指数
1
解决办法
3万
查看次数

PHP 导出带有 BOM 的 CSV UTF-8 不起作用

我在导出带有中文字符的 UTF-8 CSV 时遇到了困难,在 Windows Excel 上显示乱码。我正在使用 PHP,并且已经添加了 BOM 字节标记并尝试了编码,但根本没有运气。

它们在 Notepad++、Google Spreadsheet 甚至 Mac Numbers 上都可以正常打开。但 Excel 上不行,这是客户的要求。使用 Notepad++ 打开时,编码显示为 UTF-8。如果我手动将其更改为 UTF-8 并保存,该文件在 Excel 上可以正常打开。

似乎 BOM 字节标记没有保存在输出中,因为 Notepad++ 总是将其检测为没有 BOM 的 UTF-8。

此外,CSV 不会保存在服务器上。数据从DB中检索,然后直接导出。

这是我的代码:

// Setup headers
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Content-Description: File Transfer');
header("Content-type: text/csv");
header("Content-disposition: filename=".$filename.".csv");
header("Pragma: no-cache");

// First Method
$fp = fopen('php://output', 'w');
// Add BOM to fix UTF-8 in Excel, but doesn't work
fputs($fp, chr(0xEF) . chr(0xBB) . chr(0xBF) );

if ($fp) …
Run Code Online (Sandbox Code Playgroud)

php csv excel encoding utf-8

7
推荐指数
3
解决办法
9030
查看次数

标签 统计

php ×2

csv ×1

encoding ×1

excel ×1

session ×1

tabs ×1

utf-8 ×1