ユーザーが携帯電話に .vcf ファイルをダウンロードできる Web サイトを作成しています。ファイルはブラウザーには保存されませんが、データベースに保存されたデータを使用して生成されます。
ファイル 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 Phone) から同じことをしようとすると、動作しません。
コンテンツが「not ok」のファイル abc.html (abc は私の php ファイルの名前) を作成することもあれば、コンテンツが「not ok」のファイル contact.vcf/contact.html を作成することもあります。 ok」は、セッション変数が何らかの値と等しくない場合に出力する行です)
パソコンでは動くのにスマホでは動かない理由がわかりません。助けてください。モバイル ブラウザから機能しない場合、私の Web サイトの全体的なアイデアが失われます。ありがとう!
編集:
私はどういうわけか問題を部分的に解決しました.ループの exit() の直前に、私は session_destroy(); を使用していました。さて、理由はわかりませんが、すべてが完了した後、コントロールが再びトップに移動し、「if」条件を確認すると、セッションが破棄されたため、条件が真になり、「私のファイルの出力として、大丈夫ではありません」。
session_destroy() を削除すると、正常に動作します (携帯電話でも)。
コントロールがトップに戻る理由はありますか?