2017-02-01 17 views
0

私はPHPセッションを使用して、ユーザーが電子メールとパスワードでログインしたときにそれを認識します。それはうまく動作します。 Phpを初めて使うので、私はSessionでProfileNameにアクセスする方法を知る必要があります。 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

がなぜいけない[参照くださいPHPでmysql_ *関数を使う?](http://stackoverflow.com/q/12859942/1255289) – miken32

+1

セッションを使う前に 'session_start()'を呼び出す必要があります。 – miken32

+0

答えがあなたの問題を解決した場合は、答えを受け入れることを検討してください。 http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-workがここに戻って、ティック/チェックマークで緑色に変わるまで同じことを行う方法があります。これはコミュニティに通知し、解決策が見つかりました。そうでない場合、他の人は質問がまだ開いていると思うかもしれませんし、(もっと)回答を投稿したいかもしれません。あなたはポイントを獲得し、他の人はあなたを助けることを奨励されます。 *スタックへようこそ!* –

答えて

2

次のタラを追加あなたのPHPファイル

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

の上に電子、あなたが利用可能なすべての変数を表示するために

$_SESSION['ProfileName']; 

を通じてすべてにアクセスすることができるはず

var_dump($_SESSION); 
関連する問題