Jump to content
WitchMad

Como fazer URL Amigável com variáveis na URL?

Recommended Posts

Ooi guys! Seguinte:

Estou precisando fazer uma URL amigável para as publicações de um fórum

Para consultar a publicação é enviado um valores pela URL, dessa forma:

post.php?id=1&titulo=Tecnologia da Informação ligada ao Poder Judiciário - Um pequeno Histórico

Eu queria fazer com que ficasse dessa forma a URL:

post/1/tecnologia-da-informação-ligada-ao-poder-judiciário-um-pequeno-histórico

 

Não faço a mínima ideia de como fazer isso.

Desde já, Agradeço

Share this post


Link to post
Share on other sites

Existem diversas formas de trabalhar com urls amigáveis.

Eu gosto de fazer assim:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?url=$1

 

Então tudo que entrar depois do endereço do website passa ser uma string url mesmo com barras etc...

O que faço é buscar todas as ocorrências das barras e separar em índices

<?php
/*
 * Isso poderia ser um método de classe que retornasse o array $url
 */

// Pegamos o valor que vem do apache pelo htacess url
$filter = filter_input(INPUT_GET, 'url', FILTER_DEFAULT);
// Se existir algum valor usamos se não o valor padrão será inicio
$setUrl = empty($filter) ? 'inicio' : $filter;
// Quebramos então em um array todas as ocorrencias de barras
$explode = explode('/', $setUrl);
// Caso haja algum valor nulo ou vazio ele será removido
$url = array_filter($explode);

var_dump($url);

 

Então nesse caso (removi os acentos):

post/1/tecnologia-da-informacao-ligada-ao-poder-judiciario-um-pequeno-historico

<?php
$url[0]; // É "post"
$url[1]; // É "1"
$url[2]; // É "tecnologia-da-informacao-ligada-ao-poder-judiciario-um-pequeno-historico"

 

No mais é criar tratamentos para converter espaços em traços e acentos em letras comuns. E principalmente para remover códigos caso vá trabalhar com banco de dados.

 

Share this post


Link to post
Share on other sites

Cara, muito obrigado, já me ajudou muito!

Mas ainda sobra umas dúvidas minha:

Como faço para buscar os valores de id e título que irão sair na url?

Como redireciono para a página post?

Share this post


Link to post
Share on other sites
Em 12/07/2019 at 09:24, WitchMad disse:

Cara, muito obrigado, já me ajudou muito!

Mas ainda sobra umas dúvidas minha:

Como faço para buscar os valores de id e título que irão sair na url?

Como redireciono para a página post?

Simples não?

Tudo que entra e GET "url" ao qual temos o array, é só ir ap índice do array que contém essa informação.

Isso é você quem vai controlar no código ao repassar os links.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By lordstarlight
      Olá, 
       
      Como posso bloquear todos ips, menos o meu para acesso ao meu site?
      preciso fazer isto para poder fazer manutenção.
       
      obrigado!
    • By lordstarlight
      Olá pessoal,
       
      Tenho uma base de dados onde há um campo decimal que guarda um valor tipo (10.20).
      Quanto tento retornar o valor multiplicado por quantidade (10.2 * 2) retorna apenas 20,00
       
      $subTotal = $qtdeItem * $precoProduto;
      echo  'R$ '.number_format($subTotal,2,",",".");?><br>
       
      Como faço para retornar 20,40 ?
    • By groudon900
      Estou cursando aula pra aprender php e eu estava montando uma pagina de login, está tudo certo, mas não consegue conectar de jeito nenhum vou mandar o código pra vocês darem uma olhada
      banco de dados "aula"
      tabela "usuarios"
       
      contem, usuarios, senha, email e ID
       
       
      <?php require_once"config.php" ?> <?php if ( isset($_POST["usuario"])) { $usuario = $_POST["usuario"]; $senha = $_POST["senha"]; $login = "SELECT * "; $login .= "FROM usuarios "; $login .= "WHERE usuario = '{$usuario}' and senha = '{$senha}' "; $acesso = mysqli_query($conecta, $login); if ( !$acesso) { die("Falha na consulta ao banco!"); } $informacao = mysqli_fetch_assoc($acesso); if ( empty($infomacao)) { $mensagem = "login sem sucesso"; } else { header("location:listagem.php"); } } ?>  
    • By Emilio Saymon
      tenho um site que precisa que assim que eu aperte um botão ele verifiquei se a variavel sala for sala 1 ele abre no modal da sala1 se não abre no modal da sala2. Dei uma pesquisada e vi que da pra fazer com a função onclik(), mas não tenho noção como fazer. Aqui vai o código.
      botão <td><a href="#" class="btn btn-primary" data-toggle="modal" data-target="#modalLoginForm">XXX</a></td> <!-- sala 1 --> <div class="modal-body mx-3"> <div class="md-form mb-4"> <form method="POST" action="valida.php"> <h6>Sala 1</h6> <input type="password" class="form-control validate" name="senha"> </div> </div> <button type="submit" class="btn btn-primary" name="enviar">Entrar</button> </form> </div> </div> </div> </div> </div> <!-- sala 2 --> <div class="modal fade" id="modalLoginForm2" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header text-center"> <h4 class="modal-title w-100 font-weight-bold">Senha</h4> <button type="btn-primary" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true">&times;</span> </button> </div> <div class="modal-body mx-3"> <div class="md-form mb-4"> <form method="POST" action="valida.php"> <p>Sala 2</p> <input type="password" class="form-control validate" name="senha2"> </div> </div> <div class="modal-footer d-flex justify-content-center"> <button type="submit" class="btn btn-primary" name="enviar1">Entrar</button> </form> </div> </div> </div> </div>  
    • By Thalles Rangel
      Disponibilizando para vocês, sistema PHP 7 controle de estoque..
      https://www.4shared.com/rar/NsY_o5qwfi/controleDeEstoquePHPCodigoFont.html?
       
       
       
       
      OBS. NÃO SEGUE UM PADRÃO - É PARA QUEM ESTÁ APRENDENDO
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.