2016-08-13 8 views
-1
내가 sessions..Here 간단한 로그인 폼에서 작업하고

누군가가 올바른 암호를 쓸 때 내 index.php에 코드방법 만 페이지를 엽니 다

 <?php 
    ob_start(); 
session_start(); 
?> 
<? 
    // error_reporting(E_ALL); 
    // ini_set("display_errors", 1); 
?> 
<html lang = "en"> 
    <head> </head> 
<body>  
    <h2>Enter Username and Password</h2> 
    <div class = "container form-signin"> 
    <?php 
    $msg = ''; 
    if (isset($_POST['login']) && !empty($_POST['username']) && !empty($_POST['password'])) 
    { 
    if ($_POST['username'] == '1' && $_POST['password'] == '1' ) 
    { 
    $_SESSION['valid'] = true; 
    $_SESSION['timeout'] = time(); 
    header('Location: /test/login.php'); 
    } 
    else $msg = 'not working'; 
    } 
    ?> 

    </div> <!-- /container --> 

    </div> 

    <form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>" method="post" > 
    <?php echo $msg; ?> 
    <input type="text" name="username"> 
    <input type="password" name="password" > 
    <input type="submit" name="login"> 
    </form> 


    </body> 
</html> 

입니다 그는 localhost : 8080/test/login.php 으로 이동 하겠지만 누군가 "localhost : 8080/test/login.php"를 직접 열려고하면 "localhost : 8080/test"페이지로 이동합니다. /index.php ".

이 내 login.php 코드

<?php 
session_start(); 
    if ($_POST['username'] == '1' && $_POST['password'] == '1' ) 
    { 
    $_SESSION['valid'] = true; 
    $_SESSION['timeout'] = time(); 
    header('Location: /test/login.php'); 
    } 
else{ 
header('Location: /test/index.php/'); 
    } 
    ?> 


test 1 
+0

- 당신은 할 수 있도록 출력 버퍼링을 사용해야합니다 그. Betteroption은 html 내용 앞에 PHP를 두는 것입니다. – RamRaider

+0

login.php가 작동하지 않는다는 것을 의미합니다 : ... ( –

+0

세션이 설정되어 있는지 확인하지 마십시오 ... –

답변

0

의 youve 몇 가지 작은 실수를 (주석을 참조)했다,하지만 당신이 만드는 큰 실수는 세션이 확인되지 않습니다 것입니다. login.php에서이를 사용

<?php 
session_start(); 
if(!isset($_SESSION["valid"])){ 
header("location: index.php"); 
die(); 
} 
?> 

이 검사 세션이 설정되어있는 경우, 그렇지 않은 경우하면 다시 인덱스 PHP로 리디렉션 당신이 HTML을 작성 후 헤더를 보내는

관련 문제