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