会话变量中的问题

issue in 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";

    }

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

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

为什么还要设置 userN? $_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'];

?>  

它应该包含 user/level 和您需要的任何其他信息。