Pesquisar na Comunidade
Mostrando resultados para as tags ''phpoo''.
Encontrado 2 registros
-
Olá pessoal, estou fazendo um curso de PHP OO e estou na aula que desenvolve controllers em MVC e estou em dúvida🤔 se estou entendendo da maneira correta. Alguém poderia avaliar o meu comentário no código e me dizer se estou no caminho certo? Grato a todos! <?php $callController = new App\Controllers\Controller; // Está Instanciando a classe Controller? $calledController = $callController->controller(); // Acessando o método controller() dentro da classe controller? $controller = new $calledController(); // Por quê esta instanciando a variavel '$calledController()' com abertura e fechamento de parenteses se isso não é uma função? $callMethod = new App\Controllers\Method; // Está Instanciando a classe Method? $method = $callMethod->method($controller); // Esse objeto '$controller' passado por parãmetros é a variável instanciada na linha anterior ou poderia ser qualquer outro nome? $controller->$method();
-
Fiz esse código, mais não protegi contra sql injection, a pergunta é: devo proteger a gravação de dados?Ou será que posso proteger apenas login e consultas no banco de dados? essa classe grava dados de qualquer formulário, mais não consegui fazer ela protegendo o banco. tentei usar o (prepare();) mais da erros se alguém souber como fazer me ajuda aí favor. { <?php class trataDados { var $db; var $maxid; var $fetch; var $comparador; function CPDO(){ $this->db=new PDO('mysql:host=localhost;dbname=butterfly','root',''); } // esta funcão deve gravar dados de qualque formulario. //os dados pedidos dentro da função são: (nome da tabela, variavel que traz dados do formulario get ou post, parametro de comparação ex:email). //nesse caso não tem proteção contra mysql injection . function gravarDados($tabela,$dados,$param){ //primeiro fazemos a busca do campo qual queremos validare ex: se for email traz todos os email cadastrados; $buscaparam=$this->db->query("select $param from $tabela "); $parametro=$buscaparam->fetchALL(PDO::FETCH_OBJ); foreach($parametro as $paramfinal) { $this->comparador= $paramfinal->$param; }// fim foreach parametro //echo $this->comparador; //agora fazemos a validação se compador for igual ao dados do formulario a inseção e parada e traz a mensagem para que o usuario troque o nome do dado. if($this->comparador == $_POST[$param]){ echo'esse email já esta cadastrado'; } // se não da-se a continuação do cadastramento else{ //como ods dados do formulario vem como array na variavel get ou post percorremos com laço foreach. foreach( $dados as $campo => $valor){ $this->db->exec("INSERT INTO $tabela ($campo)values('$valor')");//insere o primeiro campo do formulario para criar o id do usuario; $fetch = $this->db->query("SELECT MAX(id) from $tabela"); //faz uma busca do ultimo id que foi inserido na tabela $id=$fetch->fetch(PDO::FETCH_OBJ); foreach($id as $maxid){ $this->maxid=$maxid;// recebe o ultimo id inserido na tabela; } break; // para o laço para que não seja criado um id para cada dado da variavel que traz os dados do formulario } foreach($dados as $campo => $valor){ //agora o update cuida de inserir todos os dados do formulario e fim todos os dados estao gravados; $this->db->exec("update $tabela set $campo='$valor' where id='$this->maxid'"); } }//fim do else }//fim da função gravaDados }//fim da classe $tratadados=new trataDados(); $tratadados->CPDO(); $tratadados->gravarDados('clientes',$_POST, 'email'); ?> <form action="tratadados.php" method="post"> <input type="text" name="nome"> <input type="text" name="snome"> <input type="text" name="email"> <input type="submit" value="enviar"> </form>