【问题标题】:Avoid building the same page 50 times避免构建同一页面 50 次
【发布时间】:2023-01-20 22:55:28
【问题描述】:

我遇到的问题很合乎逻辑,但我以前从未想过它,而且我找不到任何关于它的文档:

用户会点击他/她想要获得服务的城市(英国的一个城市),但是这些城市的页面都是一样的,只有两点不同:

  1. 指定城市的标题。
  2. 用户将拨打公司的电话号码。
    <li class="dropdown">
        <a href="eletricalpage.php">Electrical</a>
        <ul>
            <li class="dropdown">
        <a href="#">LONDON</a>
        <ul>
            <li><a href="#">Lewisham</a></li>
            <li><a href="#">Greenwich</a></li>
        </ul>
    </li>
    <li class="dropdown">
        <a href="#">SOUTH EAST</a>
        <ul>
            <li><a href="#">Berkshire</a></li>
            <li><a href="#">Southampton</a></li>
            <li><a href="#">Guildford</a></li>
            <li><a href="#">Maidstone</a></li>
            <li><a href="#">Brighton</a></li>
        </ul>
    </li>
    <li class="dropdown">
        <a href="#">SOUTH WEST</a>
        <ul>
            <li><a href="#">Bristol</a></li>
            <li><a href="#">Swindon</a></li>
        </ul>
    </li>
    

    有什么方法可以避免为公司提供服务的城市构建 50 个页面?我只想构建一个页面,然后当用户单击城市时,会显示标题和编号已更改的页面。 我想用 PHP 完成这项工作。

【问题讨论】:

  • 你在使用任何框架或什么吗?
  • 它可以用数千种不同的方式来完成。重点是有一个独特的端点,如 /citydetails.php,它将根据条件做出响应。因此,在最简单的形式中,您可以将一个 post 参数传递给您将使用 $_POST['city'] 在 php 中获取的页面,并让您的逻辑根据该值回显正确的信息
  • 这通常是数据库驱动的站点所做的,但是如果没有数据库,您可以使用 Javascript 根据任何相关参数修改单个页面
  • 这是普通的 php,前面我使用的是 html、css(bootstrap)、js
  • @ProfessorAbronsius 是否有任何我应该参考的文档?

标签: javascript php html css


【解决方案1】:

尝试这个:

PHP:

// getInfo.php

<?php
$cities = [
  'Lewisham' => ['title' => 'Title for Lewisham', 'phone_number' => '+41xxxxxxx'],
  'Greenwich' => ['title' => 'Title for Greenwich', 'phone_number' => '+41xxxxxxx'],
  // And more...
];

// Get the city name from input
$city = htmlspecialchars($_GET['city']);

// Get the city information from your data
$city_info = $cities[$city];

if(!$city_info){
    exit(404);
}

// Include your single page to display information
include "displayInfo.php";

PHP:

// displayInfo.php

<html>
    <head>
        <title><?=$city_info['title']?></title>
    </head>
    <body>
        Phone number of <?=$city?>: <?=$city_info['phone_number']?>
    </body>
</html>

在您的 html 中,您应该将城市链接到 getInfo.php 文件,如下所示:

<li><a href="getInfo.php?city=Lewisham">Lewisham</a></li>

注意:

【讨论】:

    【解决方案2】:

    您只需在页面脚本中创建一个包含城市名称和电话号码的数组即可。 稍后,您可以使用全局变量 $_GET 通过对页面的 HTTP GET 请求来获取请求的城市。

    <?php
    $cityPhoneNumbers = [
        "London" => "1234-555-1234",
        "Manchester" => "1266-555-4321",
    ];
    $requestedCity = $_GET["city"];
    if (!empty($requestedCity)) {
        if (!empty($cityPhoneNumbers[$requestedCity])) { ?>
            Our number in <?= $requestedCity ?> is <?= $cityPhoneNumbers[
         $requestedCity
     ] ?>
            <?php }
    }
    ?>
    

    您现在可以像这样链接到此页面:/number.php?city=London 为避免在您的 URL 中使用问号,您可以使用 Apache mod_rewrite 或类似工具。

    【讨论】:

    • 请注意,使用它时你很容易受到 reflected XSS 攻击,因为你只是简单地反射 get 参数而不转义它
    猜你喜欢
    • 2011-04-12
    • 1970-01-01
    • 2021-07-18
    • 1970-01-01
    • 2015-04-15
    • 1970-01-01
    • 1970-01-01
    • 2015-11-28
    • 2021-01-09
    相关资源
    最近更新 更多