0

リンクの 1 つをクリックすると別の php ファイルが含まれ、それによってコンテンツが変更される単純な php ページを作成しました。以下はこれまでのコードです。唯一の問題は、リンクをクリックするたびに URL が index.php?page=page1 に変更されることです。これは見栄えがよくありません。

<html>
<head>
<title> PHP Includes </title>
</head>
<body>
<h1> This is the home page </h1>
<ul>
    <li><a href="includes.php?page=page1">Page1</a> </li>
    <li><a href="includes.php?page=page2">Page2</a></li>
    <li><a href="includes.php?page=page3">Page3</a></li>
 </ul>
</body>
</html>


<div style='width:300px; height: 200px; border: 1px solid #000;'>

<?php
error_reporting(E_ALL ^ E_NOTICE);

$page = $_GET['page'];
$pages = array('page1', 'page2', 'page3');
if (!empty($page)) {
    if(in_array($page,$pages)) {
        $page .= '.php';
        include($page);
    }
    else {
        echo 'Page not found. Return
        <a href="includes.php">home</a>';
    }
}
else {
    include('page1.php');
}
?>
</div>

アドレスバーの URL を変更せずに、同じことを行う方法 (コンテンツを変更するだけ) があるかどうか疑問に思っていました。

4

4 に答える 4

1

PHP は、追加するコンテンツへの参照を使用して独自のページをリロードしています。$_GET メソッドはこれを行うための自然な方法ですが、他に 2 つのオプションが思い浮かびます。

1) セッション変数を使用して、ロードするページを参照します。2) ページが実際にリロードされないように AJAX を使用します。代わりに、AJAX を介して新しいコンテンツをページに読み込みます。

セッション変数ルートに行きたい場合は、このようなものがそれを行います。

<?php
  session_start();

  if($_GET['page'])
  {
    // set session variable
    $_SESSION['page'] = $_GET['page'];
    // redirect to hide URL change
    header('Location: includes.php');
  }
?>

<html>
<head>
<title> PHP Includes </title>
</head>
<body>
<h1> This is the home page </h1>
<ul>
    <li><a href="includes.php?page=page1">Page1</a> </li>
    <li><a href="includes.php?page=page2">Page2</a></li>
    <li><a href="includes.php?page=page3">Page3</a></li>
 </ul>
</body>
</html>


<div style='width:300px; height: 200px; border: 1px solid #000;'>

<?php
error_reporting(E_ALL ^ E_NOTICE);

$page = $_SESSION['page'];
$pages = array('page1', 'page2', 'page3');
if (!empty($page)) {
    if(in_array($page,$pages)) {
        $page .= '.php';
        include($page);
    }
    else {
        echo 'Page not found. Return
        <a href="includes.php">home</a>';
    }
}
else {
    include('page1.php');
}
?>
</div>
于 2013-08-09T13:46:18.197 に答える
1

GET メソッドに固執し、サーバーのmod_rewrite機能を使用して、見栄えの良い URL を作成します。/page1

また

POST メソッドを使用し、フォーム要素を介して引数を送信します。例:

<form action= '' method = POST>
<select name=page>
<option value=page1>Page 1</option>
</option>
<input type=submit />
</form>

明らかに、$_GET の代わりに $_POST を使用して値にアクセスします。

于 2013-08-09T13:41:19.283 に答える
0

ページに 3 つの異なる div を作成し、このボタンのいずれかをクリックすると、javascript で div を非表示または表示することができます。正しく呼び出すには、各 div の ID を設定する必要があります

于 2013-08-09T13:42:19.183 に答える
0

PHPコードを処理するには、新しいリクエストを作成する必要があります。問題が URL アドレスだけにある場合:

同じアドレスを保持する ajax/iframe リクエストを作成できます。

アヤックス

index.php

<html>
<head>
    <title> PHP Includes </title>
    <script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
    <script type="text/javascript">
        function loadContent(page) {
            $.ajax({
                url: "includes.php?page=" + page,
                complete: function(response) {
                    $('#content').html(response);
                }
            });
        }
    </script>
</head>
<body>
    <h1> This is the home page </h1>
    <ul>
        <li><a href="javascript:loadContent('page1')">Page1</a></li>
        <li><a href="javascript:loadContent('page2')">Page2</a></li>
        <li><a href="javascript:loadContent('page3')">Page3</a></li>
    </ul>
    <div id="content" style='width:300px; height: 200px; border: 1px solid #000;'></div>
    <script type="text/javascript">
        // loading default page
        loadContent('page1');
    </script>
</body>
</html>

includes.php

<?php
error_reporting(E_ALL ^ E_NOTICE);

$page = $_GET['page'];
$pages = array('page1', 'page2', 'page3');
if (!empty($page)) {
    if(in_array($page,$pages)) {
        $page .= '.php';
        include($page);
    } else {
        echo 'Page not found.
    }
} else {
    include('page1.php');
}
?>

Iframe (javascript を使用しない)

<li><a href="includes.php?page=page1" target="iframe_id">Page1</a></li>

または、わかりやすいURL (apache2 の mod_rewrite)を利用できます。

<li><a href="includes/page1">Page1</a></li>
<li><a href="includes/page2">Page2</a></li>
<li><a href="includes/page3">Page3</a></li>

フレンドリー URLグーグルについての詳細

于 2013-08-09T13:42:01.400 に答える