2012-02-27 52 views
0

我要麼使用不正確的語法,要麼用錯誤的方法來解決這個問題。PHP對於每個下載文件

在引用此php文件的html文檔中,有一個簡單的複選框列表。用戶選中複選框並點擊提交。然後啓動提示用戶運行或保存每個文件的目標。如果我勾選了test1.txt,test2.txt和test3.txt,則應該有一個彈出窗口(假設瀏覽器是IE)。

問題是隻有最後一個選中標記的項被下載 - 其餘的不是。我想爲每個找到的文件打開一個彈出窗口,但它沒有任何作用。如果我使用echo $ filename,那麼它會正確顯示我勾選的每個條目,以便php腳本正確地顯示多個文件名。有人能指引我朝着正確的方向嗎?我很確定window.open參數中的$ filename不在正確的語法中使用。

下面是腳本:

<?php 

foreach($_POST['files'] as $filename) { 

echo "<SCRIPT language=\"JavaScript1.2\">function openwindow() {window.open ('$filename', 'execute','location=1,status=1,scrollbars=1, width=500,height=500');}</script><body onload=\"openwindow()\"></body>"; 

    } 

?> 
+0

你只是反覆改寫'了OpenWindow()用新定義'函數。你也不會有多個''元素。 – ceejayoz 2012-02-27 20:08:11

+0

會fopen()是一個更好的選擇?我嘗試了它,並一直在獲取權限錯誤。測試目錄設置爲777,php ini文件中的fopen選項設置爲ON(啓用)。這需要比使用javascript更好的方式嗎? – 2012-02-27 20:09:37

+0

呃,'fopen'和'window.open'做了大不相同的事情。 'fopen'在用戶的瀏覽器上不會做任何事情。它在服務器端 – ceejayoz 2012-02-27 20:10:12

回答

1

應工作

<html> 
<head> 
<script> 
function openwindow(filename) {window.open (filename, 'execute','location=1,status=1,scrollbars=1, width=500,height=500');} 

<?php 
foreach($_POST['files'] as $filename) { 

echo "openwindow('".$filename."');"; 

} 
?> 

</script> 
</head> 
+0

'