繁体   English   中英

php中的动态html页面

[英]dynamic html pages in php

即时通讯新手到我和我尝试使用PHP的动态html页面一切似乎没问题,但当我尝试动态制作页面时,错误显示如下

Notice: Undefined index: page in C:\xampp\htdocs\myfolder\website\inter.php on line 5

我在网上检查了一下,有人坚持在$前面使用这个(@)但是当我尝试点击导航栏设计按钮时我得到了这个错误

在此服务器上找不到请求的URL。 引用页面上的链接似乎是错误的或过时的。 请通知该页面的作者有关错误的信息。

<?php

include ("includes/header.html");
include ("includes/navbar.html");
if ($_GET['page'] == "design") {
      include ("includes/design.html"); 
}
else {
     include ("includes/home.html");
}  

include ("includes/footer.html");
?>

有人帮忙,因为这个错误正在倒退

你应该避免使用@并检查是否使用例如isset()来设置变量

<?php

include ("includes/header.html");
include ("includes/navbar.html");
if (isset($_GET['page']) && $_GET['page'] == "design"){
      include ("includes/design.html"); 
  }else{
     include ("includes/home.html");
}  

include ("includes/footer.html");
?>

对于一些额外的功劳,请查看switch case语句,因为您的脚本变得更加清晰:

<?php
include ("includes/header.html");
include ("includes/navbar.html");

$page=(isset($_GET['page']))?$_GET['page']:'home';
switch($page){
    case "home":
        include ("includes/home.html");
        break;
    case "design":
        include ("includes/design.html");
        break;
    case "otherPage":
        include ("includes/otherpage.html");
        break;
    default:
        include ("includes/404.html");
        break;
}

include ("includes/footer.html");
?>

该错误消息说,索引page中数组$_GET 没有定义(即没有?page=xxx )。

那么当没有页面传递给脚本时你想做什么?

如果设置了变量,您可以使用isset()进行检查:

<?php

include ("includes/header.html");
include ("includes/navbar.html");

// $page defaults to an empty string
// If the "page" parameter isn't passed, this script will include "home.html"
$page = '';
if ( isset($_GET['page']) )
  $page = $_GET['page'];

if ($page == "design")
{
      include ("includes/design.html");
}

else // If $page isn't "design" (, "...") or $page is an empty string, include "home.html"!
{
     include ("includes/home.html");
}  

include ("includes/footer.html");
?>

顺便说一句,你不应该使用@抑制所有警告! 原因有很多;)

替换此行:

if ($_GET['page'] == "design") {

这一个:

if (isset($_GET['page']) && $_GET['page'] == "design") {

通过此更改,您可以首先检查$ _GET数组中是否存在“page”键,然后(如果是的话)检查该值是否为“design”。

不要在声明前面使用@。 它用于关闭错误消息,但这将使您难以调试应用程序。

您最有可能使用浏览器在http:// localhost /http://127.0.0.1/上请求您的页面。 $ _GET是PHP中的全局数组,由使用GET请求方法传递给PHP脚本的变量组成。 像这样:

http://www.google.com/search?q=php

search是一个脚本, ?q=php是一个GET请求。 只需将?page=design传递给您的脚本, page变量就可以使用$ _GET数组。 所以你应该在你的浏览器地址中键入类似http://localhost/index.php?page = design的内容

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM