我正在开发一个php表单,它将使用$ _SERVER [" PHP_SELF"]提交到同一页面。 我正在使用带有文件名的.htaccess文件,它将取消.php扩展名,因此我的网址如下所示:http://example.com/contact而不是http://example.com/contact.php ......
当我从表单操作中删除.php时,它刷新页面但是没有记录服务器[' post'] ..
我做错了什么?
用于记录邮件请求是否已发送的php代码
if($_SERVER['REQUEST_METHOD'] == 'POST'){
echo 'POST WORKS';
}
形式
<form action="<?php echo '/'.htmlspecialchars(basename($_SERVER["PHP_SELF"], '.php'), ENT_QUOTES, "utf-8"); ?>" method="post" name="contact-form" id="contact-form" class="contact-form">
<div class="columns-2 float-left">
<label for="name">Your name <span class="required-text orangeText">(Required)</span></label>
<input name="name" id="name" type="text" class="" value=""/>
</div>
<div class="columns-2 float-right margin-0">
<label for="email">Your email <span class="required-text orangeText">(Required)</span></label>
<input name="email" id="email" type="text" class="" value=""/>
</div>
<div class="columns-1 margin-0">
<label for="message">Your message <span class="required-text orangeText">(Required)</span></label>
<textarea name="message" id="message" type="text" class=""></textarea>
</div>
<div class="columns-1 float-right margin-0 submit-btn-container">
<input name="submit" type="submit" id="submitbtn" value="Send your message"/>
</div>
</form>
htaccess的
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/$ $1.php
RewriteRule ^([^/]+)/([^/]+)/$ /$1/$2.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule (.*)$ /$1/ [R=301,L]
答案 0 :(得分:0)
这也是一个问题
echo'/'
不需要那个
答案 1 :(得分:0)
您可以在.htaccess文件中使用它:
#remove php file extension-e.g. https://example.com/file.php will become https://example.com/file
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [NC,L]
答案 2 :(得分:0)
<?php $PHP_SELF = htmlspecialchars($_SERVER['PHP_SELF']); ?>
<form method="post" action="<?php echo basename($PHP_SELF, '.php');?>">
从PHP_SELF定义一个变量,然后使用基本名切断文件扩展名。