0

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

例子

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

2 回答 2

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'] ?>
于 2013-04-05T05:02:26.670 回答
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 } ?>
于 2013-04-05T05:01:13.527 回答