PHP:路由时验证表单

时间:2014-05-08 04:27:54

标签: php forms .htaccess

我正在尝试验证通过PHP路由器提交的表单。

我的所有流量都通过htaccess发送到index.php。 to index.php:

RewriteEngine On
RewriteBase /router

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ /divbase/index.php?/$1 [L]

index.php然后提供适当的内容:

<?php

Router::get('/form', function() {
   include 'content/form.php';
});

?>

因此,当您转到example.com/form时,表单页面已加载:

<?php

    $errorMessage = false;

    if (isset($_POST['submit'])) {

        if (!isset($_POST['name']) || $_POST['name']=='') {
            $errorMessage = 'Please enter your name';
        }
        else {
           // do something with the data
           echo "Success!!";
        }
    }
?>

<form method="post">
   <input type="name" value="" name="name" placeholder="Your Name" />
   <input type="submit" name="submit" />
</form>
<p><?php if ($errorMessage) echo $errorMessage; ?></p>

但是,当我尝试在该页面上提交表单时,它是404s。在进行一些故障排除后,看起来PHP认为表单已提交到index.php而不是form.php

我尝试将表单操作设置为:

<?php "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"; ?>

但它仍然是404s。有人对此有任何建议吗?

1 个答案:

答案 0 :(得分:2)

您需要为POST添加另一条路线,例如......

Router::get('/form', function() {
   include 'content/form.php';
});

Router::post('/form', function() {
   echo 'Hello world';
});

您的表单正在使用method =“post”,因此您需要添加POST路由