• Fiz a atualização no meu site http://www.circuitoarqdecor.com e apareceu no cabeçalho esta mensagem.
    Warning: Missing argument 2 for wpdb::prepare(), called in /home/storage/c/72/2b/circuitoarqdecor/public_html/wp-content/plugins/wp-post-thumbnail/wppt.php on line 372 and defined in /home/storage/c/72/2b/circuitoarqdecor/public_html/wp-includes/wp-db.php on line 992
    Poderiam me ajudar por favor?

Visualizando 1 resposta (de um total de 1)
  • PHP Warning: Falta argumento 2 para wpdb :: prepare ()

    Olá plugin ou tema autor! Você possivelmente encontrei este post depois de pesquisar na Internet para o erro acima: “PHP Warning:. Falta argumento 2 para wpdb :: prepare ()”

    Então, este é um novo alerta em 3,5. Não há sites estão quebrados, está tudo bem, como antes. Mas, isso é realmente algo que você precisa para olhar, porque você pode estar expondo os seus usuários a uma possível vulnerabilidade de injeção SQL. Agora isso não é divertido!

    Primeiro, se você for um usuário e você quer se livrar desses erros, você deve desligar a exibição de erros no PHP. Há muitas maneiras de fazer isso, como no php.ini,. Htaccess, etc Para isso, você pode simplesmente colocar isso no wp-config.php. (Note que os erros se escondendo em locais de produção é uma boa prática de qualquer maneira.)
    1

    @ Ini_set (‘display_errors’, 0);

    Se você é um usuário, você pode parar por aqui. (Se você precisar de mais ajuda, por favor, não comente aqui, tente o útil Fóruns de Suporte). Só não se esqueça de enviar um link para este post para o desenvolvedor do tema ou plugin referenciada no erro.

    Agora, os desenvolvedores: Veja como $ wpdb-> prepare () deve funcionar:
    1

    $ Wpdb-> prepare (“SELECT * FROM tabela WHERE ID =% d E name =% s”, $ id, $ name);

    Veja como $ id – um número inteiro, presumivelmente – foi passado como o segundo argumento? Que corresponde ao primeiro espaço reservado,% d. Então, $ name (uma string) foi passado como o terceiro argumento, assim, o segundo espaço reservado,% s. Isso torna-se sua consulta é seguro e impede que algo parecido com mesinhas de bobby. (Nota: o cômico é errado, não higienizar – sempre preparar as suas dúvidas.)

    O problema é que um número de pessoas que estavam chamando $ wpdb-> prepare () com apenas um argumento, assim:
    1

    $ Wpdb-> prepare (“SELECT COUNT (*) FROM tabela”);

    Veja, não há parâmetro (% d,% s, ou para floats,% f) nesta consulta. Isto acontece a funcionar bem, mas a chamada prepare não está fazendo nada. Deverá sim a consulta diretamente, já que não existem entradas.

    Mas é aqui que reside o problema:
    1

    $ Wpdb-> prepare (“SELECT * FROM tabela WHERE id = $ id”);

    Veja o problema? Essa consulta não é seguro! Você pode pensar que está “preparando” esta consulta, mas você não está – você está passando $ id diretamente na consulta, despreparados. E isso, aqui, é por isso que $ wpdb-> prepare () agora emite um aviso se não for chamado com mais de um argumento. Porque você não pode preparar uma consulta sem mais de um argumento. Aqui está um exemplo correto:
    1

    $ Wpdb-> prepare (“SELECT * FROM tabela WHERE id =% d”, $ id);

    Esta não foi uma decisão feita de ânimo leve. Nós não gostamos empurrando avisos do PHP para os rostos dos usuários e desenvolvedores. Mas, devido aos potenciais riscos de segurança, que queria que todos imediatamente olhar como eles estão executando consultas. E, claro, sempre prepará-los adequadamente.

    Para mais: wpdb Codex referência, # 22262, e [22,429].

Visualizando 1 resposta (de um total de 1)

O tópico ‘Problemas com o 3,6’ está fechado para novas respostas.