2015-01-07 4 views
0

페이지간에 세션 값을 전달하는 데 문제가 있습니다.세션 값을 지우려면 세션 값을 다른 페이지로 옮기지 말아야합니다.

저는이 문제로 3 일 동안 고생했습니다.

이 문제를 극복하도록 도와주세요.

index.php (로그인 페이지) :

// initially declaring a variable with null value 

!! include "conn.php"; 
    @session_start(); 
    if(isset($_SESSION['uname'])) 
    { 
    $_SESSION['uname'] = " "; 
    } 
    else 
    { 
    $_SESSION['uname'] = " "; 
    } 
?> 
//later assigning the value 
$usrname = $_POST['uname']; 
    $pass = $_POST['pass']; 
    $chk = mysqli_query($con,"select * from members WHERE username='$usrname'"); 
    while($value = mysqli_fetch_array($chk)) 
    { 
     $realpassword = $value['password']; 
     $_SESSION['uname'] = $_POST['uname']; 
    } 
    if(!isset($realpassword)) 
    { 
     $realpassword = ""; 
    } 
    if($realpassword == $pass) 
    { 
     echo "<script>window.location.assign('dashboard.php');</script>"; 
    } 

Dashboard.php (대시 보드) :

3 페이지에서
// In dashboard 

@session_start(); 
include "conn.php"; 
if(isset($_SESSION['uname'])&&$_SESSION['uname']!="") 
{ 
$uname =$_SESSION['uname']; 
} 
else{ 
echo "<script>window.location.assign('http://www.website.com');</script>"; 
} 

/// This page working fine 

:

/// Session value not carried into this page .. when this page loads automatically logouts and redirect into home page 

session_start(); 
include "conn.php"; 
if(!isset($_SESSION['uname'])&&$_SESSION['uname']=="") 
{ 
    echo "<script>window.location.assign('http://www.website.com');</script>"; 
} 
$uname =$_SESSION['uname']; 
+0

여전히로 리디렉션하기 전에 설정 세션 변수 : echo "window.location.assign ('dashboard.php');" ? – MadDokMike

+2

conent가 전송되기 전에 session_start()를 사용하십시오! * @ session_start(); *는 좋은 습관이 아닙니다. – donald123

+5

'@'은 좋은 연습이 아닙니다. 그것은 당신의 귀에 손가락을 채우고 "lalalalala는 당신의 말을들을 수 없습니다"라고 코딩하는 것과 같습니다. –

답변

3

당신이 쓴 :

if(!isset($_SESSION['uname']) && $_SESSION['uname'] == "") 
{ 
echo "<script>window.location.assign('http://www.website.com');</script>"; 
} 

는 수 (OR하지 AND)해야 :

if(!isset($_SESSION['uname']) OR $_SESSION['uname']==""){ 
    echo "<script>window.location.assign('http://www.website.com');</script>"; 
} 
0

의사 코드로 귀하의 코드

의 index.php :

1 start a session 
2 if uname is set in session, set it to one space 
3 otherwise, set it to one space 

4 get data from db 
5 if we have data, set uname in session to POST data uname 

"3 페이지"에서 :

1 if uname is NOT set in session OR uname in session is empty string 
2  logoff 
3 otherwise 
4  proceed ... 

다른 답변 및 2) - 3) 색인에서 "페이지 3"의 1)의 조건은 사실이 아닙니다. 그리고 대시 보드에서, 당신은 "삭제"를 $_SESSION['uname'] 한 공간 " "의 결과 및 빈 문자열을 검사 유사한 문제를 볼 수 있습니다 ""

변경의 index.php :

include "conn.php"; 
@session_start(); 

unset($_SESSION['uname']); // delete previous values unconditionally (!)