如何访问我的 url 中的 slug 值?

How to access the slug value in my url?

我想知道为什么我的代码没有显示任何结果。

我在home.php页面有一个link,像这样:

<a href="../musica/'.$row['slug'].'">Click here</a>`

musica.php 页面中,我通过以下方式访问 slug:

$slug = $_GET['slug'];

我的查询如下所示:

select * from musical layers where slug = $slug

但它没有返回任何东西。

这是我的 hyperlink 转到的完整 url:

scrashmusicas.epizy.com/musica/wesley-safadao-banda-garota-safada

没有错误,但我无法获取 slug 值。谁能帮帮我?

这是我的 musica.php 文件的相关部分:

$slug = $_GET['slug'];
$result_capa = "select * from capas_musicas where slug = $slug";
$resultados_capa = mysqli_query($conn, $result_capa);
while($row = mysqli_fetch_assoc($resultados_capa)){
    echo '
        <li>
            <a href="../musica/'.$row['slug'].'">
                <div class="box_destaque">
                    <img src="'.$row['capa_album'].'" border="0"/>
                    <strong>'.$row['nome_album'].'</strong>
                    <span>'.$row['categoria_album'].'</span>
                </div>
            </a>
        </li>
    ';
}

试试改成这样:

<a href="../musica/?slug='.$row['slug'].'">Click here</a>

有几件事需要解决...

$slug = $_GET['slug'];

If/When $_GET 超全局中没有 slug 键,您将收到通知。在尝试 access/use 值之前,您需要检查它是否 isset()

$result_capa = "select * from capas_musicas where slug = $slug";

此查询不安全。每次在查询中使用 user-supplied 或通常不安全的数据时,都需要使用带占位符的准备语句。对于您当前的代码,$slug 至少需要 single-quote-wrapped(当然除非它是一个整数——但仍然使用准备好的语句)

至于 $_GET,您没有在 href 值中提供查询字符串,因此不会通过 $_GET.

传递任何内容

在您的 musica.php 脚本上调用 $_SERVER['REQUEST_URI'] 将产生此字符串值:

/musica/wesley-safadao-banda-garota-safada

要访问 slug 值,请使用:

$path=parse_url($_SERVER['REQUEST_URI'],PHP_URL_PATH);
$slug=substr($path,strrpos($path,'/')+1);

或者只是:

$slug=substr($_SERVER['REQUEST_URI'],8);  // access substring after "/musica/"