Ir para conteúdo
landerbadi

Passar variável pela URL sem informar o nome do arquivo .php

Recommended Posts

Sim... Manipulando o get:

<?php
$entrada = (isset($_GET['exemplo']) && !empty($_GET['exemplo']) ? $_GET['exemplo'] : false);
switch($entrada) {
  case 'idx':
    $arquivo = 'arquivo_qualquer.php';
    break;
  case 'outro_exemplo':
    $arquivo = 'outro_arquivo.php';
    break;
  default:
    $arquivo = 'arquivo_padrao.php';
    break;
}
include($arquivo);

Isso ficaria no index.php, e toda vez que um parâmetro de url exemplo existir ele vai incluir o arquivo de acordo com o valor caso não um arquivo padrão é incluído.

Então se a url for

http://localhost?arquivo=idx&id=123

 

Quer dizer que arquivo_qualquer.php será incluído então o parâmetro id você poderá manipular-lo no arquivo aberto.

 

Isso é uma questão de rotina quando trabalhamos com url's amigáveis.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

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

#-------------------------------------------------------------------
# EXTENSAO PHP
#-------------------------------------------------------------------
RewriteRule ^(.*)$ $1.php
#-------------------------------------------------------------------
RewriteEngine On    # Turn on the rewriting engine
# not rewrite css, js and images
RewriteCond %{REQUEST_URI} !\.(?:css|js|jpg|gif|png)$ [NC]
#cria a condicao
#RewriteRule ^([a-z0-9-]+)/?$ cidades.php?nome=$1 [L,NC]
RewriteRule ^([0-9A-z_-]+)\/([0-9A-z_-]+)\/$ job_detalhes.php?nome=$1&id=$2 [QSA,L,NC]

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

@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.

Compartilhar este post


Link para o post
Compartilhar em outros sites
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

https://forum.imasters.com.br/topic/584707-passar-variável-pela-url-sem-informar-o-nome-do-arquivo-php/

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                                                                        

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@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&amp;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.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por Alessandro Bodão
      Boa noite irmandade!
       
      Ando reparando de alguns anos pra cá, uma forte tendência em que sites bem dinâmicos e interativos transitam de uma página pra outra sem que a outra página se quer passe por um processo de carregamento, você clica, simplesmente acontece algumas transições nos elementos da página, e de repente, você está em outra página, outro url. De forma suave, nada é carregado, apenas algo acontece e você já está em outra página.
       
      Gostaria de saber como isso é feito pra aplicar em um site que estou desenvolvendo, se é algum framework, alguma ferramenta além do JavaScript...
       
      Trouxe um belo exemplo: https://www.traffic.productions/
       
      Se você chegou até aqui, agradeço desde já!
    • Por Fernando Rafael
      Bom dia, estou baixando arquivos que estão em uma hospedagem própria para serem acessados por um aplicativo que estou desenvolvendo (consigo fazer normalmente utilizando os comandos citado mais a baixo), porém os arquivos ficam salvos na pasta padrão de DOWNLOADS do Android, minha intenção não é ficar acumulando estes arquivos no aparelho, ou esperar que o usuário exclua manualmente, gostaria em salva-los em uma pasta interna do aplicativo para que seja possível excluir automaticamente pelo próprio aplicativo, já tentei como alternativa excluir esses arquivos da pasta DOWNLOADS, mas não consegui...
       
      Segue o código que estou usando para baixar os arquivos, queria adaptar para baixar direto na pasta interna do aplicativo, ou como alternativa caso isso não seja possível, conseguir excluir esses arquivos da pasta DOWNLOADS do Android...
       
      String url = "https://www.site.com/arquivo.pdf"; //Arquivo que vou baixar DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url)); request.setDescription("Alguma descrição"); request.setTitle("Algum titulo"); //A notificação de conslusão só esta disponível a partir da API 11 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { request.allowScanningByMediaScanner(); request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); } //Salvando o arquivo no diretório de Downloads request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "arquivo.pdf"); DownloadManager manager = (DownloadManager) getSystemService(DOWNLOAD_SERVICE); manager.enqueue(request);  
    • Por AlexandreHenrique
      Olá pessoal. preciso de uma ajuda com o meu projeto de upload.
      O projeto de upload roda no IIS + Php;
      Tenho um script que ta enviando  o arquivo para o diretório correto.
      O problema é que ao tentar acessar esse arquivo via URL, o anexo não abre  e exibe a mensagem abaixo.
       

      Notei que o arquivo ao cair no DIR, ele entra sem permissões (vi em propriedades), se eu editar o mesmo alterando as permissões, ele carrega pela url do meu site.
      Quero que o arquivo enviado pelo script caia no DIR correta com as devidas permissões pra eu poder ler no navegador via URL;
       
      Já tentei resolver de toda forma mas nao tive sucesso;.
      No Apache isso é mais simples, mas no IIS ta complicado;
       
       
       
      Alguem pode me dá uma dica?
    • Por iveusername
      Preciso de ajuda com o serviço de url de suporte ao vivo. Quando recebo um url de Umuly.com no Postman, outras pessoas não devem ter permissão para bater papo usando esse url. Supondo que 10.000 pessoas tenham um bate-papo ao vivo, o serviço deve criar 10.000 novos urls. Qual é a razão por trás disso? Como o serviço gera novos urls para cada um? (Em linguagem .NET Core)
    • Por Ak_Ray
      Pessoal, a pouco tempo troquei o xampp pelo php direto na máquina, o problema é que quando inicio o servidor o require nem o include funcionam. Acredito que o problema seja no php.ini, já tentei fazer diversas alterações, mas nenhuma funcionou.
      Linha onde acredito que esteja o problema :
      ; UNIX: “/path1:/path2”
      include_path = “.:/php/includes”
      ;
      ; Windows: “\path1;\path2”
      ;include_path = “.;c:\php\includes”
      Essa é a configuração padrão, apenas fiz uma alteração abaixo da linha “Unix” tirando o ';", já que no arquivo de php.ini do xampp estava assim. Mesmo assim não funciona =/
      Diretório onde esta a pasta php:
      C:\php
      Ps: tenho certeza que estou chamando o arquivo corretamente, tanto que com o Xampp funcionava normalmente.
×

Informação importante

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