Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sign in to follow this  
Tiago fernando

querystring dúvidas

Recommended Posts

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

Share this post


Link to post
Share on other 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:

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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?

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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!

Share this post


Link to post
Share on other 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???

Share this post


Link to post
Share on other 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!

Share this post


Link to post
Share on other sites
Tiago fernando

pessoal obrigado pela ajuda vou pesquisar e ler um pouco sobre segurança pois não sei nada sobre o assunto

Share this post


Link to post
Share on other 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!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.