2

2 つの入力フィールドがあり、1 つはパスワードのユーザー名を取得するためのものです。ユーザー名とパスワードはデータベースから取得され、ユーザー名とパスワードの組み合わせが見つかった場合、フラグは 1 に設定されます。

$match = 1;
if ($match) {
    header('Location: http://www.example.com/myProfile');
} else {
    header('Location: http://www.example.com/errorpage');
}

それでも、誰でも「www.example.com/myPforile」という URL を入力してコンテンツにアクセスできるという問題があります。セッション変数の作成を防ぐ方法は?

4

4 に答える 4

4

セッションが設定されているかどうかを確認するために使用するコードのサンプルを次に示します。

<?php
session_start();
if(!isset($_SESSION['userId'])){
    header('Location: http://example.com/errorpage');
}else{
    header('Location: http://www.example.com/myProfile');
}
?>

それが役立つことを願っています。

于 2012-05-18T17:08:29.247 に答える
3

これが私が提案するものです。

まずsession_start();、ページの上部に含めるようにしてください。

PHP コードの場合、ログイン ページは次のようになります。

if($_POST['submit']=='Login') {

$err = array();
// will hold our errors

if(!$_POST['email'] || !$_POST['password'])
     $err[] = 'All the fields must be filled in!';

if(!count($err)) {

$row = mysql_fetch_assoc(mysql_query("SELECT id FROM members WHERE email='{$_POST['email']}' AND pass='".$hash."'"));

if($row['id'])
$_SESSION['id'] = $row['id'];

}

}

次に、ログインを必要とする任意のページに、作成したセッション ID をチェックするものを置きます。

if(!isset($_SESSION['id']) || empty($_SESSION['id'])) {

// redirect them to the login page, they have no session id set

}

これは、私が行っている基本的な例です。間違いなくそれを拡張し、ニーズに合わせて微調整してください。

于 2012-05-18T18:06:49.650 に答える
2

あなたの質問を正しく理解できれば、あなたはあなたのmyProfileページを保護していません。

あなたがする必要があるのは、ログインが成功したときにセッション変数を設定し、そのセッション変数を の上部で確認することですmyProfile

于 2012-05-18T16:59:38.563 に答える
1

ログインせずにそのページにアクセスできるということを意味していると思います。その場合、次のようなことをする必要があります

$logged in = $_SESSION['loggedin'];
if($loggedin) {
   die('whatever not allowed here or something')
}
于 2012-05-18T17:01:55.553 に答える