Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Jack Oliveira

URL AMIGAVÉL

Recommended Posts

Ola boa tarde a todos 

Poderia me dar uma ajuda se for possível

teria uma maneira de colocar url amigavél simples que funciona apenas em um dos arquivos

por ex:

eu tenho um arquivos recebe todos os dados do banco de dados sendo ele uma pagina diferenciadas para clientes

e tenho outro arquivo que faz as buscas no banco de dados para direcionar para o arquivos que receber todos os dados do banco

tenho o arquivo buscar.php este que traz a pesquisa feita 

e tenho o arquivos noticia.php  este mostra todos os conteudos do banco cadastrado por id

ou seja este arquivo mostrar ele esta aparecendo dessa forma

site.net/noticias/noticia.php?id=200

e eu quero que ele possa aparecer mais o menos assim

site.net/noticias/200/nome-da-noticia



<?php
//ARQUIVO buscar.php
//ESTE QUE FAZ TODAS AS BUSCAS NO BANCO DE DADOS MOSTRANDO PARA OS CLIENTE E MOSTRANDO UM LINK PARA VISUALIZAR TODOS OS CONTEUDO

$host = 'localhost';

$user = 'root';

$pass = '';

$db   = 'news_2018';


$noticias = $_POST['noticias'];
$con = mysqlI_connect($host, $user, $pass, $db);



