Jump to content


Photo

Problema Com Querystring


  • Faça o login para participar
7 replies to this topic

#1 Re-Lenner

Re-Lenner

    Novato no fórum

  • Usuários
  • 13 posts
  • Sexo:Não informado

Posted 16/03/2006, 13:24

Pessoal a 3 anos eu tenho usado esse codigo de querystring que por sinal peguei aqui no forum mesmo em um topico do legionario e nunca tive problemas com ele, porem ultimamente ele nao funciona de jeito nenhum...


<?
$query="$pagina";
$ver="$query.htm";
if ($query == "") {
include "principal.htm";
} elseif (!file_exists($ver)) {
include"erro404.php";
echo "<font face=verdana size=1 color=red>Erro Página não Encontrada<br>$query.php</font>";
} else {
include "$ver";
}
?>

Alguem sabe o que pode estar acontecendo?

O erro eh esse: Undefined variable: pagina in

Me falaram pra não colocar variaveis dentro de aspas, ja editei deixando

$query = $pagina; $ver = $query;

E mesmo assim continua com o erro, se alguem poder me ajudar ficarei grato =D



OBS: o que me deixa intrigado, eh que sempre usei ele do jeitinho que esta e nao dava problemas :blink:

#2 dbl

dbl

    Diogo Branco Leal

  • Usuários
  • 505 posts
  • Sexo:Masculino
  • Localidade:Teresópolis - RJ
  • Interesses:PHP, Firework, Photoshop, Flash, etc...

Posted 16/03/2006, 14:23

Fala cara tem algo estranho nisso aki
$ver="$query.htm";

Bom de qualquer modo eu uso essa querystring aqui em baixo! se vc quiser...

  <?php
    if (!$_GET['area']) {
      echo 'Página em construção...';
    } if ($_GET['area']) { 
    if (!file_exists($_GET['area'].'.php')) {
      echo 'Página não encontrada!';
    } else {
      @include $_GET['area'].'.php';
    }
    }
  ?>


é só colocar onde vai aparecer o conteudo do site e naum precisa colocar isso em todas as paginas SOMENTE A PAGINA PRINCIPAL(index.php)

e os links ficarão assim:
<a href="?area=contato">Contato</a>

Somente issu
:P
flws
dbl - Um só Deus é pai de todos, o qual é sobre todos e em todos. (Efésios - 4.6)
Posted Image

#3 Re-Lenner

Re-Lenner

    Novato no fórum

  • Usuários
  • 13 posts
  • Sexo:Não informado

Posted 16/03/2006, 16:35

Fala dbl valew pelo seu code de querystring testei aki e funciono legal, soh nao consegui "colocar" uma pagina pra iniciar na area....

Tipo nesse q tinha, onde eu colocava o codigo iniciava "principal.htm" e depois abria as outras...

Nesse que você me passou nao consegui adicionar isso




OBS: porque sera que aquele script do legionario funcionava e agora nao funciona + ?

#4 dbl

dbl

    Diogo Branco Leal

  • Usuários
  • 505 posts
  • Sexo:Masculino
  • Localidade:Teresópolis - RJ
  • Interesses:PHP, Firework, Photoshop, Flash, etc...

Posted 16/03/2006, 19:02

é só vc colocar isso aqui:

<?php
    if (!$_GET['area']) {
    include 'principal.php'
    } if ($_GET['area']) { 
    if (!file_exists($_GET['area'].'.php')) {
      echo 'Página não encontrada!';
    } else {
      @include $_GET['area'].'.php';
    }
    }
  ?>


bom acho q é issu!
se der erro posta ae vlw?
T+
dbl - Um só Deus é pai de todos, o qual é sobre todos e em todos. (Efésios - 4.6)
Posted Image

#5 Paulo Freitas

Paulo Freitas

    ××××××× LRU #456504 ××××××× ××××××× LRM #364686 ×××××××

  • Ex-Admins
  • 5612 posts
  • Sexo:Masculino
  • Localidade:Campinas - SP

Posted 16/03/2006, 19:05

O erro é óbvio. A variável $pagina não foi definida. Quem é $pagina ? Vem de GET, não é mesmo ? Então use $_GET['pagina']. Esquece tudo o que já ouviu falar sobre register globals = ON. ;)

[]’s :DAté mais

#6 Re-Lenner

Re-Lenner

    Novato no fórum

  • Usuários
  • 13 posts
  • Sexo:Não informado

Posted 16/03/2006, 19:56

O erro é óbvio. A variável $pagina não foi definida. Quem é $pagina ? Vem de GET, não é mesmo ? Então use $_GET['pagina']. Esquece tudo o que já ouviu falar sobre register globals = ON. ;)

[]’s :D

Então eu percebi que nao tinha nada indicando o que viria a ser o $pagina, o problema eh quando usava antes, nao tinha nada indicando tambem e nao dava erro...

<? 
$query="$ir"; 
$ver="$query.php"; 
if ($query == "") { 
include "home.php"; 
} elseif (!file_exists($ver)) { 
include"erro.php"; 
echo "<font face=verdana size=1 color=#333333>Página não encontrada, <a href=javascript:history.back(1)>click aqui</a> para voltar a página anterior.</font>"; 
} else { 
include "$ver"; 
} 
?>

