2017-01-03 7 views
0

私は通常の管理者とスーパー管理者の両方のサイトを持っていますが、両方ともいくつかの機能を共有しています。私が導入している新しい機能は、管理者によるシリアルアクティベーションです。これは通常の管理者で既に実装されていますが、スーパー管理者に同じコードを追加しようとしています。通常の管理者またはスーパー管理者の場合は、シリアルをクリックして有効にし、activate2.phpに移動して有効にします。シリアルを有効にすることについて心を変えない限り、「戻る」または「キャンセル」ボタンをクリックすると前の画面に戻ります。アイデアは、前のページには、超ADMIN-」だった場合に応じて、「戻る」リンクと「キャンセル」ボタンの上に異なる戻りのURLを表示することです前のurlと一致して別の 'キャンセル'ボタンを表示する

$ref = $_SERVER['HTTP_REFERER']; 

:私は、前のページがPHPを使用していたものを、現在をチェック「serials.php」または単に「admin-serials.php」と入力します。 $ _SERVER ['HTTP_REFERER']で 'super-admin-serials.php'とマッチさせて、前のページの内容を推測し、前のページに戻ることを許可しました。しかし、私がまとめたコードはうまくいかないので、そこにいる誰かがこの単純な関数を助けてくれれば大いに感謝するだろう。

$superpage=array('super-admin-serials.php'); 
$ref = $_SERVER['HTTP_REFERER']; 
if (in_array($ref, $superpage)) { 
    echo "<a href=\"super-admin-serials.php\">back (super admin)</a>"; 
} else { 
    echo "<a href=\"admin-serials.php\">back (normal admin)</a>" ; 
} 

答えて

1

HTTPリファラはちょうどそれがに来るスクリプトの名前を含めることはできません、それは通常は含まれています:ここで私はキャンセルして、前に戻るには、独立した「activate2.php」のページに、これまで持っているコードです。 http://example.com/foo/your-script.phpなどの完全修飾URL

HTTPリファラー(ページを更新すると失われます)を観察する代わりに、最初のページから2番目のページに引数を渡して、どこから来たのかを判断し、必要な場所に戻すことをお勧めします。

activate2.php

  • activate2.phpスーパー= 1
  • その後、次のコードは、あなたがやりたいだろう:

    透過的ユーザーがのいずれかをアクセスする?

    $isSuper = !empty($_GET['super']); 
    if ($isSuper) { 
        echo "<a href=\"super-admin-serials.php\">back (super admin)</a>"; 
    } else { 
        echo "<a href=\"admin-serials.php\">back (normal admin)</a>" ; 
    } 
    
0

ログイン機能があり、同時にログインすることはできません(そうでない場合は、簡単にハックする可能性のある安全でないサイトを実行していないことを確認してください)。その場合は、すでにその情報をサーバに保存しておく必要があります。そのため、クライアント側から収集する必要はありません。だから、コードは次のようになります

if ($_SESSION['is_super']) { 
    echo '<a href="super-admin-serials.php">back (super admin)</a>'; 
} else { 
    echo '<a href="admin-serials.php">back (normal admin)</a>'; 
} 

(私が書くと読み、コードが難しくなってよりも、他の目的を果たしていない二重引用符を、また削除しましたのでご注意ください。)

いずれにせよ、あなたがしなければなりませんHTTP_REFERER

  • 追加の手順を追加すると失われます。
  • 一部のプロキシやセキュリティプログラムが削除されている可能性があります
  • GETパラメータのような簡単な文字列比較が失敗する余分なものが含まれることがよくあります(もちろん

とにかく選択する場合は、開始点としてparse_url()を参照してください。

関連する問題