2

ログインしているメンバーのみが特定のページを表示できるように、既にユーザー アクセスが設定されている Web サイトで作業しています。ここで、ログインしているユーザーのアクセスをより具体的にする必要があります。そのため、ログインすれば誰でもサイトを見ることができますが、PDQ または Comm Plus へのアクセス権を持つユーザーのみがアクセスできる 2 つのページ (PDQ および Comm Plus と呼ばれます) があります。ユーザー情報を追跡するために filemaker 10 データベースを使用しています。ユーザーが PDQ アクセス権を持っている場合、データベースで PDQ=1 になります。ウェブサイトは Drupal、php、および html でコーディングされています。

だから今、私は何をすべきかについて良い考えを持っていますが、いくつかの部分が欠けていて、drupal や filemaker にあまり慣れていません。ページでユーザー情報を取得し、データベース内の PDQ の値を確認する必要があります。1 の場合はページへのアクセスを許可し、0 の場合はアクセスが拒否されたページに移動します。

これが私がこれまでに持っているものです

<?php require_once('DatabaseName');

global $user;
//looks at the current user
$use = $user->uid;

//Not sure what goes here. I need code that looks at the filemaker database to see
//what the value of PDQ is and then stores it in a variable.

if (!session_id()) session_start();
if (!isset($variableGoesHere) || $variableGoesHere == '0'){
  drupal_goto("access-denied");
  exit();
  }
?>

どんな助けでも大歓迎です。また、私が正しい軌道に乗っているかどうか、または別の場所を探す必要があるかどうかもお知らせください。ありがとう!

4

2 に答える 2

2

まず第一に、情報を保存するために Drupal を使用し、Drupal システムを使用しないことは悪い考えです。Drupal を使用している場合は、外部ソースを使用してログインできますが、ユーザーには drupal ユーザーが必要です。

あなたのユーザーが Drupal ユーザーであれば、物事はずっと簡単になります。Drupalのアクセス制御システムを利用して、アクセス確認などを行うことができます。

hook_menuDrupal がページを提供している場合は、パスを登録する方法access callback、アクセスを処理できるオプション、またはユーザーに権限があるかどうかを確認する方法など、示したようなコードを記述しないでください。このようなことは、カスタム モジュールで行っている場合にのみ適用されます。これは、行っているように見えることです。

いずれにせよ、drupal_access_deniedアクセスが拒否されたことを自分で返したい場合は、関数を使用する必要があります。

于 2010-07-16T19:49:56.313 に答える
1

私はずっと前にこれを理解しましたが、質問に答えることができませんでした。だから私がしたことはここにあります

    $WebAuth_find = $FILMAKER->newFindCommand('WebAccess');
$Search_findCriterions = array('Access::cntdPhoneNumberDisplayCalc'=>"==".$find,'Access::phoneType'=>"E-mail",'Access::phoneMain'=>"==1",'LoginAccess'=>'1');
foreach($Search_findCriterions as $key=>$value) {
    $WebAuth_find->AddFindCriterion($key,$value);
}
$WebAuth_Result = $WebAuth_find->execute();
if (FileMaker::isError($WebAuth_Result) && $WebAuth_Result->code == 401) {
                echo "FM ERROR CODE: ".$WebAuth_Result->code."<br>"."ERROR: ".$WebAuth_Result->getMessage();

これにより、WebAccess レイアウトの下にある Filemaker データベースの現在のユーザーが識別されます。問題がある場合は、エラー メッセージがスローされます。現在のユーザーを調べているので、データベースの Comm Plus フィールドと PDQ フィールドの内容を確認し、情報を保持するセッションを作成します。

else{
 $FinalResult = current($WebAuth_Result->getRecords());

 $_SESSION['district']= $district;
 $PDQ = $FinalResult->getField('PDQ_subscription');
 $_SESSION['PDQ'] = $PDQ;
 $CommPlus = $FinalResult->getField('CommPlus_subscription');
 $_SESSION['CommPlus'] = $CommPlus;

次に、アクセスを制限したいページの上部に次のコードを追加します。セッションを調べて、現在のユーザーが資格情報を持っているかどうかを確認します。資格情報がない場合は、アクセス拒否ページに誘導されます。

$PDQ_check = $_SESSION['PDQ'];
    if (!isset($PDQ_check) || $PDQ_check == '' || $PDQ_check == '0'){


       drupal_goto("access-denied");


    exit();


       }
于 2010-10-01T15:18:18.363 に答える