【问题标题】:Add link to my PHP echo添加链接到我的 PHP 回显
【发布时间】:2017-02-07 16:06:04
【问题描述】:

所以我有一个 PHP 脚本,可以在我的数据库中获取一些 ID 的“名称”。然后,当用户开始在搜索栏中搜索时,它会在我的索引页面上显示这些“名称”。 我似乎无法正常工作的是href链接。我希望出现的“名称”,超链接到他们的给定页面。 示例:我在搜索栏中搜索 The Beatles 'The Beatles' 显示在我的搜索结果中,当我点击 'The Beatles' 链接时,它会将我带到 www.mywebsite.com/'thebeatles'.html,它给了我 thebealtes .html 基于我的 PHP 脚本获取的“名称”。

$host = "localhost";
$user = "root";
$password = "";
$db = "images";

$conn=mysqli_connect($host, $user, $password, $db);

if(!empty($_GET['q'])){

    $q = $_GET['q'];
    $query = "SELECT * FROM names WHERE names like '%$q%'";
    $result = mysqli_query($conn, $query);
    while($row = mysqli_fetch_assoc($result)){

        $name = $row['names'];

        echo '<a href=..........><div class="searchoutput">'.$name.'</a><br><div class="col-md-8"></div></div>';

    }
}

如果有人可以帮助我弄清楚我在哪里放了 href=........那就太好了。

【问题讨论】:

  • 您有一个名为names 的表,其中包含一个也称为names 的列...?
  • 是的,这是正确的,我遵循了一个在线教程,这就是它的设置方式。一旦我弄清楚了这一切,我将创建具有适当名称的适当数据库。
  • 不错的 SQL 注入漏洞利用。
  • @QuolonelQuestions 如何修复这个漏洞?

标签: php mysql


【解决方案1】:

虽然有一些很好的答案,但他们都有一些他们忽略的错误。

  1. href 属性需要引号

  2. 在 a-tag 中打开 div 时,需要先关闭 div,然后再关闭 a-tag

    $host = "localhost";
    $user = "root";
    $password = "";
    $db = "images";
    
    $conn=mysqli_connect($host, $user, $password, $db);
    
    if(!empty($_GET['q'])){
    
    $q = $_GET['q'];
    $query = "SELECT * FROM names WHERE names like '%$q%'";
    $result = mysqli_query($conn, $query);
    while($row = mysqli_fetch_assoc($result)){
    
        $name = $row['names'];
        $href = str_replace(' ', '', strtolower($name));
    
        echo '<a href="'.$href.'.html"><div class="searchoutput">'.$name.'</div></a><br><div class="col-md-8"></div>';
    
        }
    }
    

【讨论】:

  • 更不用说存储它的正确方法是使用一列带有名称,一列用于“访问名称”/href - 所以你不依赖于使用名称中的内容URL(它会回来咬你)。如果您有一列名称,在“名称”列中说“The Beatles”,而有一列用于“href”,说“thebeatles.html”,您只需拉动它们,并相应地分散它们。跨度>
  • 我同意将每个波段的 href 存储在单独的列中会是一种更好的结构,并且可以轻松处理带有特殊字符的波段名。更进一步,我不会为每个乐队制作一个像“thebeatles.html”这样的html页面,但我会制作一个像“detail.php?band=thebeatles”这样的php页面,这样你就不必创建一个每个乐队的 html 页面。
【解决方案2】:
$link = str_replace(' ', '', strtolower($name));
echo '<a href="'.$link.'html"><div class="searchoutput">'.$name.'</a><br><div class="col-md-8"></div></div>';

【讨论】:

  • 先生,您救了我一些心痛。谢谢你。工作就像一种享受:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-19
  • 2023-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-20
  • 1970-01-01
相关资源
最近更新 更多