0

ルート ディレクトリ (つまり、私の場合は教室フォルダー) に index.php を書きました。これは、私の Web サイトの唯一のエントリ パスであるはずです。

私のindex.phpの最初の数行は

index.php

<?php
     include_once $_SERVER['DOCUMENT_ROOT'].'/classroom/include/db.inc.php' ;
     session_start();
     define('BASE_URL', '/classroom/');
     define('DIR_ROOT', dirname(__FILE__) . DIRECTORY_SEPARATOR);
     define('DIR_HOME', DIR_ROOT . 'home' . DIRECTORY_SEPARATOR);
     define('DIR_INCLUDE', DIR_ROOT . 'include' . DIRECTORY_SEPARATOR);
     if(isset($_GET['name']) and $_GET['name'] == 'home' )
     {
          $url='';
          $url= BASE_URL . 'home' . DIRECTORY_SEPARATOR;
          header("Location: $url");
          exit();
     }

ホームディレクトリで、「DIR_HOME」または「DIR_INCLUDE」を使用しようとするとhome.html.php.nowがロードされます。エラーメッセージが表示されます

( ! ) 注意: 未定義の定数 DIR_INCLUDE の使用 - C:\wamp\www\classroom\home\home.html.php の 17 行目で 'DIR_INCLUDE' を想定

私のhome.html.phpでエラーが発生した部分を示しています

home.html.php

<table width="100%" border="0" cellpadding="4px" >
<tr>
 <td>
<table border="0" width="100%" cellpadding="0px" cellspacing="0px">
    <tr>
        <td class="top">
                <?php include(DIR_INCLUDE . 'topper.html.php') ; ?> 
        </td>
    </tr>

index.php.にhome.html.phpを含めると問題は解決しますが、localhost/classroom/homeのようなURLをたどらず、常にlocalhost/classroomとして残ります。

質問:なぜこのエラーが発生するのですか??URL を localhost/classroom/home のようにして解決する方法

編集:誤解があると思います。私の質問は、URLをlocalhost/clasroom/homeとして保持しながら問題を解決するにはどうすればよいかということです...そして、すべてのスクリプトにすべてのディレクトリ定義を含めると、同じようになりますすべてのスクリプトに session_start() を含める必要があります..私の質問は、そうする場合、単一のエントリパスの概念を保持するかどうかです.単一のエントリパスを維持したいため

4

1 に答える 1

1

あなたの問題は、責任を混在させていることです。index.phpその定数定義を含め、ブートストラップ イベントを含めないでください。

bootstrapperほとんどの場合、共通定数のみを定義し、共通変数も初期化する必要があります。

 <?php

 /* File : bootstrap.php */

 include_once $_SERVER['DOCUMENT_ROOT'].'/classroom/include/db.inc.php' ;

 session_start();

 define('BASE_URL', '/classroom/');
 define('DIR_ROOT', dirname(__FILE__) . DIRECTORY_SEPARATOR);
 define('DIR_HOME', DIR_ROOT . 'home' . DIRECTORY_SEPARATOR);
 define('DIR_INCLUDE', DIR_ROOT . 'include' . DIRECTORY_SEPARATOR);

君のindex.php

 <?php

 require(dirname(__FILE__) . '/bootstrap.php');

 if(isset($_GET['name']) and $_GET['name'] == 'home' )
 {
      $url='';
      $url= BASE_URL . 'home' . DIRECTORY_SEPARATOR;
      header("Location: $url");
      exit();
 }

そしてあなたのhome.html.php

<?php require(dirname(__FILE__) . '/bootstrap.php'); ?>

<table width="100%" border="0" cellpadding="4px" >
<tr>
 <td>
<table border="0" width="100%" cellpadding="0px" cellspacing="0px">
    <tr>
        <td class="top">
                <?php include(DIR_INCLUDE . 'topper.html.php') ; ?> 
        </td>
    </tr>

それはそれを機能させるための単なるデモンストレーションです。実際には、このようにコーディングしないでください。SOLID原則について学びOOPMVC

于 2013-06-29T17:11:36.030 に答える