você está aqui: Home  → Arquivo de Mensagens Workshop Gratuito: Os Segredos do Shell, com o Prof. Julio Neves

Usando SQLs em PHP apartir de um arquivo de funções

Colaboração: Eduardo Ferreira de Carvalho

Data de Publicação: 06 de Fevereiro de 2005

A minha dica será como implementar um arquivo com funções SQL para serem utilizadas em arquivos PHP possibilitando até trabalhar com camadas.

UM recurso interessante é centralizar num único arquivo todas as conexões ao banco de dados, no meu caso MYSQL. Para isso criei um arquivo db_sql.php que possui o seguinte código:

<?php

if (function_exists("DbQuery")==false)
{
function DbQuery($Query,$type)
{
  $DbQueryResult=mysql_query($Query);

  if ($type==1)
  {
   $NumFields=mysql_num_fields($DbQueryResult);

   for ($c=0;$c<=($NumFields-1);$c++)
   {
    $Name[$c]=mysql_field_name($DbQueryResult,$c);
   }

   $QueryResultAll=mysql_fetch_array($DbQueryResult);

   for($d=0;$d<=($NumFields-1);$d++)
   {
    $QueryResult[$Name[$d]]=$QueryResultAll[$d];
   }
  }

  if ($type==2)
  {
   $NumRegist=mysql_num_rows($DbQueryResult);

   $NumFields=mysql_num_fields($DbQueryResult);

   for ($c=0;$c<=($NumFields-1);$c++)
   {
    $Name[$c]=mysql_field_name($DbQueryResult,$c);
   }

   for ($c=0;$c<=($NumRegist-1);$c++)
   {
    $QueryResultAll[$c]=mysql_fetch_array($DbQueryResult);

    for($d=0;$d<=($NumFields-1);$d++)
    {
     $QueryResult[$c][$Name[$d]]=$QueryResultAll[$c][$d];
    }
   }
  }
return $QueryResult;
}
}

if (function_exists("db_connect")==false)
{
function db_connect()
{
include "constantes.php";
$link=mysql_pconnect($host,$user,$pass);
if ($link)
{
 mysql_select_db($BD,$link);
}
}}

if (function_exists("db_query")==false)
{
function db_query($query)
{
$resultado=mysql_query($query);
return TRUE;
}}

?>

Neste arquivo existem 3 funções: DbQuery(), db_connect() e db_query().

DbQuery() - função para utilização de SELECT
db_connect() - função que conecta ao banco de dados
db_query() - função para utilização de INSERT, UPDATE e DELETE

Para todos os arquivos php que utilizarão as funções SQL, coloca-se:

require("db_sql.php");
db_connect();

Depois a chamada para uma das funções:

<?php
.....
$sql="UPDATE t1 SET c1='$var1' WHERE c2='$var2'";
$result=db_query($sql);

$sql="SELECT nome FROM t1";
$linha=DbQuery($sql,2);
$TotalRegistros = $linha[NumRegist];
     $c = 0;
     if ($linha)
     {
      while($linha[$c])
      {
       $Atual = $linha[$c];
       $nome=$Atual[nome];
       $c++;
      }
    }

$sql="SELECT nome FROM t1 WHERE c1='$var1'";
$linha=DbQuery($sql,1);
$nome=$linha[nome];
.....
?>

Onde em DbQuery(), $sql é a string que será o comando SQL enviado e valor=1 avisa para a função que somente retornará um valor do SELECT e valor=2 valores com mais de um registro.

Onde em db_query(), $sql é a string que será o comando SQL enviado.

Onde em db_connect(), o include constantes.php é o arquivo na qual conterá as variáveis $host, $user, $pass e $BD que são essenciais para a conexão com o BD.

Bom, é isso e espero ter ajudado bastante nesta minha primeira postagem em Dicas-L. Qualquer dúvida sobre o código mande-me um e-mail <edufc (a) fem unicamp br> ou pelo MSN <webcemib (a) hotmail com>.


Estatisticas do NBSO: Incidentes -- totais 2004 e 4o trimestre

Estao disponíveis em http://www.nbso.nic.br/stats/incidentes/ as estatísticas dos incidentes reportados ao NBSO (NIC BR Security Office) em 2004, incluindo:

  • os totais anuais agrupados (2004: janeiro a dezembro);
  • o quarto trimestre de 2004 (2004: outubro a dezembro).

    Nos valores agrupados para o ano de 2004, chamam a atenção os seguintes fatores:

  • aumento significativo no número de fraudes, que agora responde por 7% das notificações, e teve um crescimento de aproximadamente 550% em relação ao ano de 2003.
  • as varreduras (scans) foram distribuídas em diversas portas, crescendo bastante o número de varreduras à porta 22/TCP. Estas varreduras têm sido geralmente casos de tentativas de login via força bruta, utilizando ataques de dicionários.

    Nos valores relativos ao quarto trimestre de 2004 cabe destacar:

  • a primeira posição entre as portas varridas ocupada pela 22/TCP, que veio crescendo ao longo do ano.
  • a concentração de quase metade das notificações de fraudes do ano neste trimestre.
  • também continuou constante a exploração de problemas relacionados com PHP em casos de comprometimentos e desfigurações de páginas.
  • o número de notificações de fraudes teve um grande crescimento em dezembro, sendo que este mês sozinho apresentou um número maior que o de todo o ano de 2003.

    Atenciosamente,

    NBSO -- NIC BR Security Office <nbso at nic.br>
    Brazilian Computer Emergency Response Team
    http://www.nbso.nic.br/
    



Veja a relação completa dos artigos de Eduardo Ferreira de Carvalho