会话变量中的问题

时间:2015-05-16 01:41:16

标签: php session session-variables

我是php的新手 我想使用通过<form method="POST" action="formdata.php">发送到 formdata.php 的表单数据,用于名为 main.php的另一个文件。为此我在 formdata.php

中创建了会话变量

她的代码是 formdata.php

<?php
session_start();   
include_once("connect.php");

$n=$_POST['name'];
$p=$_POST['password'];
$sql=mysql_query**strong text**("SELECT * FROM member WHERE `userName`='$n' AND `password`='$p'");

if(mysql_num_rows($sql)==1){
    $_SESSION['user']=mysql_fetch_array(mysql_query("SELECT * FROM member WHERE `userName`='$n' AND `password`='$p'"));

if($_SESSION['user']){ 
    $user=$_SESSION['user'];

    $_SESSION['userN']="$user(['userName'])";;
    $_SESSION['level']="$user(['level'])";
    //header("location:mainPage.php");
    echo $user['level'];
    echo $_SESSION['level'];
    }
}

else{
    echo "invalid user name or password" ;
}



?>  

但是当我echo $user['level']; echo $_SESSION['level'];我打印的所有内容都是3Array(['level'])。这里echo $user['level']给出了所需的输出3,但echo $_SESSION['level']给出了一个数组Array(['level'])。我该怎么做才能打印3? 我的下一个问题是我想在另一个 php文件(main.php)中使用此级别值。我认为会话变量是全局的。我可以使用$user['level'],还是应该使用$_SESSION['level']。在 main.php 我想查看条件

if($user['level'] == 3) {
    echo "level 3 user";

    }

1 个答案:

答案 0 :(得分:2)

问题在于这一行:$_SESSION['userN']="$user(['userName'])";;

您设置的$_SESSION['userN']等于$user字符串形式的Array(['username'])

为什么你甚至设置用户N? $_SESSION应该已经包含相关用户,您可以在任何地方检索它以获取内容。

这应该是你所需要的:

<?php
session_start();   
include_once("connect.php");

$n=mysql_escape_string($_POST['name']);
$p=mysql_escape_string($_POST['password']);
$sql = mysql_query("SELECT * FROM member WHERE `userName`='$n' AND `password`='$p'");

if(mysql_num_rows($sql)==1)
{
    //You can reuse the original $sql here. No need to run another query.
    $_SESSION['user']=mysql_fetch_array($sql);
    //If mysql_num_rows($sql) returns 1, $_SESSION['user'] should always be equal to a user array (Which is true).
    header("location:mainPage.php");
}

else{
    echo "invalid user name or password" ;
}



?>  

在另一页(mainPage.php)上,只需使用session_start(),然后查看$_SESSION内的内容。这个脚本应该为您提供一个快速启动:

<?php
session_start();

print_r($_SESSION);
//This will get the level you're looking for
$level = $_SESSION['user']['level'];

?>  

它应包含用户/级别以及您需要的任何其他信息。