PplWare Mobile

PHP é à quinta-feira – Sabe popular uma combobox?

                                    
                                

Este artigo tem mais de um ano


Autor: Pedro Pinto


  1. Rfas says:

    Porreiro, ontem fiz o mesmo mas em C#

  2. Charly says:

    espectaculo 😀 … eu ando a criar um jogo, e na secção de registo tive de fazer o mesmo, com a diferença é que nao vai buscar à base de dados mas sim guarda na base de dados, parabens

  3. jesus says:

    Deixo a seguinte sugestão:
    Uma análise detalhada em termos de segurança de ligações a bases de dados, nomeadamente se submissão de login’s, e pesquisas, de modo a evitar possiveis quebras de segurança. Não é uma questão fácil de abordar, mas penso que quem se inicia no b-a-bá do php, deve ter sempre, mas sempre, este assunto em mente.
    Agradeço desde já a atenção dispensada e continuação do bom trabalho.
    P.S. – tenho seguido com atenção os seus tutoriais, gato pelo seu trabalho.

    • jesus says:

      não é «gato» é «grato» 🙂

    • Pedro Peixoto says:

      Muito obrigado, será abordado num artigo próximo…

    • Eduardo Conceição says:

      Apesar de ser verdade o que dizes no que toca a preocupações de segurança, não é fácil para quem tem poucos conhecimentos ter esses cuidados. Até porque, não é só saber fazer mas sim saber o que se está a fazer.

      Quanto à segurança dos login’s, por exemplo, muita gente o que faz é em vez de enviar uma password, enviar um código hash da password (tipicamente MD5 ou SHA-1) que será comparado com o hash que está guardado na base de dados. No entanto, isto não protege de nada a não ser o facto do administrador da base de dados não conseguir ver as passwords pois, o que está lá registado são os hash’s das mesmas.

      Para se autenticarem de maneira segura o ideal é usar um protocolo SSL. Mas lá está, teria que se configurar o servidor apache para aceitar ligações HTTPS, eventualmente o acesso à base de também podia ser feito através de SSL.

      Seria sem dúvida interessante, mas penso que não neste tutorial (ou pelo menos para já).

      • jesus says:

        Ok. Deixo isso à consideração do autor dos tutoriais. sim eu sei que é um tema mais avançado, no entanto (um dia destes) penso que deveria de ser abordado. Obg pelo ponto de vista.

  4. BAPT says:

    Bom artigo, mais um com a qualidade PPLWare.

    No entanto alerto, que o ciclo While ficou na linha do comentário.

    Boa pascoa a todos

  5. digitalanarchy says:

    viva,
    parabens pela rubrica,
    tocaste-te num ponto importante, javascipt, era “porreiro” se houvesse “javascript é á quarta” 🙂

  6. jedi says:

    muito bem explicado, na altura que estava a a fazer um trabalho em php tive que utilizar para o utilizar fazer uma selecção dinâmica. 😉

  7. Sendo o artigo destinado a quem tem poucos ou nenhuns conhecimentos de programação, a indentação do código devia estar mais cuidada.

    No exemplo dos arrays, o echo do devia estar na linha abaixo e o echo anterior com um avanço à direita.
    Dessa forma a leitura fica muito mais facilitada para quem ainda tem dificuldades em compreender código.

    PS: O reparo não é feito com o sentido destrutivo, mas sim sugestivo 😉

  8. Eduardo says:

    Bom artigo!

    Só uma dúvida: popular? de populamento?
    Penso que a maneira correcta seria povoar de povoamento.
    Penso ser um erro de tradução de populate/population.

  9. tiago_crkj says:

    boa tarde!!! Necessito de ajuda urgente.

    Estou a fazer um projecto academico e quero ligar o flash(as3) a um ficheiro php, já tentei de diversas maneiras e nada.

    Vou deixar aqui o meu código para me poderem ajudar

    php:

    as3:

    // Assign a variable name for our URLVariables object
    var logform_variables:URLVariables = new URLVariables();

    // Build the varSend variable
    var logform_varSend:URLRequest = new URLRequest(“/php_services.php”);
    logform_varSend.method = URLRequestMethod.POST;
    logform_varSend.data = logform_variables;

    // Build the varLoader variable
    var logform_varLoader:URLLoader = new URLLoader;
    logform_varLoader.dataFormat = URLLoaderDataFormat.VARIABLES;
    logform_varLoader.addEventListener(Event.COMPLETE, completeLoginHandler);

    // Handler for PHP script completion and return
    function completeLoginHandler(event:Event):void{

    status_txt.text =””;

    if (event.target.data.return_msg == “no_good”) {

    status_txt.text = “Errado, Tente outra vez”;

    } else if (event.target.data.return_msg == “all_good”) {

    status_txt.text = “Errado, Tente outra vez”;

    }

    }
    // Add an event listener for the submit button and what function to run
    btnentrar.addEventListener(MouseEvent.CLICK, ValidateAndSend);

    // Validate form fields and send the variables when submit button is clicked
    function ValidateAndSend(event:MouseEvent):void{

    status_txt.text =””;
    //validate form fields
    if(!user_txt.length) {

    status_txt.text = “Digite nome de utilizador.”;

    } else if(!pass_txt.length) {

    status_txt.text = “Digita a plavra-passe.”;

    } else {

    // Ready the variables for sending
    logform_variables.sendRequest = “log_user_in”;
    logform_variables.username = user_txt.text;
    logform_variables.pass = pass_txt.text;
    // Send the data to the php file
    logform_varLoader.load(logform_varSend);

    status_txt.text = “Processando…”;

    } // close else after form validation

    }

    P.S: Eu estou a usar o wamp, servidor offline, será necessário estar num serve online?

    necessito de algum ficheiro ou software especifico para que isto funcione?

    Desde já agradeço à malta que me possa ajudar.
    Thanks

  10. Márcio says:

    Nice! 😛

    E os tutoriais para Visual Basic? Acabaram? :O

  11. tiago_crkj says:

    Esqueci-me disto

    php:

  12. tiago_crkj says:

    // connect to your MySQL database here
    include_once “liga_bd.php”;

    if ( isset($_POST[‘sendRequest’]) == “log_user_in”) {
    $username = $_POST[‘username’];
    $password = $_POST[‘pass’];
    $sql = mysql_query(“INSERT INTO utilizador(NOME_USER,PASSWORD_USER) VALUES (‘$username’,’$password’)”);
    }

  13. LF says:

    espectacular era explicarem como fazer 2 select option para distritos e concelhos com jquery :p

  14. Tiago Correia says:

    Ainda estou no secundário, por isso, como devem imaginar, sou um aprendiz no que toca ao php. Gosto imenso da vossa rubrica e leio todas as semanas a fim de aprender mais um pouco e poder utilizar em projectos futuros (e até alguns actuais propostos por professores).

    Continuem com isso, é sempre bom partilhar conhecimentos.

  15. tiago_crkj says:

    malta obrigado mas já consegui resolver a minha questao

  16. Viperz0r says:

    Na minha opinião, acho que no final do artigo deveria remeter para o uso dos Prepared Statements, pela questão da segurança (SQL Injection). Atribuições dentro do while, pode ser um pouco confuso para quem se está a iniciar.

    Keep up

    • Ricardo Elias says:

      O uso de ‘Prepared Statements’ (PS) devia ser obrigatorio em qualquer tutorial sobre SQL, seja para PHP, C#, ou qualquer outra linguagem. O melhor servico que estariamos a dar para um “iniciado”, e’ comeca-lo com o pe’ direito. Infelizmente, o que acontece e’ que a “simplicidade” inicial traduz-se muitas vezes em grandes dores de cabeca quando finalmente aprendem que o codigo que escreveram nao so’ tem problemas de SQL Injections mas falhas devido a erros de sintaxe.

      Nunca percebi porque se considera um tutorial sobre SQL como algo para um iniciado ‘a programacao, ou que “Prepared Statements” envolve um grau de complexidade que alguem nao consiga perceber rapidamente.

      Por isso, peco ao Pedro Peixoto, e outros autores, para usarem apenas “P.S.” ou no minimo msqli_real_escape_string(). Ideal seria rever todos os tutorias que usem SQL incorrectamente e corrigi-los, ou substitui-los com versoes correctas…

      PS: Pedro Peixoto, parabens pelo tutorial! A critica nao e’ dirigida directamente a ti, e nao leves a mal.

      Fiquem Bem!

      • Pedro Peixoto says:

        Boas Ricardo, a programação não deve ser uma prática decorada e mecanizada, embora deva obedecer a um conjunto de regras e estrutura. Mas o programador deve ter capacidade para pensar e decidir onde e em que situações deve aplicar determinado método. Não faz sentido alguém fazer uma divisão, sem antes aprender uma subtracção… e saber em que situação deve ou não usar cada uma delas.

        Obrigado, claro que não levo a mal 😉

    • Pedro Peixoto says:

      Obrigado pela sugestão, mas não vejo, nesta situação, em que é que os Prepared Statements vinham melhorar a segurança do sistema uma vez que todo o script é executado no servidor sem qualquer intervenção do utilizador…
      Este artigo não é sobre MySQL, é sobre elementos . De qualquer forma obrigado pelo comentário. 🙂

      Cumprimentos

  17. Nuno Ribeiro says:

    Boas 🙂

    Imagina que tens uma tabela chamada ‘anos’ em que tens valores entre 1900 e 2011. E tens 2 selects, um onde o utilizador escolhe o ano inicial e no outro o ano final. Como é que ponho no 2º select a aparecerem apenas anos superiores ao escolhido no 1º select?

  18. Ivan says:

    Boa noite, tenho uma duvida, tenho uma combobox que é preenchida com valores de uma BD, mas quero guardar o valor selecionado numa nova BD mas nao sei pk nao funciona com o POST.

    Funcionario:

    <?mysql_connect('localhost','root','root');
    mysql_select_db('crescer_especial');
    $query="select * from funcionarios";
    $resultado=mysql_query($query);
    while($linha=mysql_fetch_array($resultado)){
    echo '’ . $linha[‘nome’].”;
    }
    ?>

    $funcionario=$_POST[‘funcionario’];

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.