2017-02-01 3 views
0

Я использую сеансы Php для распознавания пользователей при входе в систему с помощью электронной почты и пароля. Он работает нормально. Будучи новичком в Php, мне нужно знать, как получить доступ к их ProfileName с помощью Session. Код, который я использую в header.php, возвращает пустое, без имени.Как получить доступ к переменным в сеансе PHP

header.php

<?php 
     $info = myprofile($_SESSION['memberid']); 
$title = $myprofile.' - '.stripslashes($info['ProfileName']); 
echo $_SESSION[$title];?> 

profile.php

<?php 
require_once "../includes/config.php"; 
if(!$_SESSION['memberid'] || $_SESSION['memberid']==0){ 
    header('Location: '.$base_url.'signin.php'); 
    exit(); 
    } 
require_once "../includes/database.php"; 
require_once "../includes/functions.php"; 
$info = myprofile($_SESSION['memberid']); 
$title = $myprofile.' - '.stripslashes($info['ProfileName']); 
require_once '../includes/header.php'; 
$ismenu = 2; 
?> 

signin.php

<?php 
require_once "includes/config.php"; 
require_once "includes/database.php"; 
require_once "includes/functions.php"; 
if($_SERVER['REQUEST_METHOD']=='POST' && isset($_POST['smsignin'])){ 
    $err = 0; 
    if(empty($_POST['email'])){ 
     $err_e = $emailnull; 
     $err = 1; 
     } 
    elseif(!valid_email(trim($_POST['email']))){ 
     $err_e = $emailinvalid; 
     $err = 1; 
     } 
    elseif(empty($_POST['password'])){ 
     $err_p = $passnull; 
     $err = 1; 
     } 
    elseif($_SESSION['loginfalse']>=$totallogin){ 
     if(empty($_POST['captcha'])){ 
      $err_c = $captchanull; 
      $err = 1; 
      } 
     elseif(strlen($_POST['captcha'])<6){ 
      $err_c = $datashort; 
      $err = 1; 
      } 
     elseif($_POST['captcha'] != $_SESSION['encoded_captcha']){ 
      $err_c = $captnomatch; 
      $err = 1; 
      } 
     } 
    if(intval($err)==0){ 
     $data = array(mysql_real_escape_string(trim($_POST['email'])), mysql_real_escape_string(trim($_POST['password']))); 
     $result = UserLogin($data); 
     if($result==0) 
      $error = $errordata; 
     elseif($result==-1){ 
      $_SESSION['loginfalse'] = isset($_SESSION['loginfalse'])?$_SESSION['loginfalse']+1:1; 
      $error = $mailpassnotmatch; 
      } 
     else{ 
      $banned = chkBannedMe($result); 
      if(count($banned)>0) 
       $error = str_replace('<lydo>', $banned[0], str_replace('<ngay>', date('H:i:s d-m-Y', strtotime($banned[1])), str_replace('<link>', '<a href="'.$base_url.'contact.php">', str_replace('</link>', '</a>', $bannedacc)))); 
      else{ 
       $date = date("Y-m-d H:i:s"); 
       updLogon($result); 
       UpdateVIPStatus($result, $date); 
       IsVIP($result); 
       mysql_close(); 
       unset($_SESSION['loginfalse']); 
       $_SESSION['memberid'] = $result; 
       $_SESSION['memberemail'] = $_POST['email']; 
       $direct = $_SESSION['direct']?$_SESSION['direct']:$base_url.'members/myaccount.php'; 
       header('Location: '.$direct); 
       exit(); 
       } 
      } 
     } 
    } 
$title = $memberlogin; 
?> 
+0

Смотрите также [Почему я не должен использовать функции mysql_ * в PHP?] (http://stackoverflow.com/q/12859942/1255289) – miken32

+1

Перед использованием сеансов вам нужно вызвать 'session_start()'. – miken32

+0

Если ответ решил вашу проблему, подумайте о принятии ответа. Вот как http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work, затем вернитесь сюда и сделайте то же самое с отметкой галочки/галочки, пока он не станет зеленым. Это сообщает об этом сообществу, решение найдено. В противном случае другие могут подумать, что вопрос все еще открыт и может захотеть опубликовать (более) ответы. Вы будете зарабатывать очки, а другие будут рады помочь вам. * Добро пожаловать в Stack! * –

ответ

2

добавить следующую треску е поверх ваших PHP файлов

if (session_status() == PHP_SESSION_NONE) { 
    session_start(); 
} 

, то вы должны быть в состоянии получить доступ ко всему через

$_SESSION['ProfileName']; 

, чтобы просмотреть все доступные переменные сделать

var_dump($_SESSION); 
Смежные вопросы