我目前有一个登录表单,我想在URL上传递用户名。 它存储在会话变量中。
登录后我在页面上有这个,但它似乎没有用。
$myusername = $_POST['myusername'];
我正在寻找类似的东西:
page.php?myusername=example
登录页面是一个php页面,它连接到另一个检查mySQL数据库登录详细信息的php。
主要部分就是这个(在checklogin php页面上)
// username and password sent from form
$myusername=$_POST['myusername'];
$mypassword=$_POST['mypassword'];
在下一页上,成功登录后我有:
<?
session_start();
header( 'Location: menu.php?myusername=$myusername' ) ;
if(!session_is_registered(myusername)){
header("location:index.php");
}
?>
答案 0 :(得分:6)
编辑,查看您的修改,我会说有关重定向的第一部分看起来像您需要的
但我看到你说
它存储在会话变量中。
您是从php会话格式化URL字符串然后尝试传输在某处获取params吗?如果是,您是否尝试使用session API获取用户名,然后执行php redirect?
session_start();
$username = $_SESSION['myusername'];
// redirect
header("http://your/sites/dir/page.php?myusername=$username");
但基于此评论,您似乎依赖于已弃用的session_register和register_globals:
我想在整个应用程序中传递这个,我确实有 它保存为会话我认为如下: 了session_register( “名为myUsername”);
可能没有使用,因为register_globals已被关闭。你应该把它关掉。您希望避免使用session_register,而是使用$ _SESSION数组。
以下是从网址GET查询中提取“myusername”的方法
要从您想要使用$ _GET的网址提取用户名,即
$myusername = $_GET['myusername'];
您正在查看的网址部分称为“查询字符串”。格式化的参数
?var=value&var2=value2...称为“GET”参数。 $ _POST参数不会在URL本身中传输。您可以阅读有关HTTP GET与POST的更多信息,here。
在会话中保存用户名执行
session_start();
// be sure to VALIDATE your inputs
$_SESSION['myusername'] = $_GET['myusername']; // replace with post if appropriate
答案 1 :(得分:2)
$_POST
参数必须来自POST
形式。如果您在网址中传递参数,那就是GET
请求,这些值将在$_GET
中提供。
$myusername = $_GET['myusername'];
答案 2 :(得分:2)
改为使用$_GET
:
$myusername = $_GET['myusername'];
答案 3 :(得分:2)
page.php?myusername = example使用GET方法。
尝试
$myusername = $_GET['myusername'];
答案 4 :(得分:1)
您可以使用$ _REQUEST查看所有传入的变量。尝试仅为您的GET和POST执行print_r($_REQUEST)
或相同操作。这样您就可以确切地看到正在传递的值,并且您可以确认是否已分配了您尝试将变量设置为的值。
答案 5 :(得分:0)
你确定你没有重定向某个正在剥离url参数的地方吗?例如url_rewrite或任何apache重写条件可能会转储任何查询参数,而不是实际将任何内容传递给PHP脚本。
检查您的网络服务器日志,确保使用完整的URL(带有查询字符串)来调用您的脚本。