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
Documentos relacionados
PHP e Formulários HTML Enviando informações para um
Funções especiais para formatação de dados Existem funções que tratam códigos HTML recebidos e coloca caracteres especiais em seu lugar. Assim, caso o usuário digite um código HTML como valor de al...
Leia mais