强制表格去website.com/test/而不是website.com?name=

时间:2017-07-21 18:26:59

标签: php html

所以我试图创建一个名称的搜索,但当我点击sumbit按钮时,它会转到websitelink.com?=name=Nighel,但我希望它像这样websitelink.com/Nighel /

是的我已经在使用htacces,这就是为什么?=对我不起作用

我似乎无法弄清楚如何解决这个问题。

这是根据我的日志中的名称进行搜索

我用什么来获取名字

            $name = isset($_GET['playername']) ? $_GET['playername'] : "";

            <div class="ironman-nav">
                <form>
                    <span class="ironman-nav__option">Search for username</span>
                    <input class="ironman-nav__option" type="text" name="playername" placeholder="Username..." autocomplete="off">
                    <input class="ironman-nav__option" type="submit" value="Submit">
                </form>
            </div>

3 个答案:

答案 0 :(得分:1)

您可以使用javascript动态更改表单操作属性,并在按下键或输入表单之前使用输入值来解决此问题。

答案 1 :(得分:0)

客户端不知道您的服务器重写规则

test中的客户website.com/test/只是网址的一部分,因此如果您希望浏览器将表单提交到website.com/test/,请将表单的操作属性设置为{ {1}}

如果您希望website.com/test/部分是可变的,那么您必须动态构建表单的URL。像这样的东西

test

答案 2 :(得分:0)

我将我的回答分为两部分,第一部分解释原始代码的行为,第二部分将包含可能的实现路径。

HTML表单默认情况下会将所有输入标记(<input><textarea><select>等)整理为字典,其中键是节点的名称(属性),值是节点的值(也是属性)。

所以在你的情况下,

$name = isset($_GET['playername']) ? $_GET['playername'] : "";

<div class="ironman-nav">
    <form>
        <span class="ironman-nav__option">Search for username</span>
            <input class="ironman-nav__option" type="text" name="playername" placeholder="Username..." autocomplete="off">
            <input class="ironman-nav__option" type="submit" value="Submit">
     </form>
</div>

提交时将执行以下操作:

  1. 创建包含以下键值对的字典:playername = VALUE_FROM_PLAYERNAME_INPUT
  2. 使用以上参数向当前页面发出GET请求:GET / thispage?playername = VALUE_FROM_PLAYERNAME_INPUT
  3. 由于您希望请求转到/ thispage / VALUE_FROM_PLAYERNAME_INPUT,因此您需要修改该表单的提交事件处理程序。遗憾的是,由于您在加载搜索页面时没有目标用户名,因此会计师不会为您担心(因此表格标签的操作属性无法预先填充目标用户)。 / p>

    var searchForm = document.querySelector('.ironman-nav form');
    searchForm.addEventListener('submit', function(evt) {
        searchForm.action = '' + searchForm.querySelector('input[name="playername"]').value;
    });
    

    我在搜索表单操作中放置一个空字符串的原因是,您需要在操作URL前加上任何内容。例如,如果您的搜索页面和结果页面被称为search.html,那么searchForm.action = 'search.html' + searchForm.querySelector('input[name="playername"]').value;。您必须执行此操作,因为它是相对URL(操作URL不以协议或斜杠开头),因此浏览器将从当前页面的父级开始搜索该资源。