Função PHP para adicionar variaveis a QueryString

PHP função para adicionar variáveis via GET a querystring
Muitas vezes, precisamos passar variáveis a querystring através de links, e vários problemas podem surgir, como passar váriaveis duplicadas. Então, tive uma necessidade hoje de desenvolver uma função eficaz para gerenciar as váriaveis passadas por querystring, confira a sua utilidade.

Função Querystring
Esta minha função tem 3 objetivos:

  • Impedir de a mesma váriavel de ser passada novamente
  • Adicionar a querystring uma nova variável ou múltiplas variáveis. Se a querystring já possuir uma váriavel, elas serão concatenadas
  • Caso a variável já exista na querystring, entretanto está sendo passado outro valor, é susbtituido apenas o valor
function querystring(array $parans,$return=false){
		$method = $_SERVER['SERVER_PORT'] == 80 ? "http://" : "https://";
		$endereco = urldecode($method.$_SERVER['SERVER_NAME'].$_SERVER['SCRIPT_NAME']);
		$endereco_completo = urldecode($method.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']);
	
		$query_string = $_SERVER['QUERY_STRING'];
	
		if(is_array($parans)){
			foreach($parans as $variavel => $valor):
				if(strstr($query_string,$variavel)){
					$query_string = str_replace($variavel."=".$_GET[$variavel],$variavel."=".$valor,$query_string);
				}
				else{
					if(empty($query_string)){
						$query_string = "?".$variavel."=".$valor;
					}
					else{
						$query_string .= "&".$variavel."=".$valor;
					}
				}
			endforeach;
			$query_string = !strstr($query_string,"?") ? "?".$query_string : $query_string;
	
			if($endereco_completo != urldecode($endereco.$query_string)){
				if(!$return)header("Location:". $endereco.$query_string);
			}
			else{
				return $endereco.$query_string;
			}
		}
}

Para utilizar

Você pode usar de duas maneiras esta função. Redirecionar automaticamente para a URL com a QueryString já adicionada, ou escrever na tela a nova URL (útil para criação de links). Vamos aos exemplos:

Adicionar automaticamente uma ou mais variáveis a QueryString

<?php
   $array = array("cod" => "50","pagina" => "teste.html");
   querystring($array);
?>

Escrever na Tela a nova URL

<?php
   $array = array("cod" => "50","pagina" => "teste.html");
   $nova_querystring = querystring($array,true);
   echo $nova_querystring;
?>

Espero que tenham gostado!
Todos os direitos reservados, Lucas Peperaio

Lucas Peperaio

Estudante de Ciência da Computação, trabalho com desenvolvimento web há 5 anos e com hardware há 8. Nas horas vagas, sou entusiasta de Overclock, Casemod e Benchmarks, além é claro dos Games. Apaixonado por informática e pela vida, procuro compartilhar meus conhecimentos e assim, ajudar as pessoas. Siga-me no youtube, posto semanalmente muito material sobre Hardware, tecnologia e games em geral: Clique aqui

Receba gratuitamente em seu E-mail
Novos artigos do meu Blog!


Após o Cadastro você receberá um Email Automático. Clique no link enviado para Ativar e receber as novidades.

Categorias do site





5 Comentários Deixe o seu

  1. Jackson

    Lega a idéia da função, porém seria interessante incrementá-la com a opção de adicionar mais de uma variável. Poderia ao invés de passar dois parâmetros sendo um para a var e outro com o valor, colocar apenas um parametro com a querystring a ser adicionada, e dentro da função desmembra ela analisando variável por variável…

  2. Lucas Peperaio

    @Jackson – verdade cara, assim que tiver um tempinho livre eu faço isso, agora usando expressões regulares e arrays para ela

  3. Eduardo R Gomes

    Grande Lucas…,

    Obrigado pelo teu post !

    Estou com uma dificuldade e não sei se você poderá me ajudar: No WordPress, tenho uma variável que é definida na URL (a variável é ?user=) Exemplo: http://www.zraguias.com.br/?user=joao

    Na página inicial tenho uma imagem com um hiperlink que deve direcionar para outro site que tem que conter o valor “joao” Exemplo: http://www.zrinterior.com.br/securesignup.asp?username=joao

    Estive tentando colocar a variável com $_GET, $_REQUEST, mas sem sucesso Exemplo: <a href="www.zrinterior.com.br/securesignup.asp?username=”>Este é o link

    Além disto já tentei vairas alternativas sem sucesso.

    Obrigado pela tua atenção!

  4. Lucas Peperaio

    Eduardo, não faz sentido você usar as variáveis superglobais ($_GET, $_POST, $_COOKIE, $_SESSION, $_REQUEST, $_FILE) que fazem parte da linguagem PHP, numa página em ASP (securesignup.asp).
    Entendeu o erro?

  5. Eduardo R Gomes

    Lucas, primeiro obrigado por tua ajuda !!!

    Acho que não fui claro no que preciso.

    Estou usando WordPress e já uso algumas expressões da linguagem PHP.

    Eu tenho uma imagem na qual preciso ter um link dinâmico para redirecionar o usuário para um site externo (de outra empresa). Cada membro do meu grupo vai acessar o meu site usando a variável ?user=NOME_DO_USUARIO. Preciso de alguma forma, montar o link da imagem (“Cadastrar-se no site da empresa tal”), e neste link tem que conter o nome que foi usado na URL. O valor da variável $user será diferente em cada acesso. O link tem que conter o valor da variável $user.

    O formato do link para a página ASP foi me passado pela empresa. se quiser fazer um teste, eis o link que eu uso com o meu username: http://www.zeekrewards.com/securesignup.asp?username=zraguias

    O que eu preciso é, que este link que está vinculado a uma imagem, tenha o valor da variável $username, igual ao valor da variável $user, definida na URL no momento do acesso ao meu site: http://www.zraguias.com.br/?user=zraguias

    Não sei se fui claro, mas estou precisando muito de conseguir fazer isto.

    Obrigado!