PHP表单使用$ _SERVER [“PHP_SELF”]提交但从网址中删除.php

时间:2014-11-26 21:23:18

标签: php forms

我正在开发一个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]

3 个答案:

答案 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定义一个变量,然后使用基本名切断文件扩展名。