2012-01-11 7 views
2

私は自分のウェブサイトの各ページの先頭にあるsession.phpスクリプトを試して、サイトを閲覧する前にユーザーがログインしていることを確認しました。ただし、process_loginスクリプトはセキュアなランディングページをロードせず、ログインページにリロードするだけです。私の安全なセッションが正しく設定されていないと思います。誰かがこれが私にどのように作用するかをさらに説明できますか?phpとmysqlを使って安全なセッションを作る方法は?

これは、ユーザーがログインをクリックしたときに実行されるスクリプト、process_login、次のとおりです。

<?php 

// Initialize session 
session_start(); 

// Require database connection settings 
require('config.inc'); 

// Retrieve email and password from database 
$email = mysql_real_escape_string($_POST['email']); 
$password = mysql_real_escape_string(md5($_POST['password'])); 
$query = "SELECT * FROM $table WHERE email='$email' AND password='$password' LIMIT 1"; 
$result = mysql_query($query); 

// Check email and password match 
if(mysql_num_rows($result)) { 
     // Set email session variable 
     $_SESSION['email'] = $_POST['email']; 
     // Jump to secured page 
     header('Location: home.php'); 
} 
else { 
      // Jump to login page 
      header('Location: index.php'); 
} 

?> 

、これは、ログインするユーザーを必要とする各ページの先頭であるsession.phpスクリプトです:あなたは、あなたのファイルsession.pにコード

session_start(); 

を含める必要が

<?php 

if (isset($_SESSION['email']) == 0) { 
    // Redirect to login page 
    header('Location: index.php'); 
} 

?> 
+2

あなたは何を試してみることができますか? – Ivan

+0

私たちにいくつかのコードを示す必要があります。 – Cyclonecode

+0

process_loginスクリプトが呼び出されると、定義されたユーザはまだログインしていません。したがって、process_login中にverify/redirectコードを実行しないでください。 – Jon

答えて

2

hpを使ってセッション変数にアクセスする

また、PHPのセッションで自動セッション開始が有効になっていることを確認する必要があります。

+0

しかし、私はそれが新しいページごとにセッションを開始したら、それは何かを混乱させるでしょうか? – user1142202

+0

いいえそのようにする必要があります。http://www.php.net/manual/en/function.session-start.php –

+0

ディプラジが正しいです。覚えておいてください、PHPはステートレスなので、最初にセッションが必要です。セッション変数にアクセスする前に、すべてのページの読み込み時にsession_start()を呼び出さなければなりません。 – Daisetsu

関連する問題