2016-11-25 5 views
0

私は2つの.phpファイルです。すべてのhtmlとphp、SQLは必要なく/使用しません。 1つはログインページ、もう1つは宛先です。私が設定した詳細をログに記録すると、私は目的地に到着することができません。ここでは、両方のページのためのコードがあります:PHPログインページの認証が動作しません

ログイン:

<!DOCTYPE html> 

(php tag here can't type it) 
session_start(); 

$username="testu"; 
$password="testp"; 
$_SESSION['logged_in']=false; 

if (isset($_SESSION['logged_in']) && $_SESSION['logged_in'] == true) { 
    header("Location: dest.php"); 
    exit; 
} 

if (isset($_POST['user']) && isset($_POST['pass'])) { 
    if ($_POST['user'] == $username && $_POST['pass'] == $password) { 
     $_SESSION['logged_in'] = true; 
     header("Location: dest.php"); 
     exit; 
    } 
} 
?> 

<html lang="en"> 

<head> 
    <title>A title</title> 
</head> 

<body> 
    <form action="dest.php" method="post" style="font- family:calibri;position:absolute;top:40%;left:35%;"> 
     Username: <input type="text" name="user"/><br><br> 
     Password: <input type="password" name="pass"  style="position:relative;left:5px;"/><br><br><br> 
    <input type="submit" value="Submit" style="position:relative;left:115px;"/> 
    </form> 

</body> 

</html> 

先:

<!DOCTYPE html> 

(php tag here) 
session_start(); 

if (!isset($_SESSION['logged_in']) || $_SESSION['logged_in'] == false) { 
    header("Location: login.php"); 
    exit; 
} 
?> 

<html lang="en"> 

<head> 
    <title>A title</title> 
</head> 

<body> 
    <a href="login.php">Log out</a> 
</body> 

</html> 

私は先のファイルにPHPコードをコメントアウトするとき、私はDESTにアクセスできることに気づきました。 php。問題は、私はアクセスすることができますログインの詳細、またはまったくなしです。それは何も動作しない、または何かが動作します。私が働くように設定した詳細をどのように入手できますか?問題はログインページのスクリプトにあると思う。私はこれを解決するのを助けることができる誰にも多くの事前に感謝します。

これはこっち正しく解決ガット:PHP login authentication not workingこれは、まったく複製1は明らかに彼が尋ねたコードに注意を払っていなかったとして、それをマークフレッド-II-ではありません。彼はまた私のポストから彼のコメントを削除しました。

+2

両方の開始時にsession_startを使用しましたか? –

+0

@JonStirlingはい、投稿に追加する必要があります。 – H3ll0

+0

@JonStirling OPに追加された<?php intoは、表示を停止しました。 – H3ll0

答えて

0

問題はsession_start();です。セッションを処理するすべてのページの上に配置する必要があります。

のsession_start()は、セッションを作成または にGETまたはPOST要求を介して渡されたセッション識別子をベースと現在のを再開し、または クッキーを介して渡されます。

<?php 

session_start(); //has to be on top of every site you use sessions 

$username = "testu"; 
$password = "testp"; 
$_SESSION['logged_in'] = false; 

if (isset($_SESSION['logged_in']) && $_SESSION['logged_in'] == true) { 
    header("Location: dest.php"); 
} 

if (isset($_POST['username']) && isset($_POST['password'])) { 
    if ($_POST['username'] == $username && $_POST['password'] == $password) { 
     $_SESSION['logged_in'] = true; 
     header("Location: dest.php"); 
    } 
} 
?> 
+0

それ以上のものは<!DOCTYPE html>でした。上のすべてのPHPも移動し、それでも失敗しました。 Literalyはsession_start()の上の唯一のものです。 <?php – H3ll0

+0

@ H3ll0あなたはコード全体を投稿できますか? – Blueblazer172

+0

フルコードが追加されました。ありがとうございます。 – H3ll0

1

http://php.net/manual/en/function.session-start.phpから注:

クッキーベースのセッションを使用するには、のsession_start()は、ブラウザには、何もoutputing前に呼び出す必要があります。

コードにsession_start()を移動します。たとえば、

<?php 

session_start(); 

?><!DOCTYPE html> 
<!-- and the rest of your code here... --> 
+0

BlueBlazerの記事で述べたように、私は既にこれを成功させて試みました。私はPHPコード全体を他のすべての上に移動しようとしました。私のコメントを読んでください。 – H3ll0