Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá galera.
Existe algum meio no php de passar uma variável pela URL sem informar o nome do arquivo .php?
Por exemplo:
No link http://localhost/index.php?id=123 existe alguma maneira de fazer isso sem informar o nome do arquivo index.php?
Boa tarde @Omar~
Quero aqui aproveitando o post questão de url
Bom eu tenho em meu HTACCESS
ele me dar uma url que preciso de boa me trazendo titulo e o id
#-------------------------------------------------------------------
O que eu preciso é fazer com que ele me traga apenas o titulo sem o id ou seja que ele aceita pegar apegas o titulo
do jeito que esta ai por mais que eu tente pegar apenas o titulo ele não aceita da erro 404 diz que a pagina não existe
No caso não estou usando nada de mais que htaccess e uma função para quebrar os caracteres...
//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, '-'));
}
;
Já no uns do html esta desta forma ou seja ele pode ficar assim com este id não tem problemas
<a href="<?php echo encodeSEOString($dados['titulo']); ?>/<?php echo $dados['id']; ?>/" target="_blank">
Mais já neste outro html quero que fica desta forma que será de listar a cidade que ficaria mais o menos assim
Ex:
Se eu deixa como o primeiro html
ficaria assim
meusite.com/sao_paulo/12/forum-imasters/123/
mais quero que fique desta forma
meusite.com/sao_paulo/forum-imasters/123/
Quando eu clicar onde estará todas as cidade no index.php
ele vai abrir assim
meusite.com/sao_paulo/
<a href="<?php echo encodeSEOString($dados['titulo']); ?>/" target="_blank">
Nas tabelas
TABLEA 01
news
id
titulo
data
texto
resumo
status
Na tabela
TABELA
cidades
id
titulo
estado
status
data
Espero que possa entender ai
e Peso desculpas ao amigo ai que fez o post e os pessoal do FÓRUM também, se estou infringindo a regra do FÓRUM@Jack Oliveira
Não entendi de onde vem as url's se são inseridas ou composta no html como links.
Bom.. não sei o que esse "12" faz e qual a utilidade em:
>
2 horas atrás, Jack Oliveira disse:
meusite.com/sao_paulo/12/forum-imasters/123/
No entanto se ele for uma informação necessária você não pode ofuscar.
Justamente porque irá precisar para fazer alguma coisa. Do contrário você poderá criar funções que filtrem a entrada da url, e remova dados desnecessários, mas se forem desnecessários a arquitetura da aplicação deve ser reavaliada, pois está criando algo não usável.
>
6 horas atrás, Omar~ disse:
Não entendi de onde vem as url's se são inseridas ou composta no html como links.
Ola @Omar~ Eu estou criando um job
No arquivo index.php
dentro dele me mostrara todas as cidades que foram cadastradas no banco de dados
dentro deste index.php
terá esta url
<a href="<?php echo encodeSEOString($dados['titulo']); ?>/" target="_blank">
este é o HTML do job da cidade
<div class="col-md-4 grid_view show_listing_cidade">
<div class="listing_wrap">
<div class="listing_img">
<?php if ($nova_guia == 'S') { ?>
<a href="<?php echo encodeSEOString($cidade['titulo']); ?>/" target="_blank">
<?php } ?>
<img src="./imagem/empresa/<?php echo $cidade["imagem"]; ?>" alt="<?php echo $cidade["titulo"]; ?>"></a>
</div>
<div class="listing_info">
<?php if ($nova_guia == 'S') { ?>
<a href="<?php echo encodeSEOString($cidade['titulo']); ?>/" target="_blank">
<?php } ?>
<h4><?php echo $strtitulo;?></a></h4>
<p><?php echo substr($cidade["frase"], 0, 60); ?></p>
<div class="listing_review_info">
<p><span class="review_score"><?php echo $dados["visitas"]; ?></span></p>
</div>
</div>
</div>
</div>
>
6 horas atrás, Omar~ disse:
Bom.. não sei o que esse "12" faz e qual a utilidade em:
este "12" ele seria o id da cidade
meusite.com/sao_paulo/12/forum-imasters/123/
Ex:
TABELA "cidades"
ID TITULO ESTADO DATA STATUS
1 Cuiabá Mato Grosso 20/05/2000 Ativo
2 Rio de Janeiro Rio de Janeiro 22/05/2000 Ativo
10 Salvador Baia 25/06/2000 Ativo
12 São Paulo São Paulo 28/07/2000 Ativo
Bom o que estou tentando falar ai é como posso pegar usando apenas este htaccess e esta função para que na url amigavel não pegar o id
Disso aqui
meusite.com/sao_paulo/12/
ele ficar assim
meusite.com/sao_paulo/
Ex da url do fórum
Nela mostra o ID 584707 depois mostra o TITULO -passar-variável-pela-url-sem-informar-o-nome-do-arquivo-php/ vamos supor que este titulo fosse o nome de uma cidade
Neste caso no que eu quero que ficasse assim
https://forum.imasters.com.br/passar-variável-pela-url-sem-informar-o-nome-do-arquivo-php/
Entendeu
Na home.php
é onde estará as informações desta cidade
ou seja esta url seria
meusite.com/home.php?id12
No jeito que eu fiz ela fica assim
meusite.com/sao_paulo/12/
quero que fica assim
meusite.com/sao_paulo/
No php que pega as listagem do banco esta assim
<?php
require_once('../funcao/database.php');
if (ModoManutencao()) { header("Location: ../manutencao/"); }
$id = get('id');
// Numa explicação no internet dissia que para pegar apenas o TITULO sem o ID tinha que fazer da seguinte forma
// Pegar onde esta $id = get('id'); trocar o id de dentro do ('id') colocar ('titulo') fazendo ficar desta forma $id = get('titulo');
// E onde esta o id = '{$id}' fazer assim titulo = '{$id}' que assim daria para pegar apenas o titulo do banco de dados
//$id = get('titulo');
$Query = DBRead('cidades','*',"WHERE status = 'Ativo' AND indexar = 'S' AND id = '{$id}'"); if (is_array($Query)) { foreach ($Query as $cidades) {
$titulo = $cidades['titulo'];
$estado = $cidades['estado'];
$status = $cidades['status'];
Seria isso@Jack Oliveira
Hun...
>
8 horas atrás, Jack Oliveira disse:
esta função para que na url amigavel não pegar o id
Eu usaria o modelo assim:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?entrada=$1
Então tudo que vem na url depois do endereço físico base passa a ser **$_GET['entrada']**
Assim sendo o get para isso **sao_paulo/12/forum-imasters/123/** é uma string só.
No entanto como temos que obter cada entrada temos que dividi-la em diferentes coisas.
<?php
$filtro = filter_input(INPUT_GET, 'entrada', FILTER_DEFAULT); // Identifica se é realmente uma super global GET
$requisitado = empty($filtro) ? 'padrao' : $filtro; // Se exite assume o existente, do contrário o get será "padrao"
$separa = explode('/', $requisitado); // Aqui separamos em índices a partir de todas ocorrências de barras
$url = array_filter($separa); // Removemos então ídices nulos ou vazios do array
Se dermos então var_dump($url) com a seguinte url "meusite.com/sao_paulo/12/forum-imasters/123/" teremos:
>
Citar
array(5) {
[0]=> string(9) "sao_paulo"
[1]=> string(2) "12"
[2]=> string(14) "forum-imasters"
[3]=> string(3) "123"
}
Com isso fica simples manipular cada entrada na url, por exemplo se eu quiser remover o 12.
**unset($url[1]);**
No entanto como você disse não há necessidade desse 12.
Então vamos supor que eu escreva o seguinte link, ao acessar-lo irei consultar no banco se os dados do link existe
**<a href="sao_paulo/outra_coisa">Exemplo</a>**
Ao redirecionar, quer dizer que url no índice zero é "**sao_paulo**" então eu uso essa informação** $url[0] **para fazer a consulta no banco de dados pelo nome da cidade.
**$query = "SELECT * FROM cidades WHERE titulo = '{$url[0]}'";**
O ideal é que sempre manipule a entrada para transformar a string do índice em formato válido para o banco de dados, seja na hora de salvar, seja na hora de ler.
Veja essa postagem:
[https://forum.imasters.com.br/topic/584706-transformar-uma-frase-em-formato-url/?do=findComment&comment=2283669](/topic/584706-transformar-uma-frase-em-formato-url/?do=findComment&comment=2283669)
Você terá que reestruturar seus databases para no caso usar JOINS, o nome de cada cidade deve está presente em db's que tem dados compartilhados, já que não quer usar o id.
Uma coisa que me chamou atenção foi em uma query apresentada por você temos o seguinte trecho:
>
8 horas atrás, Jack Oliveira disse:
indexar = 'S'
Hora que nas estruturas de tabelas que você apresentou não existe a coluna indexar.
Logo temos um erro de query.
Sim... Manipulando o get:
switch($entrada) { case 'idx':