使用表单输入用php构建url。

使用表单输入用php构建url。,php,forms,Php,Forms,我试图创建一个表单,用户可以在其中输入他们的id(用户名),它将作为变量附加到我的php脚本中使用的url中。这就是我所拥有的 <?php if(isset($_POST['submit'])) { $id = $_POST['id']; echo 'http://example.com/default.asp?action=data&id=$id'; } ?> <form method="post" action="<? echo $_SERVE

我试图创建一个表单,用户可以在其中输入他们的id(用户名),它将作为变量附加到我的php脚本中使用的url中。这就是我所拥有的

<?php
if(isset($_POST['submit']))
{
    $id = $_POST['id'];
    echo 'http://example.com/default.asp?action=data&id=$id';
}
?>
<form method="post" action="<? echo $_SERVER['PHP_SELF']; ?>">
   <input type="text" name="id"><br>
   <input type="submit" name="submit" value="Submit Form"><br>
</form> 


单引号字符串不会插入变量。

单引号不会插入变量,可以使用双引号,也可以使用字符串连接。。。。三种选择:

    echo "http://example.com/default.asp?action=data&id=".$id;

这一行:

echo 'http://example.com/default.asp?action=data&id=$id';
应该是

echo 'http://example.com/default.asp?action=data&id='.$id;

如果在PHP中使用带字符串的单引号,它将打印字符串中的任何内容,而不计算任何内容(即不计算任何变量)。因此,您可以使用双引号或像上面那样附加变量。

为什么不使用
GET
方法并为其他参数添加隐藏字段?对echo使用双引号。或者使用单引号并将$id连接到url字符串。你应该在google上查找跨站点脚本或XSS,目前在10行代码内有2种攻击途径…修复了。。。对不起,我打字太快了:(
    echo 'http://example.com/default.asp?action=data&id='.$id;
echo 'http://example.com/default.asp?action=data&id=$id';
echo 'http://example.com/default.asp?action=data&id='.$id;