3

この関数ファイルがあります。することによって... <?php include('functions.php'); ?>...私はその中のすべての関数を実行していますか、それとも単にそれらを呼び出すことを許可しています(それらを現在のスコープに存在させます)。

基本的な質問で申し訳ありません。私は PHP 初心者です。

<?php

  /*
  * -------------------------------------------------------------------------------------
  * ---------------------------- GLOBALLY AVAILABLE FUNCTIONS ---------------------------
  * -------------------------------------------------------------------------------------
  */

  function user_loggedin_check() {
    if(isset($_COOKIE['logged_in']) && ($_COOKIE['logged_in'] == true)){
      $logged_in = true;
      setcookie("logged_in", $logged_in, time()+14400);
      return true;
    } else {
      header('Location: index.php?loginerr=6');
      exit();
    }
  }

  function permission_level_2_check() {
    if(isset($_COOKIE['permission_level']) && ($_COOKIE['permission_level'] == 2)){
      $logged_in = true;
      setcookie("logged_in", $logged_in, time()+14400);
      return true;
    } else {
      setcookie("logged_in", false, time()-1);
      setcookie("permission_level", 1, time()-1);
      session_unset();
      session_destroy();
      header('Location: index.php?loginerr=7');
      exit();
    }
  }

  function permission_level_3_check() {
    if(isset($_COOKIE['permission_level']) && ($_COOKIE['permission_level'] == 3)){
      $logged_in = true;
      setcookie("logged_in", $logged_in, time()+14400);
      return true;
    } else {
      setcookie("logged_in", false, time()-1);
      setcookie("permission_level", 1, time()-1);
      session_unset();
      session_destroy();
      header('Location: index.php?loginerr=7');
      exit();
    }
  }

  function display_login_errors() {
        /*
        * -------------------------------------------------------------------------------------
        * ---------------------------------- ERROR LIST ---------------------------------------
        * -------------------------------------------------------------------------------------
        */
        /*
        * loginerr=0 -> passwords don't match
        * loginerr=1 -> username already exists in DB
        * loginerr=2 -> registration is currently disabled
        * loginerr=3 -> password is too long and/or too short
        * loginerr=4 -> email isn't in proper format
        * loginerr=5 -> email is too long and/or too short
        * loginerr=6 -> user isn't logged in, generic redirect to login page error
        * loginerr=7 -> user doesn't have the required access to view that page
        */

        if(isset($_GET["loginerr"])){
          $loginerr = $_GET["loginerr"];
          switch ($loginerr) {
              case 0:
                  echo "<div class='alert alert-error pagination-centered frontpage-alert'>"; 
                  echo "<strong>Your passwords didn't match. Try again.</strong>";  
                  echo "</div>";
                  break;
              case 1:
                  echo "<div class='alert alert-error pagination-centered frontpage-alert'>"; 
                  echo "<strong>That email address is already registered.</strong>";  
                  echo "</div>";
                  break;
              case 2:
                  echo "<div class='alert alert-error pagination-centered frontpage-alert'>"; 
                  echo "<strong>Registration is currently disabled. Try again later.</strong>";  
                  echo "</div>";
                  break;
              case 3:
                  echo "<div class='alert alert-error pagination-centered frontpage-alert'>"; 
                  echo "<strong>Your password must be between 4 and 32 characters in length.</strong>";  
                  echo "</div>";
                  break;
              case 4:
                  echo "<div class='alert alert-error pagination-centered frontpage-alert'>"; 
                  echo "<strong>Your email address didn't match proper formatting (email@domain.com).</strong>";  
                  echo "</div>";
                  break;
              case 5:
                  echo "<div class='alert alert-error pagination-centered frontpage-alert'>"; 
                  echo "<strong>Your email address must be between 6 and 32 characters in length.</strong>";  
                  echo "</div>";
                  break;
              case 6:
                  echo "<div class='alert alert-error pagination-centered'>"; 
                  echo "<strong>You need to be logged in to access that page. Please log in.</strong>";  
                  echo "</div>";
                  break;
              case 7:
                  echo "<div class='alert alert-error pagination-centered'>"; 
                  echo "<strong>You don't have access to view that page. You have been logged out due to suspicious activity.</strong>";  
                  echo "</div>";
                  break;
          }
        }
      }
 ?>
4

4 に答える 4

3

関数を呼び出すのではなく、関数を定義しているだけです。そのファイルに関数呼び出しがあれば、実行されます。通常、実行中のコードと関数/クラス定義を分離する必要があります。

関数またはクラスの定義だけを持つファイルがある場合は、include_once(またはrequire_once) を使用することをお勧めします。ファイルを 2 回インクルードすると、function already existsエラーが発生するためです。使用include_onceするとこれを回避できます。

依存関係を処理するより高度な方法は、 を使用したオートロードspl_autoload_registerです。Symfony 2 などの一般的なフレームワークには、クラス名をファイル名にマップできる独自の命名スキームがあるため、任意のクラスをジャストインタイムで自動的にロードできます。

于 2013-05-22T16:28:07.267 に答える
0

あなたはそれらを定義しています。関数の外部に存在するすべてのコードが実行されます。

于 2013-05-22T16:27:58.417 に答える
0

functions.php にあるものを実際に実行しているため、関数を宣言し、それらにアクセスできるようにしています。関数の外側に (たとえば) エコーがある場合は、それが実行されます。

于 2013-05-22T16:27:59.027 に答える