2016-08-13 13 views
-1

を書く場合、私はsessions..Hereでシンプルなログインフォームに取り組んでいますが、誰かが正しいパスワードを書く、誰かが正しいパスワード/ユーザ名

 <?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> 

私のindex.phpコードです彼はこのページに行きます 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

にリダイレクトされていない場合、あなたがHTMLを書いた後、ヘッダを送信している場合 - あなたはできるように、出力バッファリングを使用する必要がありますそれ。 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

関連する問題