PHP已添加到提交时查询字符串

时间:2013-04-05 04:54:04

标签: php forms query-string

我有一个文本字段和一个提交按钮,当我点击我要添加到查询字符串的提交按钮时。

例如

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 } ?>

2 个答案:

答案 0 :(得分: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>

还要控制名称冲突。

编辑:

刚出现在我身上的第三个问题<? $_SERVER['name'] ?>无法在$_SERVER['name']内输出数据。

要做到这一点你应该使用

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

// or, works sometimes

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

答案 1 :(得分:0)

替代解决方案

<?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 } ?>