php 表单提交给本页

时间:2015-12-15
在做php表单提交时,我们会看到表单页面代码和php处理表单数据代码在同一个页面,这个改如何实现呢,其实很简单,只需要将表单的action设置为空或者设置为本页面地址即可。请看下面实例。
<?php 
if (isset($_POST['action']) && $_POST['action'] == 'submitted') { 
    print '<pre>'; 

    print_r($_POST); 
    print '<a href="'. $_SERVER['PHP_SELF'] .'">Please try again</a>'; 

    print '</pre>'; 
} else { 
?> 
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST"> 
    Name:  <input type="text" name="personal[name]"><br> 
    Email: <input type="text" name="personal[email]"><br> 
    Beer: <br> 
    <select multiple name="beer[]"> 
        <option value="warthog">Warthog 
        <option value="guinness">Guinness 
    </select><br> 
    <input type="hidden" name="action" value="submitted"> 
    <input type="submit" name="submit" value="submit me!"> 
</form> 
<?php 
} 
?>  

上面的代码就实现了将表单提交给本页面。这里使用了服务器变量$_SERVER['PHP_SELF']获取当前页面的URL地址,并将其赋给表单的Action属性。这里使用了一个小小的技巧用以服务器在收到该URL请求是确定是POST请求还是GET请求。就是在表单中增加一个隐藏的变量,在处理请求时我们通过isset函数检测是否设置了这个隐藏变量,由此判断出该请求使用了POST还是GET方法。