我正在尝试验证通过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。有人对此有任何建议吗?
答案 0 :(得分:2)
您需要为POST添加另一条路线,例如......
Router::get('/form', function() {
include 'content/form.php';
});
Router::post('/form', function() {
echo 'Hello world';
});
您的表单正在使用method =“post”,因此您需要添加POST路由