Duvida com $_GET Re:Duvida com $_GET Re:Duvida com $_GET

Transcrição

Duvida com $_GET Re:Duvida com $_GET Re:Duvida com $_GET
Duvida com $_GET
Posted by josal - 2007/07/22 17:23
_____________________________________
Caros colega do forum,
Queria enviar uma string para o programa chamado e já experimentei metê-la entre " " e entre ' ', mas não funciona.
Alguém me pode mostrar um exemplo como é que eu envio de um html, conforme o link que o utilizador me escolher,
uma string tipo, "Obra de Quarteira" ou Obra de Belém" ou "Obra da Ponte da Pedra" e a sintaxe de como carregá-la
do outro lado, no lado do programa php com o $_GET.
<a href='phpslideshow.php?directorio=fotos01&titulo="Obra de Quarteira">Ver fotos da Obra de Quarteira</a>
Sei que podia mandar uma variavel chamada numero_de_obra de 1 a 99 e do lado do phpslideshow.php colocar um
ciclo if que me teste se = 1, entao $titulo="Obras de Quarteira" e por aí fora, mas preferia enviá-lo directamente no link,
pois assim do lado do html, também sei para que obra estou a enviar o utilizador.
Obrigado pela ajuda,
Um abraço,
José Almeida
[email protected]
============================================================================
Re:Duvida com $_GET
Posted by miguelp - 2007/07/23 01:07
_____________________________________
olá Josal,
O seu problema com esse URL prende-se com o facto de os valores da variavel nao serem URL Compliant. Eu explico,
se em vez de &titulo="Obra de Palmela" por exemplo tivesse &titulo=Obra_de_palmela tudo correria bem. O problema é
que nao existe o caracter espaço em termos de URLs, esse caracter é normalmente substituido por %20 logo o seu url
teria de ser algo tipo:
&titulo=Obra%20de%20Palmela
a melhor solução será codificar o URL enviar-lo via GET e descodifica-lo do outro lado. Exemplo:
<?php
$title = "Obra de Quarteira";
$title_encoded =urlencode($title);
echo "<a href='phpslideshow.php?directorio=fotos01&titulo=". $title_encoded .">Ver fotos da Obra de Quarteira</a>";
?>
Do lado que recebe fazer algo tipo:
<?php
$encodeded_title = $_GET;
$titulo = urldecode($encoded_title);
?>
ps: Atenção que o cumprimento de uma URL recebida via get nao deve ultrapassar os 256 caracteres.
Hope it helps.
Miguel Pinto
============================================================================
Re:Duvida com $_GET
PHP-PT.com Forum - Comunidade Portuguesa de PHP
Joomlaboard Forum Component version: 1.1.4 Stable
Generated: 30 September, 2016, 08:13
Posted by tiago - 2007/07/23 11:02
_____________________________________
Viva josal,
para primorar ainda mais o teu código, completo o miguelp com mais duas coisas:
usa também para além da função urldecode a função strip_tags();
(para remover qualquer tag html que possam adicionar...)
e na variavel "$_GET" usa a função is_dir(); e basename();
(para saber se o directório existe realmente, e em caso negativo, mostrar uma mensagem de erro)
$_GET = basename($_GET);
if( !is_dir( $_GET ) ) {
echo "erro";
}
Espero ter ajudado,
Tiago Lopes
============================================================================
Re:Duvida com $_GET
Posted by josal - 2007/08/01 01:44
_____________________________________
Caro Miguel,
No código que me enviou há qualquer coisa que não funciona e eu infelizmente não consigo descobrir o quê apesar de
suspeitar das "aspas e das 'pelicas, pois sou péssimo neste tema ainda não interiorizei bem este assunto das aspas e
das pelicas em php, fazem-me uma grande confusão.
Se pudesse dar uma vista de olhos, agradecia.
Em relação às sugestões do Tiago, vou dar uma vista de olhos ao que elas fazem no php.net e é óbvio que de seguida vou
aproveitá-las... obg Tiago.
Um abraço,
José Almeida
[email protected]
============================================================================
Re:Duvida com $_GET
Posted by mAiN_iNfEcTiOn - 2007/08/02 00:07
_____________________________________
<?php
$title = "Obra de Quarteira";
$title_encoded =urlencode($title);
echo "<a href='phpslideshow.php?directorio=fotos01&titulo=". $title_encoded ."'>Ver fotos da Obra de Quarteira</a>";
?>
De facto, faltava uma pelica ... LOL =D
Mas tenta la agora como pus em cima =)
PHP-PT.com Forum - Comunidade Portuguesa de PHP
Joomlaboard Forum Component version: 1.1.4 Stable
Generated: 30 September, 2016, 08:13
O código é bastante bom =).
Post edited by: mAiN_iNfEcTiOn, at: 2007/08/02 00:08
============================================================================
Re:Duvida com $_GET
Posted by miguelp - 2007/08/03 03:46
_____________________________________
Caro Josal,
Antes de mais peço desculpa por demorar tanto tempo a responder. Nem sempre tenho oportunidade de responder no
forum, o trabalho e o projecto PHP-PT ocupam-me muito tempo.
Realmente no meu código faltavam plicas, mas uma vez que o problema está resolvido passo a explicar de uma forma
simples (penso eu) a diferença entre plicas e aspas.
Antes de mais, convem dizer que nunca podes ter um par de plicas dentro de outro. Ou seja nao podemos ter algo do
tipo:
echo "este é um "exemplo" errado.";
No caso de apenas teres uma string simples não existe necessidade pois podes sempre usar a backslash antes do
segundo par de aspas ( \" ), mas vamos imaginar que tens 15 linhas de HTML que queres fazer output, é chato teres de
fazer "escape" te todas as aspas, pode sempre falhar alguma (como foi o meu caso).
imaginemos outra situação, este código por exemplo:
echo "<meta name=\"description\" content=\"PHP-PT.com Comunidade Portuguesa de PHP\" />";
O código acima esta correcto, mas imaginemos que queres gerar o conteudo do parametro content dinamicamente
teriamos aqui um problema, acabariamos com algo tipo:
echo "<meta name=\"description\" content=\"" . $somevar ."\" />";
Por vezes este tipo de código pode ser enganador, neste caso iniciariamos o script com plicas o que torna a leitura do
código mais simples, como no exemplo a seguir:
echo '<meta name="description" content="' . $somevar .'" />';
Exite ainda uma grande diferença entre as plicas e as aspas, tudo o que estiver dentro de plicas é considerado puro
texto e tratado como tal, no caso das aspas é diferente. Vejamos um exemplo:
código com plicas
echo '<meta name="description" content=" $somevar" />';
output do código acima:
<meta name="description" content=" $somevar" />
hummmmm nao é propriamente o que queriamos... mas e se usarmos aspas??? vamos ver:
PHP-PT.com Forum - Comunidade Portuguesa de PHP
Joomlaboard Forum Component version: 1.1.4 Stable
Generated: 30 September, 2016, 08:13
codigo com aspas:
$somevar = "this is some text";
echo "<meta name=\"description\" content=\" $somevar\" />";
Repara que neste caso eu nao interrompi a string para colocar a variavel, apenas a coloquei lá no meio como um outro
texto qualquer, vejamos o output:
<meta name="description" content=" this is some text" />
Ou seja, a grande diferença entre os 2 tipos, é que código dentro de aspas é interpretado e dentro de plicas não.
Vantagens? sim algumas a mais óbvia seria apresentar código ao leitor de uma página, usando plicas esse código seria
tratado pelo "parser" (interpretador de PHP) como texto e seria mostrado ao utilizador em vez de ser interpretado, por
outro lado o uso de aspas mesmo tendo código PHP lá dentro permite que esse código seja de mais facil leitura um dia
mais tarde, e facilita a vida ao programador, uma vez que é interpretado de igual modo estando dentro ou fora da string.
Espero que ajude.
Aproveito a ocasião para lembrar que o primeiro PHP-PT podcast sai no proximo domingo dia 5 de Agosto, não percam.
Abraço
Miguel Pinto
============================================================================
Re:Duvida com $_GET
Posted by miguelp - 2007/08/03 03:46
_____________________________________
Caro Josal,
Antes de mais peço desculpa por demorar tanto tempo a responder. Nem sempre tenho oportunidade de responder no
forum, o trabalho e o projecto PHP-PT ocupam-me muito tempo.
Realmente no meu código faltavam plicas, mas uma vez que o problema está resolvido passo a explicar de uma forma
simples (penso eu) a diferença entre plicas e aspas.
Antes de mais, convem dizer que nunca podes ter um par de plicas dentro de outro. Ou seja nao podemos ter algo do
tipo:
echo "este é um "exemplo" errado.";
No caso de apenas teres uma string simples não existe necessidade pois podes sempre usar a backslash antes do
segundo par de aspas ( \" ), mas vamos imaginar que tens 15 linhas de HTML que queres fazer output, é chato teres de
fazer "escape" te todas as aspas, pode sempre falhar alguma (como foi o meu caso).
imaginemos outra situação, este código por exemplo:
echo "<meta name=\"description\" content=\"PHP-PT.com Comunidade Portuguesa de PHP\" />";
O código acima esta correcto, mas imaginemos que queres gerar o conteudo do parametro content dinamicamente
teriamos aqui um problema, acabariamos com algo tipo:
echo "<meta name=\"description\" content=\"" . $somevar ."\" />";
PHP-PT.com Forum - Comunidade Portuguesa de PHP
Joomlaboard Forum Component version: 1.1.4 Stable
Generated: 30 September, 2016, 08:13
Por vezes este tipo de código pode ser enganador, neste caso iniciariamos o script com plicas o que torna a leitura do
código mais simples, como no exemplo a seguir:
echo '<meta name="description" content="' . $somevar .'" />';
Exite ainda uma grande diferença entre as plicas e as aspas, tudo o que estiver dentro de plicas é considerado puro
texto e tratado como tal, no caso das aspas é diferente. Vejamos um exemplo:
código com plicas
echo '<meta name="description" content=" $somevar" />';
output do código acima:
<meta name="description" content=" $somevar" />
hummmmm nao é propriamente o que queriamos... mas e se usarmos aspas??? vamos ver:
codigo com aspas:
$somevar = "this is some text";
echo "<meta name=\"description\" content=\" $somevar\" />";
Repara que neste caso eu nao interrompi a string para colocar a variavel, apenas a coloquei lá no meio como um outro
texto qualquer, vejamos o output:
<meta name="description" content=" this is some text" />
Ou seja, a grande diferença entre os 2 tipos, é que código dentro de aspas é interpretado e dentro de plicas não.
Vantagens? sim algumas a mais óbvia seria apresentar código ao leitor de uma página, usando plicas esse código seria
tratado pelo "parser" (interpretador de PHP) como texto e seria mostrado ao utilizador em vez de ser interpretado, por
outro lado o uso de aspas mesmo tendo código PHP lá dentro permite que esse código seja de mais facil leitura um dia
mais tarde, e facilita a vida ao programador, uma vez que é interpretado de igual modo estando dentro ou fora da string.
Espero que ajude.
Aproveito a ocasião para lembrar que o primeiro PHP-PT podcast sai no proximo domingo dia 5 de Agosto, não percam.
Abraço
Miguel Pinto
============================================================================
PHP-PT.com Forum - Comunidade Portuguesa de PHP
Joomlaboard Forum Component version: 1.1.4 Stable
Generated: 30 September, 2016, 08:13