0

私は自分のローカルホストサーバー(Apache、MYSQL、MYPHPADMIN)でWebサイトの始まりをまとめていました。$ _GETを使用してナビゲーションを動的にリンクしようとするまで、すべてが正常に機能しているように見えました。index.phpのコードは次のとおりです。

<?php include('Config/setup.php') ?>
<?php

if ($_GET['page'] == ''){
$pg = 'home';
} else {
$pg =$_GET['page']; 
}

?>

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>FTS</title>

<link rel="stylesheet" type="text/css" href="css/Styles.css"/>

</head>

<body>
 <div class ="header temp_Block">
      <?php include('templates/header.php');?>
</div>

<div class ="main_nav temp_Block">
    <?php include('templates/main_nav.php');?>
</div>
<div id ="Content">
    <div class ="main_content temp_Block ">
        <?php
        include ('content/'.$pg.'php');

        ?>


    </div>
</div>     
    <div class = "footer temp_Block">
    <?php include('templates/footer.php');?>
    </div>

</body>

</html>

リンクをチェックして、自宅、サービス、私たちについてなど、さまざまなページにリンクできるかどうかを確認したところ、次のエラーが発生しました。

Notice: Undefined index: page in C:\xampp\htdocs\test\index.php on line 6

Warning: include(content//content/homephp): failed to open stream:
No such file or directory in C:\xampp\htdocs\test\index.php on line 35

Warning: include(): Failed opening 'content//content/homephp' for inclusion
(include_path='.;C:\xampp\php\PEAR') in C:\xampp\htdocs\test\index.php on line 35

そこで、これを実行して、$_GETで何が起こっているかを確認しました。

var_dump($_GET);
exit;

配列は空です。ITは何も示していません。私は以前にこの方法を使用しましたが、違いはホストされたサイトにいたことです。アクセス許可に問題があるかどうかを確認しましたが、apache.confを確認したところ、何も問題がないように見えました。

4

3 に答える 3

1

最初に変数が設定されているかどうか確認してから、関連する値があるかどうかを確認します。

if (isset($_GET['page']) && $_GET['page'] !== ''){
    $page = $_GET['page'];
} else {
    $page = 'home';
}

ただし、ディレクトリトラバーサル攻撃には注意してください。あなたのコードは、攻撃者が任意のファイルを表示できるようにします。

于 2013-02-23T01:33:51.497 に答える
1

「。」を忘れました。ファイル名(拡張子の直前)。コードのセクションの後:

if ($_GET['page'] == ''){
  $pg = 'home';
} else {
  $pg =$_GET['page']; 
}

以下を追加します。

$pg = $pg . ".";

または、次の行を次のように変更します。

include ('content/'.$pg.'php');

に:

include ('content/'.$pg.'.php');
于 2013-02-23T01:34:20.700 に答える
0

ブロはあなたがTheDigiCraftから来たと思います。私もそこで行き詰まり、10分前のようにこの質問をしたと思います。ここ(https://stackoverflow.com/questions/17501271/i-have-error-in-coding-plz-fix-it-for-me)。if else コードをこれに置き換えるだけで動作します:)

<?php

     echo"the page is now " ;

     if(isset($_GET['page']) == '')

         {
            echo "home";
         }
     else
         {
            echo $_GET['page'];
         }

?>

ところで私のコードはこれで、エラーはありません。私もそのコースを学んでいます:D。

<?php
// setup code here
include('config/setup.php');


?>


<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title> Dynamic Website Project </title>
<link rel="stylesheet" type="text/css" href="css/styles.css">

</head>
<body>

<div class="header temp_block">
    <?php include('template/header.php'); ?>
</div>

<div class="nav_menu temp_block">

<?php include('template/main_nav.php'); ?>

</div>

<div class="content temp_block">
    <?php

     echo"the page is now " ;

     if(isset($_GET['page']) == '')

         {
            echo "home";
         }
     else
         {
            echo $_GET['page'];
         }
    ?>
</div>

<div class="footer temp_block">

<?php include('template/footer.php'); ?>

</div>

</body>
</html>
于 2013-07-06T09:08:32.130 に答える