Autor Tópico: ajuda com o php  (Lida 3731 vezes)

SparkT

  • Membro Pro
  • Uber Geek
  • ****
  • Mensagens: 350
  • Karma: 0
    • Ver Perfil
ajuda com o php
« Responder #20 em: Setembro 02, 2008, 01:52:58 »
EasyPHP é um programa que te instala Apache+PHP+SQL num instante.

Cuidado ao utilizar este tipo de programas. Se não tomares medidas de segurança qualquer pessoa com o teu IP pode aceder às portas onde os serviços estejam a correr.
Por isso a menos que saibas o que estas a fazer, quando terminares os teus testes fecha o programa e certifica-te que não fica nenhum serviço do programa a correr.


ruiiu

  • Novato
  • *
  • Mensagens: 18
  • Karma: 0
    • Ver Perfil
ajuda com o php
« Responder #21 em: Setembro 02, 2008, 01:59:09 »
podes mandar o link para eu sacar a coisa entao...

SparkT

  • Membro Pro
  • Uber Geek
  • ****
  • Mensagens: 350
  • Karma: 0
    • Ver Perfil
ajuda com o php
« Responder #22 em: Setembro 02, 2008, 02:02:07 »
Google...

http://www.easyphp.org/



Cuidado mesmo...

ruiiu

  • Novato
  • *
  • Mensagens: 18
  • Karma: 0
    • Ver Perfil
ajuda com o php
« Responder #23 em: Setembro 02, 2008, 02:20:24 »
tass
obrigado

ilovehentai

  • Membro Pro
  • Junior
  • ****
  • Mensagens: 83
  • Karma: 0
    • Ver Perfil
    • http://
ajuda com o php
« Responder #24 em: Setembro 23, 2008, 08:54:06 »
Código: [Seleccione]

