3

バックエンドにログイン ページがあるコンテンツ管理 Web サイトを作成しています。

コンテンツ管理システムのメイン メニュー用のログイン ページを作成しました。

以下の画像は私のコードを示しています。

第 1 ステップ - ユーザーは、コンテンツ管理システムのメイン メニューの URL にアクセスします。コードは次のとおりです。

<?php
session_start();

echo $_SESSION['valid_user'];

if(!isset($_SESSION['valid_user']))
{
$URL="error.php";
header("Location: $URL");
}
  ?>

2 つのことが起こります。エラーページに誘導される前にログインしていない場合は 1。 次に、ログイン ページにアクセスし、ユーザー名と pswd を使用してログインすることを選択できます。

?php start_session();? を宣言しました。頂点で

<?php

$login = $_POST['name'];
$loginpass =$_POST['password'];

 if((isset($login)) || (isset($loginpass))){

    //echo "<p> form has been submitted</p>";

    include("connect.php");

    $query = "select * from logins where 
        username='$login' and pswd=MD5('$loginpass')";
      $result = mysql_query($query) or die($query."<br/><br/>".mysql_error());

    $count=mysql_num_rows($result);
    echo $count;

if($count > 0){

   echo "<p>you are logged in as $login please 
   go to <a href='home2.php'>edt     home</a>.</p>";
    echo "<p><a href='logout.php'>log out</a> $login?</p>";
    $_SESSION['valid_user'] = $login;

}else{

    echo "<p>sorry login failed</p>";

}

  }else{

    //echo "<p> form  hasn't been submitted</p>";
    //Visitor needs to enter a name and password                
    echo "<h1>Please Log In</h1> <form method='post' action='index2.php'>";
    echo "<p>Username: <input type='text'name='name'></p>";
    echo "<p>Password: <input type='password' name='password'></p>";
    echo "<p><input type='submit' name='submit' value='Log In'></p></form>";        
 }


 ?>

これまでのところ、その機能はすべてうまく機能しています。

ただし、ユーザーがホームURLをバイパスして編集メニュー内のセクションに直接ジャンプすることを決定した場合、ログインしていない場合は強制的にログインするか、phpが資格情報を確認するようにします彼らがログインしている場合。

これは、検証を配置したいページの上部にあるコードの例です。上部にデータベーステーブル接続が既にある場合、セッション変数に影響するかどうかはわかりません。

 <?php

include("connect.php");
//echo "all good here";


//grab the data from the table 'designs'
$query ="SELECT * FROM designs ORDER BY id";


//send SQL statement to MySQL server
$display = mysql_query($query);
$num = mysql_numrows($display);


 mysql_close();
 ?>

「vaild_user」セッション変数が設定されていることを確認するすべての php ページに php スクリプトを配置し、logout.php ファイルをポイントしてユーザーがログアウトできるようにしたいことはわかっています。この時点でそれを行う方法がわかりません。

私はこれらすべてに非常に慣れておらず、ほとんどの人と同じように、明確なガイドに従うことを一般的に理解しています。

誰でもできる助けをいただければ幸いです

再度、感謝します!。

4

3 に答える 3

5

基本的に、「保護された」各ページに次のスニペットのようなものを配置するだけです。

<?php

session_start();
if (!isset($_SESSION['valid_user'])) {
   header("Location: login.php");
   exit();
}
?>
<a href="logout.php">Logout</a>

ログインしている場合は、ログアウト リンクとページの残りの部分が表示されます。ログインしていない場合は、ログイン ページにリダイレクトされます。

セッションは、データベース接続やその他のコードの影響を受けません。セッションを開始する前に出力を実行したり、リダイレクトを試みたりすると、影響を受けます。これにより、「ヘッダーを変更できません - 出力は行 XXX で開始されました」という警告がトリガーされ、リダイレクトが無効になります。

于 2012-12-13T14:55:47.830 に答える
1

ユーザーの資格情報を検証する必要があるのは、ユーザーがログイン ページに情報を送信した後だけです。次に、セッション変数を設定できます(ここでは、使用しているよう$valid_userで、その変数が存在する場合、それらはすでに認証されています.

実際、セキュリティ上の理由から、パスワードをシステムのどこにも保存しないでください。ログインページでパスワード入力をハッシュし、それをハッシュされたデータベース値と比較する必要があります。

セキュリティを強化するために、ユーザーに複数回ログインさせることができます (たとえば、phpbb は、登録済みのユーザー コンテンツから管理者コンテンツに移動するときにこれを行います) が、一般的な目的のセキュリティには必要ありません。

それはあなたの質問に答えていますか?

于 2012-12-13T14:55:56.603 に答える
0

session_start() の後に、すべてのページの上でグローバル変数を使用します

$_SESSION['username'];
于 2012-12-13T15:01:33.730 に答える