Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP MySQL中将用户名传递到url_Php_Mysql_Http_Url - Fatal编程技术网

在PHP MySQL中将用户名传递到url

在PHP MySQL中将用户名传递到url,php,mysql,http,url,Php,Mysql,Http,Url,我正在用PHP开发一个网站,允许用户注册并输入一些信息,我想给每个用户一个唯一的URL。当用户登录到他的个人资料时,我只希望用户名被传递到URL(比如www.mysite.com/profile.php?user=username),以便以后重写它。但是,我使用的是$\u POST方法,我担心如果在登录时使用$\u GET,密码也会传递到URL。我该怎么办?在指向的链接或您可以添加的重定向上 <a href="profile.php?user=<?php echo $php_vari

我正在用PHP开发一个网站,允许用户注册并输入一些信息,我想给每个用户一个唯一的URL。当用户登录到他的个人资料时,我只希望用户名被传递到URL(比如
www.mysite.com/profile.php?user=username
),以便以后重写它。但是,我使用的是
$\u POST
方法,我担心如果在登录时使用
$\u GET
,密码也会传递到URL。我该怎么办?

在指向的链接或您可以添加的重定向上

<a href="profile.php?user=<?php echo $php_variable ?>">Link to the profile</a>


在您使用
$\u GET['user']

阅读它(在php文件中)之后,这样做应该不会有什么问题。您可以简单地使用
POST
方法,该方法指向带有
GET
参数的URL

因此,您发出
POST
请求:

www.mysite.com/profile.php?user={$username}
这样,URL中的用户变量就不需要用于身份验证。
考虑这是一个简单的例子:

<form method="post" action="/profile.php?username=hasan">
  <input type="text" name="username" value="hasan" />
  <input type="text" name="password" value="********" />
</form>


您发布到的URL也不必硬编码-您可以在提交表单之前动态添加用户名。

因为身份验证可能在单独的脚本中进行,例如,
login.php
,成功登录后重定向时,只需将用户名附加到配置文件URL即可

header('Location: profile.php?username='.$username);

Lix的答案是最好的,也是您应该做的,但是假设您没有login.php,并且出于某种奇怪的原因想要直接进入profile.php?user登录,您可以使用以下javascript:

<script type="text/javascript">
    $(document).ready(function() {
        $("#theForm").submit(function() {
            $(this).attr("action", $(this).attr("action") + $("#usernameInput").val());
            return true;
        });
    });
</script>

$(文档).ready(函数(){
$(“#theForm”).submit(函数(){
$(this.attr(“action”),$(this.attr(“action”)+$(“#usernameInput”).val());
返回true;
});
});
您的表单看起来像:

<form action="http://www.mysite.com/profile.php?user=" method="post" id="theForm">
    <input type="text" name="usernameInput" id="usernameInput">
    <input type="password" name="passwordInput" id="passwordInput">
    <input type="submit" name="submit" value="Login">
</form>


提交后,您的操作将更改为输入的用户名。但是,您仍然应该有一个重定向到profile.php?user的中介login.php。

您可以告诉您要将哪些参数传递到
$\u GET
$\u POST
。。因此,不要将用户密码传递到
$\u GET
全局变量中。