Ir ao conteúdo
  • Cadastre-se

strpos


Bergamaschi.

Posts recomendados

Boa noite.

Estou com um problema estranho. O que eu quero é simples. Vou dar o exemplo de uma URL.

www.rs.com/download.php?arquivo=musica.mp3

Queria fazer uma verificação no parâmetro (arquivo=musica.mp3), caso esse parâmetro conter a palavra "arquivo=" e depois, independente do que vir para frente (ex: arquivo=joao_e_maria%20nada), fazer algo, um download por exemplo. Caso seja diferente de "arquivo=" (ex: arquivo= ou dshfhsdoi= ou nada), aparecesse uma mensagem alertando algo.

Eu consegui fazer isso em outro problema, usando strpos, mas por algum motivo, desta vez não está funcionando de forma alguma, sempre cai no true ou false, independente do que for escrito. Estou tentando a muito tempo, chega a ser ridículo isso.

Vou deixar uns códigos aqui:

function FilterSearch()
{
$Parametros = $_SERVER['QUERY_STRING']

if (strpos($Parametros, "newest") || strpos($Parametros, "mostLiked") || strpos($Parametros, "mostHated") || strpos($Parametros, "topRating"))
return "filter=";
else
return "search=";
}

Esse código funciona. Eu usei ele para o seguinte, se no parâmetro conter alguma palavra dessas especificadas, ele retorna filter=, caso seja qualquer coisa diferente, retorna search.

Usei isso para poder diferenciar pesquisa de filtros, tudo numa mesma página.

$Parametros = $_SERVER['QUERY_STRING'];

if (strpos($Parametros, "download"))
echo "Funcionou";
else
echo "Erro";

Este não funciona, apesar de ser uma cópia do anterior. Mesmo colocando ele em função ele só retorna em um lado (ou apenas "erro" ou apenas "funcionou"). Já transformei ele em função, e também não funcionou. Não tem. Já tentei até strpos("download", "download") e não vai.

LEMBRANDO: O código NÃO dá erro, apenas cai em apenas um lado do IF.

O que posso fazer? Obrigado.

Link para o comentário
Compartilhar em outros sites

Olá DIF.

Encontrei a solução. Mas fui tentar fazer por isset e dá esse erro:

Fatal error: Can't use function return value in write context in C:\Arquivos de programas\EasyPHP-12.1\www\index.php on line 4


<?php
$Parametros = $_SERVER['QUERY_STRING'];

if (!isset(strpos($Parametros, "teste")))
echo "Funcionou";
else
echo "Nem";
?>

Porém, se você fizer assim:


<?php
$Parametros = $_SERVER['QUERY_STRING'];

if (strpos($Parametros, "teste") !== false)
echo "Funcionou";
else
echo "Nem";
?>

Ele funciona. Antes estava dando errado, porque ele retorna a posição da String, e como a primeira letra é igual a da comparada, ele sempre retornava 0. Portanto não tinha como comparar. Usando false funcionou.

Obrigado pela a ajuda.

Link para o comentário
Compartilhar em outros sites

Arquivado

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

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

APRENDA TUDO SOBRE HARDWARE!

HARDWARE 2022

 

CLIQUE AQUI E BAIXE AGORA MESMO!