Creio que o erro deve estar na instalaçao do meu "apache/php/mysql"
Pois acabei de fazer o upload do codigo acima a dialhost e funciono normal...

// EDITADO

Bom eu dei uma pesquizada sobre esse register globals e percebi que esta off no meu pc...

Sera que era por isso que nao esta funcionando agora?

Antes funcionava quando estava no ON...


Agora me responsda umas duvidas:

Colocando Register Globals ON a seguranca fica baixa certa? o que podem fazer com ele?

Adianta alguma coisa eu modificar meus query pra register globaos off e meu servidor continuar com o register globals on?

Qual o modo mais usado na net? On ou Off?

// EDITADO

Uso o Easyphp se eu quizesse alterar meu register globals pra ON onde editaria, jah que nao axei nenhum php.ini na pasta do meu windows?

Edição feita por: Re-Lenner, 17/03/2006, 16:03.


#7 Paulo Freitas

Paulo Freitas

    ××××××× LRU #456504 ××××××× ××××××× LRM #364686 ×××××××

  • Ex-Admins
  • 5612 posts
  • Sexo:Masculino
  • Localidade:Campinas - SP

Posted 16/03/2006, 22:38

Opa ... ;)

Então ...

A diretiva register_globals como ON em si não é insegura. Seu emprego inadequado que a torna insegura. ;)

Hoje em dia a maioria usa ON, errôneamente. Isto acarretou numa desinformação generalizada por parte dos programadores, que hoje em dia acha mais prático (com coisa que programador deve achar algo ...). :bah:

O manual do PHP atualmente recomenda prioritariamente o desuso desta diretiva de configuração, tornando-a como OFF, recomendando em contrapartida o uso das variáveis superglobais ($_GET, $_POST, $_COOKIE, etc). O uso das variáveis superglobais é recomendado tanto a diretiva register_globals estando ON como OFF, funcionará igualmente. (y)

Se antes não ocorria problemas em seu computador, pode ter certeza, a diretiva register_globals estava configurada como ON (ligada). Mas ... esquece isso. Faz de conta que ela não existe, deixa ela lá como OFF e pronto. Até mesmo porque, à partir do PHP 6.0 ela nem existirá mais, será extinta.

Se no servidor estiver ON, tudo bem, poderá continuar usando as variáveis superglobais normalmente, como se ela nem existisse.

Alguns preferem, errôneamente, utilizar ela (diretiva) como ON, e na hora de ocorrer algum alerta, usar o famoso operador de controle de erros (o arroba). Não tenho nem o que dizer sobre os que fazem isto, apenas lamentar. Garanto à ti que o programador profissional jamais faz isto.

Sobre o arquivo de configurações do PHP (php.ini), se tu que instalou não sabe, como saberei ? :wacko:

Não sei. Tu usa EasyPHP, aí já são outros qüinhentos, não uso estes "pacotes" made in china :P. Não estar na pasta do Windows não quer dizer nada. Meu PHP eu instalei manualmente e ele não fica na pasta do Windows. Este é o mau dos que preferem usar os "super pacotes", ficam totalmente desinformados. :(

O arquivo php.ini, conforme o arquivo install.txt que todo programador que instala o PHP manualmente lê, pode estar nos seguintes locais:
  • SAPI module specific location (PHPIniDir directive in Apache 2, -c command line option in CGI and CLI, php_ini parameter in NSAPI, PHP_INI_PATH environment variable in THTTPD)
  • HKEY_LOCAL_MACHINE\SOFTWARE\PHP\IniFilePath (Windows Registry location)
  • The PHPRC environment variable
  • Current working directory (for CLI)
  • The web server's directory (for SAPI modules), or directory of PHP (otherwise in Windows)
  • Windows directory (C:\windows or C:\winnt) (for Windows), or --with-config-file-path compile time option
Em meu caso, fica no diretório do PHP, que está presente na variável ambiente PATH do Windows.

Viu ? Instalar "super pacotes" é regredir conhecimento. ;)

Mas ... não precisa editar o arquivo php.ini não. Se quiser, edita, tu faz o que quiser :rolleyes:. Mas ... é só um alerta, será outra regressão. (y)

Para saber mais sobre a diretiva de configuração register_globals, leia: PHP Manual - Security - Chapter 29. Using Register Globals (sim, em inglês, língua universal)

[]’s :DAté mais

#8 Re-Lenner

Re-Lenner

    Novato no fórum

  • Usuários
  • 13 posts
  • Sexo:Não informado

Posted 17/03/2006, 15:59

Eh eu estava usando o EasyPHP made in taubaté =P

Desinstalei ele, e instalei tudo manualmente, e agora mesmo com o Register_globals Off a querystring funciona perfeitamente O_O

Como programação nao é minha area, nao sei dizer porque estava dando erro, deve ter dado bug qdo tinha instalado o easyphp sei la ...


Valew pela ajuda ai. (y)




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq