我正在创建用户可以在其手机上下载 .vcf 文件的网站。该文件未存储在我的浏览器中,而是使用我数据库中存储的数据生成的。
假设我有一个文件 abc.php:
<?php session_start();
?>
<?php
if($_SESSION[abc] != some_value)
{
echo "not ok";
exit();
}
else
{
header("Content-Description: File Transfer");
header("Content-Type: text/vcard");
header("Content-Disposition: attachment; filename=contact.vcf");
echo "All vcard details in the standard vCard format......
.......
.....";
session_destroy();
exit();
}
现在,这在计算机浏览器(IE、chrome 等)上运行得非常好,但是当我尝试从移动浏览器(android、windows 手机)上做同样的事情时,它就不起作用了。
有时它会创建一个内容为“not ok”的文件 abc.html(abc 是我的 php 文件的名称),或者有时它会创建一个内容为“not ok”的文件 contact.vcf/contact.html。(其中“not ok”是我在会话变量不等于某个值时打印的行)
我不明白为什么它可以在计算机上工作,但不能在智能手机上工作。请帮忙。如果它在移动浏览器上不起作用,那么我的网站的整个想法就会丢失!谢谢!
编辑:
我以某种方式部分解决了这个问题。就在我的循环中的 exit() 之前,我正在使用 session_destroy(); 现在,我不知道为什么,但一切都完成后,控件再次进入顶部,检查“if”条件,因为现在会话被破坏,条件变得真实,我得到“不行”作为我的文件中的输出。
现在,当我删除 session_destroy() 时,它工作正常(在手机中也是如此)。
任何想法为什么控制回到顶部?