2014-01-15 2 views
-2

사람들이 로그인하기 위해 로그인해야하는 양식을 작성 중입니다. 로그인과 세션 재 연결이 정상적으로 작동합니다. 책과 포럼의 세션에서 수백 가지 변형을 시도해 보았습니다. 원하지 않는 것처럼 보입니다. 너무 단순 해 보입니다. 이것은 이전 페이지의 코드입니다.다른 페이지에서 PHP 세션이 작동하지 않습니다.

<?php 
include("setting.php"); 

$sql="SELECT * FROM $tbl_namem"; 
$result=mysql_query($sql); 

// username and password sent from form 
$myusername=$_POST['myusername']; 
$mypassword=$_POST['mypassword']; 

// To protect MySQL injection 
$myusername = stripslashes($myusername); 
$mypassword = stripslashes($mypassword); 
$myusername = mysql_real_escape_string($myusername); 
$mypassword = mysql_real_escape_string($mypassword); 

$sql="SELECT * FROM $tbl_namem WHERE username='$myusername' and password='$mypassword'"; 
$result=mysql_query($sql); 

// Mysql_num_row is counting table row 
$count=mysql_num_rows($result); 

// If result matched $myusername and $mypassword, table row must be 1 row 

if($count==1){ 

// Register $myusername, $mypassword and redirect to file "login_success.php" 
session_start(); 
$_SESSION["myusername"]; 
$_SESSION["mypassword"]; 
header("location: login_success.php"); 
} 
else { 
echo "Wrong Username or Password Please Try Again"; 
} 
?> 

사용자 이름과 암호가 유효한지 확인하려면 다음 두 페이지를로드하고 싶습니다.

+2

페이지 하단에'session_start();'를 삽입하십시오. 이'$ _SESSION [ "myusername"]; 그리고 다른 하나는 아무 것도 할당받지 못하면 어떤 일도하지 않습니다. '$ _SESSION [ "myusername"] = $ _ POST [ 'myusername']; ' –

+0

다음 페이지의 코드를 볼 수 있습니까? – Aust

+0

암호를 일반 텍스트로 저장하고있는 것을 확인했습니다. 분명히 '아니오'입니다. 그것들은 prepared statement 나 PDO로 mysqli_ * 대신에 mysql_ * 함수와 혼합되어 재앙과 동일 할 것이다. –

답변

0
if(empty($_SESSION['myusername']['mypassword'])) { 
    header("Location: login.php"); 
    die("Redirecting to login.php"); 
} 
$username = $_SESSION['myusername']['mypassword']; 

다음 페이지 TOP에보십시오.

0

는 비밀번호에 의해 보호되는 모든 페이지의 상단이 시도 : 내가 말할 필요가

session_start(); 
if(!isset($_SESSION["myusername"])){ 
header("location: logout.php"); 
die(); 
} 

당신의 세션 변수, $ _SESSION [ "MyUserName 에다"]; 및 $ _SESSION [ "mypassword"]는 비어 있으므로 값을 지정하면 결국 사용할 수 있습니다.

session_start(); 
session_unset(); 
session_destroy(); 

세션을 파괴하고 사용자가 로그 아웃됩니다

는 로그 아웃 메시지를 표시하며 추가 페이지 로그 아웃을 만듭니다.

* * mysqli를 사용하면 사용중인 mysql 함수가 곧 PHP에서 제거 될 것입니다.

0

세션이 제대로 시작된다고 가정하면,이 라인은 diddly - 스쿼트를 수행

$_SESSION["myusername"]; 
$_SESSION["mypassword"]; 
당신은 register_globals에 의존하는, 오래된 구식, 불안, 및 끔찍한 예를 참조 할 수

하는 몇 년 전에 삭제되었으며 그 전에 수년간 사용되지 않았으며 창설 이후로는 끔찍한 생각이었습니다.

기본적으로 변수가 마술처럼 세션/get/post/cookie/etc 배열에서 저장/검색되는 경우 언제든지 안전하지 않으며 오래되었음을 의미하며 입니다.

당신은 실제로 $_SESSION 배열, 예에 해당 변수를 지정해야합니다

말했다
$_SESSION["myusername"] = $myusername; 
$_SESSION["mypassword"] = $mypassword; 

, session_start()는 일반적으로 하나 있어야하지 경우 사용자가 만든 각 페이지의, 첫번째 라인. 이 함수는 백그라운드에서 일부 HTTP 헤더를 설정해야합니다. 코드가 출력을 생성하기 전에 발생하면 경고를 생성하고 세션이 전혀 작동하지 않습니다.

관련 문제