Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Tiago fernando

querystring dúvidas

Mensagens Recomendadas

Tiago fernando

Ola pessoal eu estou com dificuldades na seguinte query..


<?
require_once('connect.php');

$cons = mysql_query("select * from Pagina where titulo = '".$valor."'");
$linha = mysql_fetch_array($cons);
?>

<body>

<?

$valor = 'pag';


            $valor = (isset($_GET[$valor])) ? addslashes(htmlspecialchars($_GET[$valor], ENT_QUOTES)) : false;

   switch ($valor)  {

         case 'Serviços':

            echo $linha['conteudo'];

         break;

         case 'Quem Somos':

            echo $linha['conteudo'];

         break;

   default:
      echo '';
   break;
}
?>
</body>

ou seja o que eu queria fazer é qdo seleciono uma opção no menu exemplo:<a href="index.php?pag=Serviços"> a query iria na base de dados e escolhia o conteudo da pagina serviços. mas não esta a funcionar

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Tiago fernando

desculpa eu sou novo em programação eu não precebi muito bem como montar a query pelo que precebi o código teria de ser assim

<?
$cons = mysql_query("select * from Pagina");
$linha = mysql_fetch_array($cons);
?>

mas como eu iria montar a quer?

<?

$valor = 'pag';


            $valor = (isset($_GET[$valor])) ? addslashes(htmlspecialchars($_GET[$valor], ENT_QUOTES)) : false;

   switch ($valor)  {

         case 'Serviços':

            $cons = mysql_query("select * from Pagina where titulo = '.valor.'");
                 $linha = mysql_fetch_array($cons);

            echo $linha['conteudo'];

         break;

fiquei perdido agora  :wallbash:

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
softklin

Podes começar no W3Schools: http://www.w3schools.com/PHP/php_syntax.asp

Estás a ver lá em cima a variável valor a ser utilizada (linha 4)?

$cons = mysql_query("select * from Pagina where titulo = '".$valor."'");

Agora, vê onde é que lhe atribuis conteúdo (à variável $valor). No fundo, tal e qual o que o fnds disse... Não esquecer que o ficheiro PHP é lido de cima para baixo pelo interpretador.


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Tiago fernando

opa acho que ja entedi qdo chegar em casa vou testar obrigado pela ajuda pessoal, este forum é fantastico tem me ajudado muito e facilitado a aprendizagem, já agora essa query é considerada segura da maneira que esta montada?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
softklin

Talvez utilizando apenas a função mysql_real_escape_string() em vez de addslashes(htmlspecialchars($lol)), visto que não vais imprimir a variável, e logo não há necessidade de escapar sequências de texto em HTML.

http://pt.php.net/mysql_real_escape_string


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
djthyrax

O addslashes() não tem qualquer vulnerabilidade, simplesmente as pessoas não sabem usar a função correctamente e isso sim cria vulnerabilidades na aplicação.


Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Tiago fernando

djthyrax eu sou novo em programação e sei que não sou muito bom mas tento sempre fazer da maneira mais correta, eu gostaria de saber se o addslashes()  que eu utilizei esta da maneira correta???

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
djthyrax

Está usado correctamente no contexto correcto do script, mas pode estar a criar-te uma vulnerabilidade dependendo do servidor. O grande problema do addslashes() é que por vezes quando o magic_quotes está activo, o addslashes() reverte o efeito e acaba por "descapar" os caracteres mais perigosos. Por isso, o ideal é teres logo ao início uma rotina que veja se o magic_quotes está activo (com o magic_quotes_gpc()), e se tiver, usas o stripslashes(), e depois nas queries usas o mysql_real_string_escape() como te indicaram.

PS: O mysql_real_string_escape() funciona fazendo um pedido ao servidor MySQL, pelo que se a usares, vais ter que usar mesmo o MySQL como SGBD, e tens de já ter chamado o mysql_connect(). :thumbsup:


Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
djthyrax

Podes ler o sticky meu na secção de PHP sobre Vulnerabilidades em Aplicações Web para começar. :)


Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.