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

时间:2013-04-25 22:30:37

标签: php mysql http url username

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

4 个答案:

答案 0 :(得分:1)

这样做应该没有问题。您只需使用POST方法指向带有GET参数的网址。

所以你发出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>

您要发布的网址也不必是硬编码 - 您可以在提交表单之前始终动态添加用户名。

答案 1 :(得分:0)

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

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

在您使用$_GET['user']

阅读之后(在php文件中)

答案 2 :(得分:0)

由于认证可能发生在单独的脚本中,例如login.php,只需在成功登录时重定向时将用户名附加到配置文件URL即可。

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

答案 3 :(得分:0)

Lix的答案是最好的,也是你应该做的事情,但假设你没有login.php而且出于某些奇怪的原因想直接去profile.php?用户登录,你可以使用这个javascript:

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

您的表单看起来像:

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

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