Php切换案例为什么输入错误的url时我的默认页面不会触发
大家好,我正在编写一个页面切换代码,由于某些原因,默认页面似乎无法加载。有人能帮忙吗?目前,我可以输入一个随机的网址,但它只是显示网页没有找到 默认显示将触发PHPMyAdmin页面错误 这是views/404.php文件夹。 但事实并非如此。我似乎能理解为什么没有Php切换案例为什么输入错误的url时我的默认页面不会触发,php,html,Php,Html,大家好,我正在编写一个页面切换代码,由于某些原因,默认页面似乎无法加载。有人能帮忙吗?目前,我可以输入一个随机的网址,但它只是显示网页没有找到 默认显示将触发PHPMyAdmin页面错误 这是views/404.php文件夹。 但事实并非如此。我似乎能理解为什么没有 <?php //begin the webpage //index page selector placed into an array for options for the user to select //sessi
<?php
//begin the webpage
//index page selector placed into an array for options for the user to select
//session started recording attributes
session_start();
error_reporting(0);
//including other view class and model class function to be used on this page
include 'views/viewClass.php';
include 'classes/modelClass.php';
class PageSelector {
public function run() {
//has the user decided which page to go to?
//if not then we will direct him to the homepage
if(!$_GET['page']) {
$_GET['page'] = 'Home';
}
//extending a new model class
$model = new Model;
//get the page information
$pageInfo = $model -> getPageInfo($_GET['page']);
//select which page to include when the user clicks
//on either register/home/my account/my bids/my sell/completed auctions/edit etc..etc..etc..
switch($_GET['page']) {
case 'Register':
include 'views/register.php';
$view = new HomeView($pageInfo, $model);
break;
case 'Home':
include 'views/homeView.php';
$view = new HomeView($pageInfo, $model);
break;
case 'My Account':
include 'views/myaccount.php';
$view = new myaccount($pageInfo, $model);
break;
case 'My Bids':
include 'views/mybids.php';
$view = new Mybids($pageInfo, $model);
break;
case 'My Sell':
include 'views/mysell.php';
$view = new mysell($pageInfo, $model);
break;
case 'Completed Auctions':
include 'views/checkout.php';
$view = new checkout($pageInfo, $model);
break;
case 'editProduct':
include 'views/editProductView.php';
$view = new EditProductView($pageInfo, $model);
break;
case 'addProduct':
include 'views/addProductView.php';
$view = new AddProductView($pageInfo, $model);
break;
case 'deleteProduct':
include 'views/deleteProductView.php';
$view = new DeleteProductView($pageInfo, $model);
break;
case 'deleteUser':
include 'views/deleteUserView.php';
$view = new DeleteUserView($pageInfo, $model);
break;
case 'search':
include 'views/search.php';
$view = new search($pageInfo, $model);
break;
case 'product':
include 'views/productView.php';
$view = new ProductView($pageInfo, $model);
break;
default:
include 'views/404.php';
$view = new error($pageInfo,$model);
}
echo $view -> displayPage();
}
}
$pageSelect = new PageSelector();
$pageSelect -> run();
//calls the selector to run after user has selected.
尝试改变
if(!$_GET['page']) {
到
我将假设您正确地将404路由到此文件。发生的事情是,因为404没有$\u GET['page'],您的代码将自身设置为主页并加载主页 假设这是index.php文件,我会添加一个条件来检查它,并将默认值更改为case 404。这是完整的新代码
<?php
//begin the webpage
//index page selector placed into an array for options for the user to select
//session started recording attributes
session_start();
error_reporting(0);
//including other view class and model class function to be used on this page
include 'views/viewClass.php';
include 'classes/modelClass.php';
class PageSelector {
public function run() {
//Check to make sure they are loading a legit page first
if($_SERVER['PHP_SELF'] != 'index.php'){
$_GET['page'] = '404';
}
//has the user decided which page to go to?
//if not then we will direct him to the homepage
if(!$_GET['page']) {
$_GET['page'] = 'Home';
}
//extending a new model class
$model = new Model;
//get the page information
$pageInfo = $model -> getPageInfo($_GET['page']);
//select which page to include when the user clicks
//on either register/home/my account/my bids/my sell/completed auctions/edit etc..etc..etc..
switch($_GET['page']) {
case 'Register':
include 'views/register.php';
$view = new HomeView($pageInfo, $model);
break;
case 'Home':
include 'views/homeView.php';
$view = new HomeView($pageInfo, $model);
break;
case 'My Account':
include 'views/myaccount.php';
$view = new myaccount($pageInfo, $model);
break;
case 'My Bids':
include 'views/mybids.php';
$view = new Mybids($pageInfo, $model);
break;
case 'My Sell':
include 'views/mysell.php';
$view = new mysell($pageInfo, $model);
break;
case 'Completed Auctions':
include 'views/checkout.php';
$view = new checkout($pageInfo, $model);
break;
case 'editProduct':
include 'views/editProductView.php';
$view = new EditProductView($pageInfo, $model);
break;
case 'addProduct':
include 'views/addProductView.php';
$view = new AddProductView($pageInfo, $model);
break;
case 'deleteProduct':
include 'views/deleteProductView.php';
$view = new DeleteProductView($pageInfo, $model);
break;
case 'deleteUser':
include 'views/deleteUserView.php';
$view = new DeleteUserView($pageInfo, $model);
break;
case 'search':
include 'views/search.php';
$view = new search($pageInfo, $model);
break;
case 'product':
include 'views/productView.php';
$view = new ProductView($pageInfo, $model);
break;
case '404':
include 'views/404.php';
$view = new error($pageInfo,$model);
break;
}
echo $view -> displayPage();
}
}
$pageSelect = new PageSelector();
$pageSelect -> run();
//calls the selector to run after user has selected.
它对所有其他页面都有效吗?您是否为页面输入了随机URL或随机值?重写规则是否到位?所有其他页面都有效,但一个似乎不起作用,即使我输入了错误的URL也不会触发404页面输入页面的随机值我应该将其放置在哪里?><我对PHP很陌生,如果需要的话,只需更改代码中的行$_获取['page']{到我提到的那一个。ooo我试过了,但它不起作用仍然是同一个问题只是说当输入错误的页面时页面不存在我只是尝试了整个代码剪切并粘贴到我的页面上它不起作用:试着回显$u GET['page']就在切换之前。我个人认为,当你确定这是一个404页面时,我会做一个404,然后将其转到404的案例。之后,我会有一个默认值,转到不同的错误页面,这更像是一个错误的500错误。
<?php
//begin the webpage
//index page selector placed into an array for options for the user to select
//session started recording attributes
session_start();
error_reporting(0);
//including other view class and model class function to be used on this page
include 'views/viewClass.php';
include 'classes/modelClass.php';
class PageSelector {
public function run() {
//Check to make sure they are loading a legit page first
if($_SERVER['PHP_SELF'] != 'index.php'){
$_GET['page'] = '404';
}
//has the user decided which page to go to?
//if not then we will direct him to the homepage
if(!$_GET['page']) {
$_GET['page'] = 'Home';
}
//extending a new model class
$model = new Model;
//get the page information
$pageInfo = $model -> getPageInfo($_GET['page']);
//select which page to include when the user clicks
//on either register/home/my account/my bids/my sell/completed auctions/edit etc..etc..etc..
switch($_GET['page']) {
case 'Register':
include 'views/register.php';
$view = new HomeView($pageInfo, $model);
break;
case 'Home':
include 'views/homeView.php';
$view = new HomeView($pageInfo, $model);
break;
case 'My Account':
include 'views/myaccount.php';
$view = new myaccount($pageInfo, $model);
break;
case 'My Bids':
include 'views/mybids.php';
$view = new Mybids($pageInfo, $model);
break;
case 'My Sell':
include 'views/mysell.php';
$view = new mysell($pageInfo, $model);
break;
case 'Completed Auctions':
include 'views/checkout.php';
$view = new checkout($pageInfo, $model);
break;
case 'editProduct':
include 'views/editProductView.php';
$view = new EditProductView($pageInfo, $model);
break;
case 'addProduct':
include 'views/addProductView.php';
$view = new AddProductView($pageInfo, $model);
break;
case 'deleteProduct':
include 'views/deleteProductView.php';
$view = new DeleteProductView($pageInfo, $model);
break;
case 'deleteUser':
include 'views/deleteUserView.php';
$view = new DeleteUserView($pageInfo, $model);
break;
case 'search':
include 'views/search.php';
$view = new search($pageInfo, $model);
break;
case 'product':
include 'views/productView.php';
$view = new ProductView($pageInfo, $model);
break;
case '404':
include 'views/404.php';
$view = new error($pageInfo,$model);
break;
}
echo $view -> displayPage();
}
}
$pageSelect = new PageSelector();
$pageSelect -> run();
//calls the selector to run after user has selected.