2014-09-04 60 views
0

我發現下面的HTML表單代碼PHP函數調用直接爲HTML表單操作

<form action="<?php foo(bar)?>" method="post" enctype="multipart/form-data"> 
<label for="file">Filename:</label> 
<input type="file" name="file" id="file"><br> 
<input type="submit" name="submit" value="submit"> 
</form> 

正常工作時foo(bar)是在當前範圍內可用的功能。

我對php和html非常陌生,無法在線找到此功能的任何文檔。使用<?php foo(bar)?>而不是調用腳本文件foo.php有什麼缺點嗎?

回答

1

PHP函數不會被稱爲HTML表單動作。

實際上PHP函數將在之前執行服務器將表單發送到您的瀏覽器,因此表單的行爲將是由foo函數打印的值(如果有的話)。

只需打開從服務器收到的網頁源代碼,就不會再看到PHP代碼。

+0

謝謝分形理論澄清。經過一番調查發現,我的代碼實際上並沒有工作,正如你所建議的。 – Philiphorst 2014-09-04 13:14:53

0

這不行。在將HTML發送到瀏覽器之前,服務器正在執行PHP。

但這裏有一個想法:

<?php 

function foo($bar) 
{ 
    echo $bar; 
} 
if (isset($_POST['func'])){ 
    foo($_POST['file']); 
} 
?> 
<form action="<?php $_SERVER['PHP_SELF'] ?>" method="post" enctype="multipart/form-data"> 
    <label for="file">Filename:</label> 
    <input type="file" name="file" id="file"><br> 
    <input type="hidden" name="func" id="file" value="foo"> 
    <input type="submit" name="submit" value="submit"> 
</form> 

但IMO一個更好的辦法是使用捲曲或其他網址醒目和指向到控制器系統,例如像與框架

+0

謝謝你的解決方案pc-shooter。 – Philiphorst 2014-09-04 13:17:40

+0

似乎還沒有足夠的聲譽。對不起 – Philiphorst 2014-09-04 13:46:12

+0

哦,是的,沒有看到。所以繼續提問;-) – 2014-09-04 13:48:21