2012-03-12 12 views
1

これについて多くの質問があることは知っていますが、モバイル固有のものは何も見つかりませんでした。モバイルでIframe経由でダウンロードを強制する

i「がメイン」ページでPHPを使用することはできません特定の理由から

、私はjQueryの$経由でそれを行っているが

それはそれは、ダウンロードに来るときを除いて、正常に動作しますが、私は1x1のIFRAMEを使用に.getダウンロード作品

<? 

$email = mysql_escape_string($_GET['email']); 
$code = mysql_escape_string($_GET['code']); 

include('xxxxx.php'); 
mysql_select_db($xxxxx); 
$now = strtotime(date('c')); 

$sql = mysql_query("SELECT * FROM `xxxxx` WHERE `email` = '$email' AND `code` = '$code'"); 
if(mysql_num_rows($sql) == 0) { echo "<script>alert('Incorrect Code');</script>"; die; } 
$query = mysql_fetch_object($sql); 
if(strtotime($query->expires) > $now) { 

    $filename = "theused.wav"; 

    header('Content-type: audio/x-wav'); 
    header('Content-Disposition: attachment; filename="' . basename($filename) . '"'); 
    header('Content-Transfer-Encoding: binary'); 
    readfile('http://www.something.co.uk/xxx/' . $filename); 
} else { 
    echo "<script>alert('Code Expired');</script>"; die; 
} 
?> 

:正常に動作しますダウンロードは、(私はATM上でテストしている2のみ)はiframeによって呼び出されるページの

私のコードiphone + S2ギャラクシーを除く..開始しますこのページに直接アクセスしても問題ありません。iFrameで開いたときではありません。

さらに怪我をする...ちょうどwindow.locationをやってみたところ、wifiに接続すると失敗し、ダウンロードがうまくいかなかったと3gでうまくいくようです。

+0

あなたのウェブサーバーの$ファイル名はローカルですか?この場合、完全なURLを使用しないでください。単純なローカルファイルの入出力操作がすべて必要なときに、もう1つのhTTP要求を強制的に実行する必要があります。 –

+0

私は最も愚かな店頭を一緒に置くのいずれかを使用する必要があります。私は絶対的な道にはほとんどすべてを持っている。これは私の問題を解決するものではありません –

答えて

0

おそらく、(file_exists($ path_to_file))を確認して、絶対パスが期待通りであることを確認することができます。そのすべてがうまくいくならば、それはファイルを見つけることもできるが、ヘッダーは携帯電話では機能していないように見える。これは、モバイルブラウザでこれらのヘッダーを設定できないことを示している可能性があります。

このような場合は、別の方法を検討する必要があります。

+0

私は直接ページに行くと、それはちょっと見知らぬ人のノートでは、ダウンロードしてwifi(ダウンロードではダウンロードが失敗すると言う)を台無しにするでしょう しかし3g以上それはファイル名などをピックアップします –

+0

私はこの問題が接続タイプ(3GまたはWiFi)によって引き起こされているとは思わない、私はそれがあなたのウェブサイトの範囲とあなたからそれに到達しようとしているさまざまな方法によって引き起こされたと思う携帯電話。 あなたのコードが相対パスを解釈する方法に違いがある、あなたが使用している3Gアドレスの代わりにローカルIP(ドメイン名など)を使用しようとしている可能性があります。 –