2015-05-16 2 views
0

Я новичок в php.
Я хочу использовать данные формы, которые посылаются через <form method="POST" action="formdata.php"> в formdata.php использоваться в другой файл под названием main.php. Для этого я ucerated переменных сессий в formdata.phpвыпуск в переменных сеанса

Hers моего код в 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"; 

    } 

ответ

2

Проблема эта линия: $_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']; 

?> 

Он должен содержать пользователь/уровень и любую другую необходимую информацию.

+0

Thank you.It решил мою проблему –