2009-06-07 2 views
0

이것은 약간 멍청한 질문이지만 .. 모든 사람에게 때때로 발생합니다.PHP : 사용자 로그인 시스템/사용자가 페이지에 액세스했는지 확인

나는 $ _SESSION으로 일한 적이 없으므로 일단 로그인 시스템이 필요하다면 Dreamweaver를 사용하여 저를 대신해 드리겠습니다.

사용자 이름과 암호를 묻는 페이지가 있습니다. 그리고 loggin이 성공하면 다른 페이지로갑니다. 그렇지 않으면 로그인 페이지에 표시됩니다.

한때 작동했던 로그인 시스템이 현재 작동하지 않는 문제입니다. 그는 로그인 페이지에 있기 때문에. 그리고 나는 "echo $ _SESSION [ 'MM_Username'];"

아무 것도 반환되지 않았습니다. 그래서 나는 그것이 내가 접근을위한 쿠키를 만들고 있지 않다는 것을 의미한다고 생각한다 ??

오른쪽? 세션의 반향이 뭔가를 표시한다고 생각합니다.

글쎄, 도움이 필요한가요? 어쩌면 간단한 로그인 시스템 일 수도 있습니다. Dreamweaver 로그인이 아닙니다.

로그인 페이지에 사용자 로그인 코드를 게시합니다.

// *** Validate request to login to this site. 
if (!isset($_SESSION)) { 
    session_start(); 
} 

$loginFormAction = $_SERVER['PHP_SELF']; 
if (isset($_GET['accesscheck'])) { 
    $_SESSION['PrevUrl'] = $_GET['accesscheck']; 
} 

if (isset($_POST['username'])) { 
    $loginUsername=$_POST['username']; 
    $password=$_POST['passe']; 
    $MM_fldUserAuthorization = "power"; 
    $MM_redirectLoginSuccess = WWW."/administrador"; 
    $MM_redirectLoginFailed = WWW."/login"; 
    $MM_redirecttoReferrer = false; 
    mysql_select_db($database_dbconnect, $dbconnect); 

    $LoginRS__query=sprintf("SELECT username, passwd, power FROM `user` WHERE username=%s AND passwd=%s", 
    GetSQLValueString($loginUsername, "text"), GetSQLValueString($password, "text")); 

    $LoginRS = mysql_query($LoginRS__query, $dbconnect) or die(mysql_error()); 
    $loginFoundUser = mysql_num_rows($LoginRS); 
    if ($loginFoundUser) { 

    $loginStrGroup = mysql_result($LoginRS,0,'power'); 

    //declare two session variables and assign them 
    $_SESSION['MM_Username'] = $loginUsername; 
    $_SESSION['MM_UserGroup'] = $loginStrGroup;  

    if (isset($_SESSION['PrevUrl']) && false) { 
     $MM_redirectLoginSuccess = $_SESSION['PrevUrl']; 
    } 
    header("Location: " . $MM_redirectLoginSuccess); 
    } 
    else { 
    header("Location: ". $MM_redirectLoginFailed); 
    } 
} 

제가 일했습니다. $ MM_redirectLoginSuccess 및 $ MM_redirectLoginFailed에있는 변경 내용과 데이터베이스에서 변경된 내용이 없습니다.

피곤하면 약간. 그냥 간단한 로그인 사용자 코드를 게시, 내가 찾은 몇 가지지만, 좋은 것들. 나는 나머지를한다.

당신은 그것의 wierd가 무엇인지 아십니까? 그것은 효과가 있었다. 나는 컴퓨터를 껐다가 껐다가 돌아 왔을 때 효과가 없었다.

다시 한번 감사드립니다.

+0

질문에 대한 답변은 이미 있지만 미래에 대한 호의입니다. 줄 단위로 디버깅 할 수있는 IDE로 전환하십시오. NetBeans를 Xdebug와 함께 사용합니다. 로컬 변수와 모든 것을 보여줍니다. –

+0

제안 친구에게 감사드립니다. 나는 이미 Netbeans를 시험해 보았다. 그러나 나는 정보에 감사드립니다. –

답변

2

데이터베이스를 실행 중입니까?

변수를 디버깅 할 때 var_dump ($ var)를 사용하면 디버깅중인 변수의 유형 (특히 null 인 경우)을 보게됩니다.

$ LoginRS__query - 이것을 echo하고 어떤 쿼리가 생성되는지보십시오. 자신을 통해 데이터베이스를 실행하고 어떤 일이 발생하는지 확인하십시오.

header ("Location :". $ MM_redirectLoginSuccess); - 데이터가 전송 된 경우 (변수가 에코 된 경우 등) 헤더가 이미 전송되었으므로 사용자를 리디렉션 할 수 없습니다.

0

도움 주셔서 감사합니다. 어떤 종류의 갈등으로, 어느 쪽이, 내가 그것에 소비 할 많은 시간을 가지지 않았는지, 나는 그것을 빨리 작동시켜야했다.

나는이 코드를 게시했다. 내가 게시 한 첫 번째 코드에는 사용자 전원 검사가 포함되어 있는데, 일단 관리자 패널이 완료되면 사용할 수 있기 때문에 사용하지 않았다.

그 부분을 제거하고 확인되었습니다.

// *** Validate request to login to this site. 
if (!isset($_SESSION)) { 
    session_start(); 
} 

$loginFormAction = $_SERVER['PHP_SELF']; 
if (isset($_GET['accesscheck'])) { 
    $_SESSION['PrevUrl'] = $_GET['accesscheck']; 
} 

if (isset($_POST['username'])) { 
    $loginUsername=$_POST['username']; 
    $password=$_POST['passe']; 
    $MM_fldUserAuthorization = ""; 
    $MM_redirectLoginSuccess = WWW."/administrador"; 
    $MM_redirectLoginFailed = WWW."/login"; 
    $MM_redirecttoReferrer = false; 
    mysql_select_db($database_conn, $dbconnect); 

    $LoginRS__query=sprintf("SELECT username, passwd FROM `user` WHERE username=%s AND passwd=%s", 
    GetSQLValueString($loginUsername, "text"), GetSQLValueString($password, "text")); 

    $LoginRS = mysql_query($LoginRS__query, $dbconnect) or die(mysql_error()); 
    $loginFoundUser = mysql_num_rows($LoginRS); 
    if ($loginFoundUser) { 
    $loginStrGroup = ""; 

    //declare two session variables and assign them 
    $_SESSION['MM_Username'] = $loginUsername; 
    $_SESSION['MM_UserGroup'] = $loginStrGroup;  

    if (isset($_SESSION['PrevUrl']) && false) { 
     $MM_redirectLoginSuccess = $_SESSION['PrevUrl']; 
    } 
    header("Location: " . $MM_redirectLoginSuccess); 
    } 
    else { 
    header("Location: ". $MM_redirectLoginFailed); 
    } 
} 

이제 전원 자체 검사 만하면되지만 문제는 없습니다.

감사합니다.