【问题标题】:PHP Added to query string on submitPHP 添加到提交时的查询字符串
【发布时间】:2013-04-05 04:54:03
【问题描述】:

我有一个文本字段和一个提交按钮,当我单击提交按钮时,我想将其添加到我的查询字符串中。

例子

http://www.fakewebsite.com/?name=mike

但我的名字显示为空白

这是我的代码

<?php

if($_POST){


    echo $_POST['name'];




}else{ ?>


    <form action="http://www.fakewebsite.com/test.php?name=<?php $_SERVER['name']; ?>" method="post">
    <label for="name">Name</label><input type="text" name="name" id="name" />
    <input type="submit" name="submit" id="submit" />
    </form>


<?php } ?>

【问题讨论】:

标签: php forms query-string


【解决方案1】:

POST 请求与 GET 请求的不同之处在于它们向服务器发送数据的方式。

使用 get 将数据元素附加到 url(就像您尝试过的那样)。

使用 post 数据元素位于 http 请求的正文中。

这是问题 1:您试图将参数作为 get 参数传递。这可以工作,但不能保证。

另一件事是,您有一个同名的输入字段name。因此,即使第一件事可行,输入字段也会覆盖该数据。

你能做些什么来解决这个问题?您可以添加一个具有不同名称的隐藏输入字段,以将此输入发送回您的服务器:

<form action="foo.php" method="post">
  <input type="hidden" name="other_name" value="<?= $_SERVER['name'] ?>" />
  <input type="text" name="name" value="" />
  <input type="submit" />
</form>

并且还要控制名称冲突。

编辑:

我刚刚出现的第三个问题&lt;? $_SERVER['name'] ?&gt; 没有输出$_SERVER['name'] 内的数据。

要做你应该使用的

<?php echo $_SERVER['name'] ?>

// or, works sometimes

<?= $_SERVER['name'] ?>

【讨论】:

    【解决方案2】:

    替代解决方案

    <?php
    
    if(!empty($_POST)){   
    
        echo $_POST['name'];  
    
    }else{ ?>
    
    
        <form action="http://www.fakewebsite.com/test.php" method="post">
        <label for="name">Name</label><input type="text" value="<?=$_SERVER['name']; ?>" name="name" id="name" />
        <input type="submit" name="submit" id="submit" />
        </form>
    
    
    <?php } ?>
    

    【讨论】:

    • 请记住,在 PHP 中 $_POST 总是存在的。可能想检查它是否为空 if (!empty($_POST));
    • 您复制了提到的问题3。&lt;?php $_SERVER['name'] ?&gt; 不输出任何内容。回声不见了
    猜你喜欢
    • 1970-01-01
    • 2020-04-30
    • 2012-02-02
    • 2022-10-25
    • 1970-01-01
    • 1970-01-01
    • 2016-05-26
    • 2011-08-18
    • 2021-02-17
    相关资源
    最近更新 更多