$sql = "SELECT* FROM noticias WHERE titulo LIKE '%$noticias%' OR descricao LIKE '%$noticias%'OR data LIKE '%$noticias%'OR id_categoria LIKE '%$noticias%'order by DESC LIMIT 100";
$res = mysqli_query($con, $sql);
while ($dados = mysqli_fetch_array($res)) {

?>

<!-- ESTE AQUI É O QUE LINK PARA O ARQUIVO noticia.PHP onde mostra todo os conteudos
-->
<div class="btn-group btn-group">
  <a href="noticias/noticia.php?id=<?php echo $dados["id"];?>" target="_blank" class="btn btn-success btn-sm">Mostra mais...</a>

ESTE É O CÓDIGO DA noticia

<?php
// ESTE É O ARQUIVO QUE MOSTRA TODAS AS NOTICIAS DA PAGINA OU SEJA A NOTICIA DETALHADA EX: site.net/noticias/noticia.php?id=200
// QUANDO CLICAR NO LINK PARA ENTRA NESTA PAGINA ELA APARECER ASSIM EX: site.net/noticias/200/nome-da-noticia   ou mostra apenas assim site.net/noticias/nome-da-noticia

    require_once 'database/conexao.class.php';
    require_once 'database/crud.class.php';

    $con = new conexao(); // instancia classe de conxao
    $con->connect(); // abre conexao com o banco
    @$getId = $_GET['id'];  //pega id para ediçao caso exista
    if(@$getId){ //se existir recupera os dados e tras os campos preenchidos
        $consulta = mysql_query("SELECT * FROM noticias WHERE id = + $getId");
        $dados = mysql_fetch_array($consulta);

//Busca na tabela o numero de vezes que a página ja foi visitada
$busca = "Select * FROM noticias WHERE id = {$getId}";
$exe = mysql_query($busca);

$resultado = (mysql_fetch_array($exe));

//Pega o numero de visistas que consta na tabela, adiciona mais um e atualiza
$visitantes = $resultado['visitas'] + 1;
$altera = "UPDATE noticias SET visitas = '{$visitantes}' WHERE id = '{$getId}'";
$exe1 = mysql_query($altera);

//Faz uma nova busca e retorna o numero de visitas depois da atualização
$exe = mysql_query($busca);
$total = (mysql_fetch_array($exe));
$visitas = $total['visitas'];

    }

?>

Eu já olhe alguns tutorial de url mais eu não consegui fazer ela funcionar

 e só me falta isso para eu finalizar o meu projeto aqui

se puderem me ajudar ai ficarei muito grato e se puder tbm me mostrar de como fazer bem detalhado onde vai cada coisa pra não precisar eu ficar aqui pedindo a todos pra me ajudarem

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Maurinho26 Bom dia! Maninho eu peguei este aqui na net só que não estou sabendo como fazer ele funcionar certo quando clicar e gerar a url

 

Este é o HTACCESS

#-------------------------------------------------------------------
# PERMISSIONANDO REESCRITA
#-------------------------------------------------------------------
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f

#-------------------------------------------------------------------
# EXTENSAO PHP
#-------------------------------------------------------------------
RewriteRule ^(.*)$ $1.php

#-------------------------------------------------------------------
# URL AMIGAVEL
#-------------------------------------------------------------------
RewriteRule ^noticia\/?([0-9]+)\/?(.+)\/?$ noticia.php?titulo=$1

Este é o código

 

esta do mesmo jeito que peguei ele 

<?php
    //URL DEBUG CHARACTERS
    function encodeSEOString($string) {
        $string = preg_replace("`\[.*\]`U", "", $string);
        $string = preg_replace('`&(amp;)?#?[a-z0-9]+;`i', '-', $string);
        $string = htmlentities($string, ENT_COMPAT, 'utf-8');
        $string = preg_replace("`&([a-z])(acute|uml|circ|grave|ring|cedil|slash|tilde|caron|lig|quot|rsquo);`i", "\\1", $string);
        $string = preg_replace(array("`[^a-z0-9]`i", "`[-]+`"), "-", $string);
        return strtolower(trim($string, '-'));
    }

    $titulo='Conheça as diferenças entre os processadores da sétima geração da Intel';
    echo "
        <a href='/noticia/".encodeSEOString($titulo).".'>ABRIR NOTICIA</a>;
    "
    ;
 ?>

       ele que não estou conseguindo fazer ele aparecer a url quando clico nela para abrir as noticias que esta todas pelo id

Compartilhar este post


Link para o post
Compartilhar em outros sites

O primeiro ponto é verificar se o .htaccess está funcionando corretamente. Apague todo o conteúdo do arquivo e escreva qualquer coisa nele (caracteres aleatórios). Se ocorrer o erro 500, está tudo certo. Se não acontecer nada, o arquivo não está sendo interpretado.

 

Na parte de regras, esta regra é abrangente demais:

#-------------------------------------------------------------------
# EXTENSAO PHP
#-------------------------------------------------------------------
RewriteRule ^(.*)$ $1.php

E ele acaba não indo para a segunda regra.

 

Inverta a ordem e adicione [L] no final da regra para que não continue lendo as regras adiante:

#-------------------------------------------------------------------
# URL AMIGAVEL
#-------------------------------------------------------------------
RewriteRule ^noticia\/?([0-9]+)\/?(.+)\/?$ noticia.php?titulo=$1 [L]

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Gabriel Heming Boa tarde obrigado ai, 

Mas deixa te falar nesta pagina onde que vai ser trocada url  noticia.php?id=200 precisa por alguma dentro do <?php ?

ou ter que mudar ou não precisa

<?php
// ESTE É O ARQUIVO QUE MOSTRA TODAS AS NOTICIAS DA PAGINA OU SEJA A NOTICIA DETALHADA EX: site.net/noticias/noticia.php?id=200
// QUANDO CLICAR NO LINK PARA ENTRA NESTA PAGINA ELA APARECER ASSIM EX: site.net/noticias/200/nome-da-noticia   ou mostra apenas assim site.net/noticias/nome-da-noticia

    require_once 'database/conexao.class.php';
    require_once 'database/crud.class.php';

    $con = new conexao(); // instancia classe de conxao
    $con->connect(); // abre conexao com o banco
    @$getId = $_GET['id'];  //pega id para ediçao caso exista
    if(@$getId){ //se existir recupera os dados e tras os campos preenchidos
        $consulta = mysql_query("SELECT * FROM noticias WHERE id = + $getId");
        $dados = mysql_fetch_array($consulta);

//Busca na tabela o numero de vezes que a página ja foi visitada
$busca = "Select * FROM noticias WHERE id = {$getId}";
$exe = mysql_query($busca);

$resultado = (mysql_fetch_array($exe));

//Pega o numero de visistas que consta na tabela, adiciona mais um e atualiza
$visitantes = $resultado['visitas'] + 1;
$altera = "UPDATE noticias SET visitas = '{$visitantes}' WHERE id = '{$getId}'";
$exe1 = mysql_query($altera);

//Faz uma nova busca e retorna o numero de visitas depois da atualização
$exe = mysql_query($busca);
$total = (mysql_fetch_array($exe));
$visitas = $total['visitas'];

    }

?>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

O modo como o PHP recebe a informação não precisa mudar. Apenas os links.

 

Nesse seu script em específico, tem que mudar a conexão, pois, as funções mysql_* foram descontinuadas e removidas do PHP. Substitua por MySQLi ou PDO.

 

Além disso, usar @ para suprimir erros não é uma boa prática.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim. Se você quer verificar se o atributo veio através do $_GET, use isset ou filter_has_var

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por RodrigoWD3
      Boa tarde pessoal estou com uma dúvida, seguinte estou criando uma pagina de blog para teste de url amigável ja configurei o .htaccess  , o banco de dados , as postagem com slugs , o problema e que só consigo exibir a noticia completa quando ha uma categoria exemplo .
       
      O site exibe assim :  meusite.com.br/noticias/post-da-noticia/   
      Queria desse jeito: meusite.com.br/post-da-noticia/
       
      porem não queria exibir a categoria noticias, pois os posts vão esta na index
      vou colocar o código da index, acredito que a configuração seja nela
       
      INDEX.PHP
      <?php include "admin/conexao.php"; require_once("include/header.php"); @$url = $_GET['url']; $urlE = explode('/',$url); @$arquivo = $urlE['0']; @$post = $urlE['1']; $paginas = array('empresa','noticias','categoria','contato'); if(isset($post) && $post != ''){ include "single.php"; }elseif(isset($arquivo) && in_array($arquivo, $paginas)){ include "$arquivo.php"; }elseif(isset($arquivo) && $arquivo == ''){ include "home.php"; }else{ include "categoria.php"; } require_once("include/footer.php"); ?>  
    • Por Claudio r Martinez
      Olá amigos, estive pesquisando varios topicos aqui e em outros locais sobre urls amigavel,
      Não encontrei o que preciso e também não consegui adaptar.
      É assim:
      Tenho um site que a url original seria assim: jornadadepodologia.com.br/cursos-detalhes.asp?id_curso=82&curso_nome=ONLINE-PROCEDIMENTOS-PODOLOGICOS-EM-UNHAS-MICOTICAS
      consegui montar a url assim: jornadadepodologia.com.br/new/ONLINE-PROCEDIMENTOS-PODOLOGICOS-EM-UNHAS-MICOTICAS-idpllq82
      onde o "-idpllq82" é o parametro identificador do curso.
      Fiz assim porque eu consigo extrair o ID que é 82 através do SPLIT no ASP.
      Gostaria que a url ficasse assim: jornadadepodologia.com.br/ONLINE-PROCEDIMENTOS-PODOLOGICOS-EM-UNHAS-MICOTICAS
      mas precisava passar os parametros de "id_curso"  para a pagina cursos-detalhes.asp sem aparecer na url, deixando a url como acima.
      Alguém pode me ajudar.
      Desde já, agradeço pela ajuda.
    • Por Jack Oliveira
      Bom dia @Motta Poderia me dar uma pequena ajuda aqui
      estou com uma url amigavel
      ela funciona usando ex: meudominio.com/cidade/nome-do-post/12/
      quero que ele apenas pega o titulo no banco de dados sem precisar pegar o id
      minha url é bem básica
      no meu .HTACCESS
      Fiz assim
      DirectoryIndex index.php ErrorDocument 404 https://www.meusite.com.br/ RewriteCond %{HTTP_HOST} ^meusite\.com\.br$ [OR] RewriteCond %{HTTP_HOST} ^www\.meusite\.com\.br$ [OR] RewriteCond %{HTTP_HOST} ^meusite\.com\.br\/$ RewriteRule ^index\.html\/?(.*)$ "https\:\/\/www\.meusite\.com\.br\/$1" [R=301,L] #------------------------------------------------------------------- #------------------------------------------------------------------- # PERMISSIONANDO REESCRITA #------------------------------------------------------------------- RewriteEngine On # Turn on the rewriting engine # not rewrite css, js and images RewriteCond %{REQUEST_URI} !\.(?:css|js|jpg|gif|png)$ [NC] RewriteRule ^([0-9A-z_-]+)\/([0-9A-z_-]+)\/$ noticias.php?&nome=$1id=$2 [QSA,L,NC] #RewriteRule ^([0-9A-z_-]+)\/([0-9A-z_-]+)\/$ cidade.php?id=$1&nome$2 [QSA,L,NC] #RewriteRule ^buscar index.php [NC,L] <IfModule mod_headers.c> <FilesMatch "\.(ttf|ttc|otf|eot|woff|font.css|css)$"> Header set Access-Control-Allow-Origin "*" </FilesMatch> </IfModule> No arquivo noticias.php
      quero que ele ficasse assim
      meusite.com.br/cidade/noticias-do-mundo-geral/
       
      Na função esta assim
      <?php //URL DEBUG CHARACTERS function encodeSEOString($string) { $string = preg_replace("`\[.*\]`U", "", $string); $string = preg_replace('`&(amp;)?#?[a-z0-9]+;`i', '-', $string); $string = htmlentities($string, ENT_COMPAT, 'utf-8'); $string = preg_replace("`&([a-z])(acute|uml|circ|grave|ring|cedil|slash|tilde|caron|lig|quot|rsquo);`i", "\\1", $string); $string = preg_replace(array("`[^a-z0-9]`i", "`[-]+`"), "-", $string); return strtolower(trim($string, '-')); } ; ?> No html fiz assim
       
      <a href="./<?php echo encodeSEOString($dados['titulo']); ?>/<?php echo $dados["id"]; ?>/" target="_blank"> nesta forma ai em cima ele funciona mais quando inverto para pegar apenas o titulo ele volta para a url principal
      Antes tinha feito assim
      <a href="./<?php echo encodeSEOString($dados['titulo']); ?>/" target="_blank">
       
      Desde já agradeço...
    • Por RodrigoWD3
      Boa tarde pessoal nao sei se estou no tópico correto , gostaria de tira uma duvida quero fazer um sistema de noticias com url amigavel  em codeigniter ja fiz a parte de noticias para exibir e a view porem estou usando a id para exibir as noticias e o que eu gostaria de fazer era usar a url do titulo da noticia ficando uma url amigavel alguém teria algum tutorial para eu poder estudar obrigado
    • Por Paulo Oliveira Albuquerque
      Ola bom dia galera  se alguem poderia me dar uma ajuda na minha url amigavél,
      Ela funciona de boa 
      mais tenho dois problemas que esta me dando já dor de cabeça
      1º - Quando abre o link da url ex: meusite.com/produtos/23/nome-produtos  se eu por algo  a mais na frente desta url ela aceita e eu gostaria que que ele não aceitasse nada mais além do que foi feito o chamado  se ele for apenas assim ex2:  meusite.com/produtos/23/nome-produtos que nela não aceita se digitar na frente em um navegador qualquer mais coisa ex3:  meusite.com/produtos/23/nome-produtos-novo-uyuy   e nem aceitar se alguem digitar ou mesmo tentar fazer isso  meusite.com/produtos/23/  ou isso aqui  meusite.com/produtos.php?id=23
       
      2ª Minha Url amigavél quando ela e feito o shared em uma rede social quando eu clico dentro da rede social pra abrir a pagina ela esta vindo diferente do que foi postado ele aparece assim quando eu clico para abrir
       
      meusite.com/pasta/produtos/23/nome-produtos /><!-- ==================================================================================================================================== --> <link rel=?fbclid=Mgsgs-swwfw-dwedwedwewf-wefwefwhgygygygjhjnjnjnjnjn#.HDHDHDHDJ-messenger
      e as vezes assim
      meusite.com/pasta/produtos/23/nome-produtos?fbclid=Mgsgs-swwfw-dwedwedwewf-wefwefwhgygygygjhjnjnjnjnjn#.HDHDHDHDJ-messenger
       
      era pra ele aparecer assim quando clicar
      meusite.com/produtos/23/nome-produtos 
       
      No meu HTACCESS ESTA ASSIM
       
      #------------------------------------------------------------------- # PERMISSIONANDO REESCRITA #------------------------------------------------------------------- RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}\.php -f #------------------------------------------------------------------- # EXTENSAO PHP #------------------------------------------------------------------- RewriteRule ^(.*)$ $1.php #------------------------------------------------------------------- # URL AMIGAVEL #------------------------------------------------------------------- RewriteRule ^produtos\/?([0-9]+)\/?(.+)\/?$ produtos.php?id=$1 RewriteRule ^sobre\/?([a-z]+)\/?(.+)\/?$ sobre.php RewriteRule ^index\/?([a-z]+)\/?(.+)\/?$ index.php RewriteRule ^contato\/?([a-z]+)\/?(.+)\/?$ contato.php RewriteRule ^buscar\/?([a-z]+)\/?(.+)\/?$ buscar.php e a minha função esta assim
       
      <?php //URL DEBUG CHARACTERS function encodeSEOString($string) { $string = preg_replace("`\[.*\]`U", "", $string); $string = preg_replace('`&(amp;)?#?[a-z0-9]+;`i', '-', $string); $string = htmlentities($string, ENT_COMPAT, 'utf-8'); $string = preg_replace("`&([a-z])(acute|uml|circ|grave|ring|cedil|slash|tilde|caron|lig|quot|rsquo);`i", "\\1", $string); $string = preg_replace(array("`[^a-z0-9]`i", "`[-]+`"), "-", $string); return strtolower(trim($string, '-')); } ; ?> Meu link pra abrir a pagina esta assim
       
      <a href="meusite.com/pasta/produto/<?php echo $id; ?>/<?php echo encodeSEOString($prod_nome); ?>">Listar</a> Obs: como eu disse ela abre normal sem problemas o unico problema que estou tendo foi as que eu sitei ai em cima
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.