0

メンバーデータベースには、rankというセクションがあります。

基本的に、私がやろうとしているのは、たとえばランクが12を超えるメンバーが特定のページを表示できるようにすることです。ランクが12未満の場合、それらはホームページにリダイレクトされます。(明らかに、ランク5以上のメンバー、ランク7以上のメンバー、ランク20以上のメンバーなどのさまざまなページになります)

誰かがチュートリアルなどで私を助けてくれますか?

私は以前に現在のコードで助けを求めましたが、コードが機能することはないと思います。コードを変更して1週間遊んでいて、他の方法で機能させることができない可能性があります。メンバーランクエリアのみ

私はまだphpを学んでいるので、理想的には簡単に説明できるチュートリアルがいいでしょう。

データベース:

id int(11) 
username varchar(200) latin1_swedish_ci 
password varchar(216) latin1_swedish_ci 
security varchar(200) latin1_swedish_ci 
email varchar(216) latin1_swedish_ci 
ip varchar(200) latin1_swedish_ci 
rank varchar(216) latin1_swedish_ci 
name varchar(30) latin1_swedish_ci 
age varchar(40) latin1_swedish_ci 
gender varchar(40) latin1_swedish_ci 
location varchar(40) latin1_swedish_ci 
helpfaerie int(11) 
profile text latin1_swedish_ci 
about text latin1_swedish_ci 
tasks text latin1_swedish_ci 
joined varchar(216) latin1_swedish_ci 
laston int(200) 
icedmutereason text latin1_swedish_ci 
icedmutedetails text latin1_swedish_ci 
icedmuteby varchar(200) latin1_swedish_ci 
icedmutedate int(200) 
posts int(11) 
signature varchar(216) latin1_swedish_ci 
avatar varchar(216) latin1_swedish_ci 
neohtml text latin1_swedish_ci 
siggy text latin1_swedish_ci 
verify int(11) 
changedpass int(1)

Header.inc.php

<?php 

include ($_SERVER['DOCUMENT_ROOT'].'/dblink.php'); 
include ($_SERVER['DOCUMENT_ROOT'].'/addon.php'); 

$geterror= $_GET['error'];

$error= stripplus($geterror);

$extra = mysql_fetch_array(mysql_query("SELECT * FROM extra WHERE id='1'"));


$cp = mysql_fetch_array(mysql_query("SELECT * FROM members WHERE username = '$username'"));



$weather = $extra[weather];
$wurl = $extra[wurl];
$games = $extra[games];
$xword = $extra[xword];
$xword2 = $extra[xword2];
$xworddate = date("M j Y",$extra[xworddate]); 
$userinfo = mysql_fetch_array(mysql_query("SELECT * FROM members WHERE username='$username'"));
$rank = $userinfo[rank];




if (!$checkrank) { $checkrank = 0; }
if (!$rank) { $rank = 0; }
if (!$rank == ' ') { $rank = 0; }
if ($rank < $checkrank)
{

     header("Location: $baseurl/index.php?error=You+can+not+view+this+page.");
}




if ($rank >= 30)
{

    $admin = "<a href=\"$baseurl/staff/admin.php\">Admin</a>";
}


if ($username)
{

mysql_query("UPDATE members SET laston = $timestamp+120 WHERE username='$username'");

mysql_query("UPDATE members SET ip = '$ip' WHERE username='$username'");

    $login = "Welcome $username :) <a href=\"$baseurl/logout.php\" >Logout</a>";

$helpfaerie = "<a href=\"$baseurl/helpfaerie.php\" >Help Faerie</a>";

}

else
{
$login = "<form name=\"login\" action=\"$baseurl/login.pro.php\" method=\"post\"  > <input type=\"hidden\" name=\"act\" value=\"doLogin\" color=\"#000000\" valign=\"middle\" >&nbsp;Username: <input type=\"text\" name=\"username\" color=\"#000000\"  style=\"width:100px; height:20px;font-size:10px;\">
Password: <input type=\"password\" name=\"password\"  style=\"width:100px; height:20px;font-size:10px;\"> <input type=\"submit\" name=\"submit\" value=\"Login\" style=\"width:42px; height:20px;font-size:10px;\"></form>";


}


ECHO <<<END

そしてfont.php

<?php
$pagetitle = "Add Font";





session_start();

// Rank Limit
       $limit = 10;

        // Using a session 
    $rank = $_SESSION['rank'];

       // Using a cookie
       $rank = $_COOKIE['rank'];

    if ($rank < $limit) {
        header("$baseurl/index.php?error=You+can+not+view+this+page.");
        exit();
        die();
    }


include ($_SERVER['DOCUMENT_ROOT'].'/staff/header.inc.php');


ECHO <<<END
4

2 に答える 2

3

探しているのは、おそらく認証と組み合わされたACL(アクセス制御リスト)です。ACLを使用すると、特定の資格情報を持つユーザーがアクセスできるリソースを指定できます。

私はいくつかのチュートリアルを見つけましたが、これは気の弱い人向けではありません。

そして多分あなたはあなたが始めるためにphpclassesからのクラスを使うことができます:

PHPClassesACL検索結果

また、私が知る限り、人気のあるフレームワークにはすべてACLと認証のリソースがあります。(Zend Framework、Symfony、CakePHP)。

幸運を!

于 2012-07-12T13:55:49.217 に答える
1

データベースにランクフィールドがあるため、クエリを使用してランクフィールドを取得する必要があります。

$user = mysql_fetch_array(mysql_query("SELECT rank FROM members WHERE username='$username'"));

その後、それを確認してから、さまざまなランクとその背後にあるロジックを管理するためのif/switchを作成する必要があります。

if(!is_array($user) || $user['rank'] < 12){
     header('Location: homepage');
} else {
 //manage page that only ranked user can have

}

アクセスするすべてのページとユーザーごとにクエリを実行するため、これは簡単で「悪い」ソリューションですが、ログインページを使用して、もう少し複雑なバージョンで作業できることを念頭に置いてください。これにより、セッションにランクが保存され、各ページでランクが取得されて、ユーザーがランクを表示できるかどうかが決定されます。

if(!isset($_SESSION['user_rank'] || $_SESSION['user_rank']<12)
    header('Location : defaultpage.php');
于 2012-07-12T13:55:38.153 に答える