我們的網站即時創建文件,將用戶指定的數據呈現給網絡世界。發佈到動態創建的文件
在每個這樣的'_present.php'文件中都有一個需要發佈到自身的表單 - 唯一的問題是,該文件是基於上傳的用戶數據動態創建的,文件名也有些隨意。
具體的過程
1) a 'standard' file called _present.php has a common form "TheForm" in it
2) this file, _present.php, is copied to Yf9iZ17a.php (for example) when
the user uploads data -- and from that point, Yf9iZ17a.php presents
that user's just-uploaded data
3) and "TheForm" is inside this Yf9iZ17a.php, which again is just a copy of
_present.php, but modified to handle the user's just-uploaded data
很簡單。 _present.php裏面有「TheForm」;用戶上傳他們的數據;我們將_present.php複製到該用戶數據的文件名爲 。
問題是 - 我們需要TheForm發佈自己的 文件名,這是動態創建的。
換句話說,這是不夠的:
<form name="TheForm" method="post" action="_present.php">
然而,這會工作:
<form name="TheForm" method="post" action="Yf9iZ17a.php">
但我們可以從 「Yf9iZ17a.php」 不硬編碼形式的HTML,因爲 - 在運行時動態地創建文件名爲 。
這是一個失敗,我們已經成功地執行:
<form name="TheForm" method="post" action="<?php echo __FILE__ ; ?>">
A「查看頁面源代碼」果然證明了「PHP的echo FILE」正確回聲的 完整路徑(不是相對路徑,則完整路徑)到Yf9iZ17a.php。
那麼這將無法正常工作。給瀏覽器一個完全合格的路徑名到一個文件 - 在服務器上的一個文件 - 那麼爲什麼你會想要做到這一點,除非 你抓住吸管。所以這是一個失敗。
肯定會出現動態創建的文件名,其內部表單必須發佈到這些文件名 - 解決此問題的最佳方法是什麼?
差不多就是這樣。問題是,每個註冊用戶都會得到一個子文件夾,然後他們動態創建的數據文件(基於_present.php)進入該文件夾,所以basename()僅在動態創建的文件位於站點的根文件夾中時才起作用。雖然我們的數據庫保留了用戶子文件夾的相對路徑,但我需要調用一個php函數作爲窗體的「動作」並回顯php函數調用的返回值 - 例如:action =「echo myPhpFuncToGetsubfolder。basename( __FILE__)或者什麼東西甚至可以調用一個php函數作爲表單的'action =' – wantTheBest 2012-02-24 02:55:04
你可以修剪__FILE__絕對路徑到你所需要的深度 - 或者替換'<?php echo basename( __FILE__);?>'用更復雜的表達式,計算用戶子文件夾以及 – raina77ow 2012-02-24 02:58:31
是的,它發生在我身上,你提出了basename(),這是一個調用php函數的例子,我想我應該能夠在窗體中調用任何函數作爲我的action =「」,我將在_present.php中編寫一個php函數,它構造文件的相對路徑,然後在窗體上的action =「」處回顯返回值。謝謝你的幫助。 – wantTheBest 2012-02-24 03:03:14