Siga-nos em...
Follow us on Twitter Follow us on Facebook Watch us on YouTube
Registro

Alpha Servers
Página 1 de 2 12 ÚltimoÚltimo
Resultados 1 a 10 de 18

Tópico: Vantagens PDO

  1. #1

    Avatar de anderinho2
    Data de Ingresso
    Jul 2012
    Localização
    Valença-BA
    Idade
    29
    Posts
    270
    Agradecido
    35
    Agradeceu
    31
    Peso da Avaliação
    14

    Padrão Vantagens PDO

    Olá, então galera. Só pra tirar essa dúvida da minha cabeça...

    To passando meu sistema todo pra PDO_SQLSRV, vi muitos sites informando que é mais seguro e tals, só que não informam algo completo sobre o assunto. Para executar query e retorno de dados eu acho perfect e consigo diminui 50% das consultas que faria numa conexão normal...
    ... o que quero saber mesmo é como se comporta uma injeção de SQL "se for possível, qual os testes que devo fazer, caracteres a bloquear?", performance "com certeza melhora, mas quais os maiores pontos disso para dar uma melhor explorada?", ou seja todas as vantagens e desvantagens sob uma conexão normal.

    Muito Obrigado!
    O que você procura...? Qual a sua Ganância...?

  2. #2



    Avatar de Renato
    Data de Ingresso
    Nov 2010
    Localização
    Imperyus
    Posts
    1.099
    Agradecido
    2519
    Agradeceu
    492
    Peso da Avaliação
    30

    Padrão

    Vou ter dar apenas um simples motivo para não utilizar as funções MySQL/MsSQL originais e utilizar PDO: Elas estão obsoletas a partir do PHP 5.5.

    Para mais informações [Somente usuários registrados podem vem os links. ]
    Código PHP:
    <?php
        
    if(Weather::getState() == 'Rainy weather') {
            
    $this->removingLittleHorseFromRain();
        }

  3. O Seguinte Usuário Agradeceu Renato Por este Post Útil:


  4. #3

    Avatar de kind22
    Data de Ingresso
    Nov 2011
    Localização
    fsfs
    Posts
    8
    Agradecido
    11
    Agradeceu
    2
    Peso da Avaliação
    0

    Padrão

    Citação Postado originalmente por Renatiinn Ver Post
    Vou ter dar apenas um simples motivo para não utilizar as funções MySQL/MsSQL originais e utilizar PDO: Elas estão obsoletas a partir do PHP 5.5.

    Para mais informações [Somente usuários registrados podem vem os links. ]
    Eu vou te dar um simple motivo pra nao utilizar php 5.5, nao existe plugim oficial pra sql.

  5. O Seguinte Usuário Agradeceu kind22 Por este Post Útil:


  6. #4



    Avatar de Ayrton Ricardo
    Data de Ingresso
    May 2012
    Localização
    Joao Pessoa - PB
    Idade
    28
    Posts
    1.379
    Agradecido
    262
    Agradeceu
    171
    Peso da Avaliação
    26

    Padrão

    Uma injeção de SQL se comporta assim:

    "SELECT * FROM character WHERE id = " . $id;
    Dai na id você pega direto via get, mas ali o cara põe: 1; SELECT * FROM Memb_INFO;
    ai sua query executa e traz o personagem que pediu e ainda traz todas as contas :v (exemplo bem rústico)

    Código PHP:
    $id $_GET['id'];//isto é errado, mas to sitando como exemplo. Sempre tem que tratar algo vindo do get ou post.
    $sth $dbh->prepare('SELECT * FROM character WHERE id = :identi');
    $sth->bindParam(':identi'$id PDO::PARAM_INT);

    //ai se de repente você quer pegar o login de uma pessoa:

    $login $_GET['login'];
    $sth $dbh->prepare('SELECT * FROM tabela_login WHERE login = :login');

    $sth->bindParam(':login'$login PDO::PARAM_STR12);//Limit de caracteres é o mais rápido a se fazer e simples.

    //e por fim executa;
    $sth->execute(); 

    Você pode fazer uma classe que cuida das coisas pra você e estende do PDO, ou simplesmente usa algo já feito(recomendo o Doctrine).
    Da uma lida sobre binds, e passa na minha assinatura, tem uma ótima fonte de conhecimento lá.


    Vamos citar o exemplo do doctrine, você com ele não precisa nem execultar statements, ele usa classes e objetos para isto, ele mesmo sabe através de uma classe modelada, o que vai executar e o que vai trazer.

    Código PHP:
    <?php
    // src/Product.php
    /**
     * @Entity @Table(name="products")
     **/
    class Product
    {
        
    /** @Id @Column(type="integer") @GeneratedValue **/
        
    protected $id;
        
    /** @Column(type="string") **/
        
    protected $name;

        
    // .. (other code)
    }
    // pega assim:
    <?php
    // show_product.php <id>
    require_once "bootstrap.php";

    $id $argv[1];
    $product $entityManager->find('Product'$id);

    if (
    $product === null) {
        echo 
    "No product found.\n";
        exit(
    1);
    }

    echo 
    sprintf("-%s\n"$product->getName());
    O nome disso é Object Relational Mapper(ORM), e o Doctrine usa (Doctrine ORM).


    Citação Postado originalmente por kind22 Ver Post
    Eu vou te dar um simple motivo pra nao utilizar php 5.5, nao existe plugim oficial pra sql.
    Cuidado ao se referenciar, sql engloba: MySql, MsSql(etc)... Sql é uma linguagem, logo vai longe, e existe driver oficial, como é o caso do "PDO_SQLSRV" para MSSQL server.
    Última edição por Ayrton Ricardo; 16-03-2014 às 01:36 PM.
    Leiam, todo desenvolvedor PHP precisa conhecer: Hidden Content .




  7. Os Seguintes 2 Usuários Agradeceram você Ayrton Ricardo Por este Post Útil:


  8. #5



    Avatar de Renato
    Data de Ingresso
    Nov 2010
    Localização
    Imperyus
    Posts
    1.099
    Agradecido
    2519
    Agradeceu
    492
    Peso da Avaliação
    30

    Padrão

    Citação Postado originalmente por kind22 Ver Post
    Eu vou te dar um simple motivo pra nao utilizar php 5.5, nao existe plugim oficial pra sql.
    O que você entende por "oficial"? Se está se referindo a MSSQL, existe o driver PDO_SQLSRV disponibilizado pela MICROSOFT. Pode ser BETA, mas mesmo assim é estável e é "oficial".
    Código PHP:
    <?php
        
    if(Weather::getState() == 'Rainy weather') {
            
    $this->removingLittleHorseFromRain();
        }

  9. #6

    Avatar de anderinho2
    Data de Ingresso
    Jul 2012
    Localização
    Valença-BA
    Idade
    29
    Posts
    270
    Agradecido
    35
    Agradeceu
    31
    Peso da Avaliação
    14

    Padrão

    Vlw galera, estou goxtando

    [Somente usuários registrados podem vem os links. ]
    Oficial mesmo só tem até a 5.4, existe alguns não oficial pela net, mas eu nem me atrevo a testar =/
    E como MU "Brasileiro" q é a área q eu estou mexendo só funciona coisas antigas ¬¬"tipo SQL 2000,Win2003" , eu decidi fazer em php 5.2 mesmo "HGIDC,Universe, n sei Alpha, fora os vários outros hosts q já usei, inclusive hosts renomados: default php 5.2", pelo que parece ainda vai durar muito tempo no mercado. No meu próximo projeto eu vou me atualizar...

    [Somente usuários registrados podem vem os links. ]
    Então Ayrton, eu achava que o Bind já fazia essas checagens dos caracteres e removia ou pelo menos dava uma mensagem de erro =/
    Eu puxo todas minhas infos direto do _GET e _POST, só que possuo uma classe em que dou um foreach nelas e faço a verificação dos caracteres =D
    Como eu já estava com essa web aqui eu decidi terminar logo ela, meu próximo projeto será justamente em Doctrine "ainda tenho que estudar mais um pouco, vi só o basicão msm"


    @All
    Mas enquanto a performance, tem alguma diferença, além da que citei?
    O que você procura...? Qual a sua Ganância...?

  10. #7



    Avatar de Renato
    Data de Ingresso
    Nov 2010
    Localização
    Imperyus
    Posts
    1.099
    Agradecido
    2519
    Agradeceu
    492
    Peso da Avaliação
    30

    Padrão

    @anderinho2, as funções anteriores ficaram obsoletas a partir do 5.5, como vc pode ver no php.net.
    Mas mesmo em versões anteriores do PHP você já pode utilizar o driver PDO, não há qualquer problema em relação a isto, pois há diversos tipos de drivers. Salvo engano, a partir da 5.2 já é possível utilizar (tanto com TS ativo, como sem TS).
    Código PHP:
    <?php
        
    if(Weather::getState() == 'Rainy weather') {
            
    $this->removingLittleHorseFromRain();
        }

  11. #8



    Avatar de Ayrton Ricardo
    Data de Ingresso
    May 2012
    Localização
    Joao Pessoa - PB
    Idade
    28
    Posts
    1.379
    Agradecido
    262
    Agradeceu
    171
    Peso da Avaliação
    26

    Padrão

    Me perdi, drivers pra vocês são o que?


    Ponto 2: Ao usar o PHP.net use-o em inglês, pois em PT-BR anda com falta de tradução, traduções obsoletas.

    Link BR: [Somente usuários registrados podem vem os links. ]
    Link EN: [Somente usuários registrados podem vem os links. ]

    Tem uma diferença grande ai.
    Última edição por Ayrton Ricardo; 16-03-2014 às 02:48 PM.
    Leiam, todo desenvolvedor PHP precisa conhecer: Hidden Content .




  12. #9


    Avatar de Litlle
    Data de Ingresso
    Jul 2010
    Localização
    Bh
    Idade
    33
    Posts
    233
    Agradecido
    229
    Agradeceu
    75
    Peso da Avaliação
    18

    Padrão

    Não sei pq apagaram meu post, coisa newbie. Quer mais conhecimento que o site oficial do PHP ? Lá tem comentários de PROGRAMADORES, não alguns ai kkkk

    Devido a compatibilidade do PDO (Geralmente só vem liberado o mysql, tive que pedir liberação na HG), aconselho usar uma classe controladora intermediaria. Posteriormente, você pode troca-la por PDO. SQL Inject é tratamento de dados.

    Você também pode utilizar um ORM, como disseram. Mas não indico para iniciantes.

    Sobre a performance, esta mais ligada na forma que vc faz a consulta, do que a biblioteca que vc usa para tal.

  13. #10



    Avatar de Renato
    Data de Ingresso
    Nov 2010
    Localização
    Imperyus
    Posts
    1.099
    Agradecido
    2519
    Agradeceu
    492
    Peso da Avaliação
    30

    Padrão

    Seu tópico foi apagado por ser desnecessário. Se quer ajudar o usuário, faça comentários completos, indicando a URL direta para a página que contém a informação buscada.
    Seu post simplesmente indicou o site "www.php.net", o mesmo que mandar o usuário procurar no google. Uma atitude grotesca e reprovável. Se não quer colaborar de verdade, abstenha-se de comentar.
    Ademais, se está em desacordo com a forma com que moderei seu post, reclame na ouvidoria, aqui não é lugar.
    Código PHP:
    <?php
        
    if(Weather::getState() == 'Rainy weather') {
            
    $this->removingLittleHorseFromRain();
        }

 

 
Página 1 de 2 12 ÚltimoÚltimo

Informações de Tópico

Usuários Navegando neste Tópico

Há 1 usuários navegando neste tópico. (0 registrados e 1 visitantes)

Tópicos Similares

  1. |Notícia| Seja Vip e tenha vantagens!
    Por Willerson no fórum Como se tornar membro vip
    Respostas: 0
    Último Post: 30-05-2013, 10:55 PM

Marcadores

Permissões de Postagem

  • Você não pode iniciar novos tópicos
  • Você não pode enviar respostas
  • Você não pode enviar anexos
  • Você não pode editar suas mensagens
  •