PHP函数调用直接为HTML表单操作

问题描述:

我发现下面的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有什么缺点吗?

PHP函数不会被称为HTML表单动作。

实际上PHP函数将在之前执行服务器将表单发送到您的浏览器,因此表单的行为将是由foo函数打印的值(如果有的话)。

只需打开从服务器收到的网页源代码,就不会再看到PHP代码。

+0

谢谢分形理论澄清。经过一番调查发现,我的代码实际上并没有工作,正如你所建议的。 – Philiphorst 2014-09-04 13:14:53

这不行。在将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