PplWare Mobile

Inserção de dados em MySQL com PHP + AJAX

                                    
                                

Este artigo tem mais de um ano


Autor: Hélio Moreira


  1. Lol says:

    Fazerem um tutorial com recurso a uma tecnologia totalmente deprecated e desaconselhada (mysql), não é lá muito boa ideia.

  2. PHP says:

    Acho que faltou só fechar a ligação à Base de Dados.
    De resto está bastante fácil de entender. 🙂

  3. ZiLOG says:

    Uma pergunta:

    Se algum utilizador mal intencionado abrir o ficheiro “grava.php” tem acesso à password para editar a base de dados?

    • TelmoN says:

      Que eu saiba não, pois não consegues ver o conteúdo do ficheiro “grava.php” já que o conteúdo está dentro das tags o que significa que é executado do lado do servidor. Mesmo que faças o download do ficheiro, virá em branco, a não ser que tenhas HTML, Javascript, etc já dentro fora das tags do php.

    • Rudi Rocha says:

      Se houver quebra de segurança, e o atacante conseguir obter o ficheiro sim… mas creio que o objectivo deste artigo foi demonstrar como usar o ajax em funções assíncronas de um browser.
      Para acrescentar segurança, isso já seriam precisos mais uns quantos artigos sobre o assunto.
      Bom artigo!

    • Ricardo says:

      Oi Ziliog.

      Abrir o ficheiro php é impossivel, visto que php funciona no server side e nao no client side.

      A password pode nem estar nesse ficheiro.
      Espero ter exclarecido.

    • ZiLOG says:

      Pensava que se no Chromium fosse ao menu “Ferramentas”->”Ferramentas do Programador” desse para ver o conteúdo do ficheiro PHP.

      • António Riso says:

        Não dá.
        A linguagem php é uma linguagem executada do lado do servidor. Ou seja, antes de a página ser enviada para o teu browser, o servidor interpreta as instruções php e produz o seu resultado para apenas html, e de seguida envia esse resultado.

        Uma falha de segurança, como já aqui foi falado, poderia sim expor a password. Mas para isso era preciso o utilizador ter acesso aos ficheiros fonte do website que estão alojados no servidor. Mesmo que deixes a password assim “à mostra” num ficheiro, as empresas de alojamento garantem que ninguém acede aos ficheiros. Contudo deves sempre procurar outras técnicas de segurança. Nunca é demais. Uma muito simples passa por colocar ficheiros de configurações fora da pasta pública do website.

    • Guilherme Cabral says:

      uma das técnicas de segurança é criar vários utilizadores na base de dados com diferentes níveis de acesso. assim, mesmo que a password seja descoberta, os danos sejam menos graves 🙂

      • William schoeffel says:

        Essa técnica ainda permite descobrir com qual usuário foi feita as alterações, por isso é recomendado cada pessoa ter seu usuário de banco.

  4. Nelson says:

    Excelente, excelente tutorial! Parabéns! 🙂

  5. João says:

    Já nem digo para fazerem tutoriais em coisas mais bleeding edge ou que ainda não se encontre facilmente na net.. mas ao menos podiam tentar seguir as boas práticas e as convenções atuais.

  6. Gomes says:

    Falta um pormenor importante a nível de segurança, os parâmetros não estão devidamente tratados, para gerar erro basta colocar uma pelica num dos campos do formulário.

    • Olá Gomes,

      Sim, não estão implementados sistemas de segurança, mas o intuito também não é esse, é sim, exemplificar a facilidade que existe em utilizar PHP + AJAX.

      A questão da segurança dava uma série de tutoriais. O que eventualmente posso vir a escrever.

      Obrigado pelo seu comentário,
      Hélio Moreira

  7. Gomes says:

    Outra sugestão, visto que o formulário está a ser enviado por “post”, o ideal seria usar $_POST ao invés de $_REQUEST, pois uma pessoa mal intencionada desse modo poderia enviar dados via GET ou COOKIES.

    • Guilherme Cabral says:

      +1

    • Olá Gomes (novamente) :),

      Sim, ao passar em POST, devo receber em POST. Mais uma vez a questão de segurança é pertinente neste caso.

      Contudo, desta forma e para quem esteja a aprender, ao utilizar o REQUEST pode utilziar a função em qualquer situação, quer passe por GET ou POST.

      Mas sem dúvida que a boa prática será utilizar o mesmo método.

      Cumprimentos,
      Hélio Moreira

  8. Batman O Justiceiro says:

    Atenção as falhas graves de segurança. Aconselho que a ligação a base de dados seja feita por PHP:PDO e que se corrigam falhas a nível de Sql injection.

    • Olá “Batman”,

      Sim, não estão implementados sistemas de segurança, mas o intuito também não é esse, é sim, exemplificar a facilidade que existe em utilizar PHP + AJAX.

      A questão da segurança dava uma série de tutoriais. O que eventualmente posso vir a escrever.

      Obrigado pelo seu comentário,
      Hélio Moreira

      • Filipe Sá says:

        mysql_real_escape_string() não é um sistema de segurança, é uma função.

        Isto de deixar a segurança para os outros dá muito mau resultado…

  9. NP says:

    Tirando o facto de ser um bom exemplo para quem estiver a dar os primeiros passos, é também importante dizer:

    Don’t try this at work!

  10. Carlos Oliveira says:

    Bom post para quem está a iniciar nesta área 🙂

  11. Tiago says:

    Parabéns Hélio pelo tutorial e a todos que postam comentários que possa vir a nos servir com qualquer boa informação.

  12. Gabriel says:

    Procurei em umas 20 paginas de tutorial. e este quase que com um ano de publicado foi o único que solucionou o problema, pois inves de usar Form, usa DIV…
    Muito obrigadooo

  13. Danny Dantas says:

    Ótimo post, parabéns!
    E se no caso fossem campos dinâmicos, como seria o recebimento e envio dos dados no Jquery?

  14. Andréia says:

    Caso quisesse realizar um upload de imagem junto com o formulário, como seria?

  15. marcelo says:

    Estou com mysqli
    mas aparece a mensagem cadastro efetuado com sucesso
    porem não insere no banco no final
    oque pode ser?

Deixe um comentário

O seu endereço de email não será publicado.

You may use these HTML tags and attributes: <a href="" title="" rel=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

Aviso: Todo e qualquer texto publicado na internet através deste sistema não reflete, necessariamente, a opinião deste site ou do(s) seu(s) autor(es). Os comentários publicados através deste sistema são de exclusiva e integral responsabilidade e autoria dos leitores que dele fizerem uso. A administração deste site reserva-se, desde já, no direito de excluir comentários e textos que julgar ofensivos, difamatórios, caluniosos, preconceituosos ou de alguma forma prejudiciais a terceiros. Textos de caráter promocional ou inseridos no sistema sem a devida identificação do seu autor (nome completo e endereço válido de email) também poderão ser excluídos.