会话变量中的问题
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 和您需要的任何其他信息。
我是 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 和您需要的任何其他信息。