0

私はphpを初めて使用し、ユーザーのURLに基​​づいてtrue/falseを返そうとしています。(これをdrupalで使用)たとえば、ユーザーが次の場所にいる場合:

http://www.example.com/trainingtrueを返したい

http://www.example.com/training/hometrueを返したい

http://www.example.com/browse/training/results/*trueを返したい

私はそれを間違って欲しいのですが、他の何かのために。

http://www.example.com/training/backpackingfalseを返したい。

私の最初のphpスクリプトにはバグがあります...図を見てください。とにかく、トレーニング中でないものには表示されませんが、望ましくないサブエリアのトレーニングには表示されます。

global $language;
$curr_uri = check_plain(request_uri());

if ($language->language == 'en')
    if (basename(dirname($curr_uri)) == 'training')
        return TRUE;
    else
        return FALSE;
else
    return FALSE;

何を成し遂げる必要があるのか​​という概念を理解しています。3つの特定のURIをチェックし、他には何も表示したくない。私も試しました:

global $language;
$curr_uri = check_plain(request_uri());

if ($language->language == 'en')
    if ($curr_uri == '/training/home')
        return TRUE;
    else
        return FALSE;
else
    return FALSE;

Adnan ...あなたの編集が何であったかはわかりませんが、タイプミスを見つけました。現在、このコードで機能しています。

<?php
  global $language;
  $curr_uri = check_plain(request_uri());

if ( $language->language == 'en')
  if($curr_uri == '/training/home' || $curr_uri == '/browse/training/results' )
    return TRUE;
  else
    return FALSE;
else
  return FALSE;
?>
4

1 に答える 1

2
$pairs = array(  array('training'),
                 array('training','home'),
                 array('browse','training','results'));

$urls = explode('/',$_SERVER['REQUEST_URI']);

foreach($pairs as $pair){
  if ( !empty(array_diff($pair,$urls)) )
    return true;
}

return false;
于 2012-08-06T17:20:11.610 に答える