2012-03-27 4 views
1

사용자가 로그인하면 "환영 사용자 이름"텍스트를 표시하고 로그인하지 않았거나 로그인하지 않으면 "로그인 | 등록"링크를 표시해야합니다 쿠키가 만료되었습니다. 그러나 표시해야하는 텍스트는 index.php에 있으며 사용자 인증은 checklogin.php에서 수행됩니다.다른 창에있는 다른 페이지의 이벤트에 응답하여 동적으로 페이지의 텍스트를 업데이트하십시오.

인증을위한 이벤트가 다른 페이지 checklogin.php에서 수행되므로 index.php (동적으로 새로 고치지 않음)의 텍스트를 업데이트하는 방법을 모르겠습니다. '_blank'를 사용하여 새 페이지에 로그인 페이지가 열립니다.

나는 아래 코드를 재현하고 있습니다 : 시간 내 주셔서 감사합니다.

index.php를

<?php 
if ($_COOKIE['cookieName']) { echo '<li>Welcome '. $_COOKIE['cookieName']; echo'|'; echo '<a href="logout.php" target="_blank">Logout</a> </li>'; } 
else {echo' <li><a href="login.php" target="_blank" class="login">Login</a> | <a href="user_add.php" target="_blank" class="login">Register</a></li> '; } 
?> 

login.php

<form action="checklogin.php" method="post" name="form" id="form"> 
    <input type="text" name="username" value = '' />  
    <input type="password" name="password" value = '' /> 
<input name="submit" type="submit" value="Log me in." class="button"/> 

checklogin.php 당신은 index.phpcheck cookie with javascriptsetInterval()을 사용할 수 있습니다이 경우 생각

$sql="SELECT * FROM users WHERE username='$username' and password='$password'"; 
$result=mysql_query($sql); 
// Mysql_num_row is counting table rows 
$count=mysql_num_rows($result); 
if($count==1){ 
$cookie_name ="$cookiename"; 
$cookie_expire ="300"; 
setcookie($cookie_name,$cookie_value,time() + (300),"/", $cookie_domain); 
header("location:$successfulLogin_url"); 
} 

else{ 
header("location:$failedLogin_url"); 
} 
+2

'index.php'가'checklogin.php'가 들어있는 윈도우를 열면'window.opener' 속성을 사용하여 메인 윈도우에 접근 할 수 있다고 가정합니다. 그래도 실제로 어떤 이벤트를 처리할지 말하지 않았습니다. –

+0

로그인에 성공하면 쿠키가 설정됩니다. 이 순간 index.php의 텍스트를 변경해야합니다. 또한 로그인 페이지는 실제로 창 대신 새 페이지 '_blank'입니다. – learner

답변

0

. 설정이 완료되면 사용자 로그인으로 html을 업데이트 할 수 있습니다 (로그인 링크 삭제 및 환영 메시지 표시).

그러나 메인 사이트를 배경으로 두 번째 창으로 사용자를 보내는 것이 좋지 않다고 생각합니다. 모달 대화 상자 또는 "로그인"클릭시 동적으로로드 된 로그인 양식이 더 좋을 것입니다. 그러나 만약 당신이 정말로 이런 식으로해야한다면, 간격 배경 조사는 단지 방법 일 수 있습니다.

관련 문제