?php



    /*

    Olá a todos, bem vou tentar ajudar aqui a malta, já passou algum tempo desde do pedido por isso penso que seja uma boa altura. 1º Não entendo porque que as vezes alguém se propõe ajudar outro quando não tem os conhecimentos necessários, penso que aqui fica uma lição de que para se fazer algo é necessário se saber o que se faz, ou seja um pouco de estudo e investigação nunca fez mal a alguém. Depois peço a malta para entender que o Sena é um rio em Paris, e não calão juvenil, esse é a "CENA", :) Bem agora vamos ao que interessa, para resolver este problema é necessário possuirmos uma tabela numa base de dados MySQL para armazenar os registos. Por exemplo iremos ter uma tabela utilizadores com os seguintes campos

    

    empresa -> varchar(250) Not Null

    morada -> text Not Null

    email -> varchar(250) Not Null

    localidade -> varchar(100) Not Null

    codPostal4 -> Int Not Null

    codPostal3 -> Int Not Null

    telefone -> Int Not Null

    fax -> Int Not Null

    contrib  -> Int Not Null



    Para dizer a verdade não pensei muito acerca dos campos, por isso francamente poderão ser do tipo que pretenderem, isto não importa para nada de momento.



    Agora vamos pensar como organizar o nosso código;



    1º conectamos a base de dados, procuramos saber se ela existe.

    2º verificamos se o formulário foi submetido

    3º validamos os campos submetidos

    3º - 1º Se os campos obrigatórios foram preenchidos

    3º - 2º Se os campos foram correctamente preenchidos

    4º Inserimos os dados na BD

    4º-1º se sucesso avançamos para o 5º passo senão retornamos um erro e vamos para o 2º passo

    5º fechamos a ligação a BD



    e prontos acho que é mais ou menos isso, então vamos lá.

    

    Primeiro conectamos a Base de dados, para isso usamos o Objecto Mysqli do PHP, este veio subsituir o conjunto de funções MySql do PHP, fornecendo uma sintaxe Orientada a objecto e melhorando um conjunto de funções, permite também usar transações e outros goodies do mysql 5 .

    

    Instanciamos o Objecto mysqli na variavel conexao, não me vou debruçar a explicar o que são objectos, esta parte ficar´para a pesquisa pessoal de cada um de nós (sim porque também eu tou sempre a aprender, faz me sempre bem).

    Aqui o construtor do objecto mysqli recebe 4 atributos,

    

    1º host -> servidor

    2º nome utilizador

    3º palavra-chave

    4º nome da base de dados por exemplo "registos"

    */

    $conexao = new mysqli("localhost", "user", "password", "registos");



    /*

    verificamos a conexão através do método connect_error, se este retornar true então o bloco é executado, será imprimido no ecrã a mensagem "Connexão falhada: e o erro", o script é de seguida terminado imediatamente com a função exit()

    */

    if ($mysqli->connect_error) {

        printf("Connexão falhada: %sn", mysqli_connect_error());

        exit();

    }

    

    /*

    no formulário sugiro usar um campo do tipo hidden, esse campo podemos lhe dar um nome e um id, por exemplo "go" e um value por exemplo "ok" é também necessário declarar na tag do formulário o atributo method="post", ou sejá os valores submetidos no formulário serão enviados por superglobais POST, o PHP irá reconhecer estes valores num array especial, o array terá por identificador de cada valor o nome do campo do formulário, ou seja, um array é uma lista de valores neste caso, teremos uma lista que possui os nomes dos campos do formulário e associado a cada nome terá o valor que lhe foi inserido pelo utilizador quando esse preencheu o formulário, assim teremos os seguinte:

    

    $_POST -> nossa superGlobal do tipo POST

    

    $_POST[\'empresa\'], $_POST[\'morada\'], $_POST[\'localidade\'] etc... esse são 3 dos exemplos que irão popular a nossa variável POST se imprimirmos por exemplo o $_POST[\'empresa\'] iremos então ver o valor que o utilizador inseriu no formulário, assim esse é o valor que queremos inserir na BD

    

    Para verificar se o formulário foi inserido iremos verificar se o $_POST[\'go\'] existe, lembram-se que este se refere ao campo hidden do formulário e se $_POST[\'go\'] é igual a "ok" que era o seu valor fixo.

    

    a função isset() verifica se determinada variável existe, os símbolos && significam AND ou seja E, por fim comparamos se o POST go é igual a string "ok" atraves do operador == (operador de igualdade)

    */

    if((isset($_POST[\'go\'])) && ($_POST[\'go\'] == "ok")){

        

        /*

        Agora temos que validar cada campo e determinar um conjunto de regras, por exemplo, todos os campos são de preenchimento obrigatório. Podemos dizer que o campo email tem que ter a seguinte estrutura abc@abx.pt ou seja um conjunto de caracteres seguidos por um @ mais um conjunto de caracteres seguidos por um ponto e a extensão do pais, para tal podemos usar expressões regulares, essas formam um conjunto de regras, se as mesmas não são seguidas irá ocorrer um erro. Podemos comparar uma string com uma expressão regular através da função eregi() do PHP

        

        primeiro confirmamos que nenhum campo esteja vazio, caso seja composto por um espaço removemos os espaços vazios. criamos um array (lista) chamado camposVazios que irá ser populado caso um campo esteja vazio, depois iniciamos um ciclo foreach, este ciclo percorre todos os indices de uma lista (array) neste caso ele irá percorrer o $_POST a variavel $key irá representar o índice do array e a variável var os valores do array a cada ciclo. depois verificamos através da função empty se a variável está vazia, se for verdade o índice dessa variável é inserido na lista que criamos. A função trim remove os espaços brancos, por exemplo caso alguém premiu e preencheu um campo com apenas um space.

        */

        $camposVazios = array();

        

        foreach($_POST as $key => $var){

            

            $var = trim($var);

            if(empty($var)){

                

                $camposVazios = array_push($key);

                

            }

            

        }

        

        $camposErrados = array();

        /*

        verificamos agora o email com a função eregi e a nossa expressão regular, podem saber mais acerca de expressões regulares na internet através do google Aqui se a função eregi retornar falso significa que o valor introduzido pelo utilizador não respeita as regras de um email válido, assim armazenamos noutra lista um erro que poderemos imprimir depois no ecrã a avisar o utilizador

        */

        $expressaoEmail = \'^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+.[a-zA-Z.]{2,6}$\';

        if(!eregi($expressaoEmail, $_POST[\'email\'])){

            

            $camposErrados[\'email\'] = "O e-mail parece inválido!";

            

        }

        

        /*Agora podemos fazer o mesmo para os restantes campos, o telefone, fax, contrib e ambos codigos postais, tem em comum que

        apenas aceitam valores numéricos, então iremos aproveitar para criar uma função que faça as validações automaticamente.*/

        

        function validarCamposNumericos($campo, $limite){

            

            $resultado = true;

            

            $expressaoRegular = \'^[0-9]{1,\'.$limite.\'}$\';

            if(!eregi($expressaoRegular, $campo)){

                

                $resultado = false;

                

            }

            

            return $resultado;

            

        }

        

        /*esta função recebe dois atributos, o campo e o limite de numeros, processa ambos atributos, se o valor é correcto retorna

        verdadeiro, se o valor é incorrecto retorna falso. Então se for falso criamos o nosso erro.*/

        

        validarCamposNumericos($_POST[\'telefone\'], 9) or $camposErrados[\'telefone\'] = "O telefone parece incorrecto";

        validarCamposNumericos($_POST[\'fax\'], 9) or $camposErrados[\'fax\'] = "O fax parece incorrecto";

        validarCamposNumericos($_POST[\'codPostal4\'], 9) or $camposErrados[\'codPostal4\'] = "O código postal parece incorrecto";

        validarCamposNumericos($_POST[\'codPostal3\'], 9) or $camposErrados[\'codPostal3\'] = "O código postal parece incorrecto";

        validarCamposNumericos($_POST[\'contrib\'], 9) or $camposErrados[\'contrib\'] = "O contribuinte parece incorrecto";

        

        /*Agora verificamos se tudo está bem então iremos inserir na bd os valores

        se as nossas lista de erros estão vazias é porque tudo esteve ok*/

        

        if(empty($camposVazios) && empty($camposErrados)){

            

            //inicializamos o que será a nossa declaração

            $stmt = $conexao->stmt_init();

            //aqui com o metodo prepare preparamos a declaração da query, os valores sao substituidos por ?

            if($stmt->prepare("INSER INTO

                                        utilizadores(empresa, morada, email, localidade, codigoPostal4, codigoPostal3, telefone,

                                                    fax, contrib) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?)")){

                                                        

                

                //o metodo bin_param permite ligar os nossos valores aos pontos de interrogação, aqui temos no primeiro atributo

                //declarar o tipo de cada valore, neste caso o s para srings e o d para inteiros

                $stmt->bind_param("ssssddddd",

                                            $_POST[\'empresa\'],

                                            $_POST[\'morada\'],

                                            $_POST[\'email\'],

                                            $_POST[\'localidade\'],

                                            $_POST[\'codPostal4\'],

                                            $_POST[\'codPostal3\'],

                                            $_POST[\'telefone\'],

                                            $_POST[\'fax\'],

                                            $_POST[\'contrib\']);

                                            

                //Por fim executamos a nossa query

                if(!$stmt->execute()){

                    

                    printf("Não foi possível executar a query, ocorreu um erro");

                    exit();

                    

                }

                

                //terminamos a nossa declaração

                $stmt->close();

            

            }

            

            

        }

        

    }

    

    //Por fim terminamos a nossa ligação a base de dados.

    $conexao->close();

    

    /*

    Para concluir, este exemplo é muito bruto, muito aqui há por fazer, e tudo isto poderia ser feito de uma outra forma mais inteligente, poderíamosmelhorar por exemplo a função de validar campos por expressões regulares de forma a executar também a validação do e-mail mas enfim aqui era apenas para dar a conhecer alguns conceitos, repare que caso ocorreram erros os mesmos poderão ser imprimidos no ecrã no meio do nosso formulário.

    */



?>