在URL中传递PHP变量

时间:2011-04-19 16:27:20

标签: php html

我目前有一个登录表单,我想在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");
    }
    ?>

6 个答案:

答案 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(带有查询字符串)来调用您的脚本。