Olá amigos,
Estive procurando um fórum para falar sobre isso mas não encontrei nenhum, acho que não é um assunto que todos gostem de discutir.
Estou desenvolvendo o meu sistema em PHP5.3(completamente usando as novas regras e metodologias) e utilizando o Framework Zend.
Meu professor fica questionando milhares de coisas que não sei responder principalmente sobre camada DAO.
Pra mim o que importa é a joça funcionando no final e bem documentada, mas ele insiste nessa mesma tecla.
Eu utilizo assim:
View - html, no máximo alguns foreach para poder imprimir relatórios.
Controle - Manipulo o objeto modelo fazendo os ifs necessários e devolvendo os valores para a view.
Modelo - Dou extend em uma classe mae que por sua vez dá extend na Zend_db, nela eu faço coisas como "ListarTodosUsuariosAtivos()"
È certo ele ficar exigindo padrões de desenvolvimento desktop em desenvolvimento web?
Gostaria de saber o que vocês sabem a respeito disso.
- Fórum WMO
- → Viewing Profile: Tópicos: Grundor
Community Stats
- Group Usuários
- Active Posts 39
- Profile Views 2154
- Member Title Turista
- Age 33 years old
- Birthday August 6, 1990
-
Sexo
Não informado
-
Localidade
Nova Friburgo-RJ
-
Interesses
Aprender mais sobre programação e desenvolvimento de sistemas. Me divertir, compartilhar o que eu sei, fazer amigos e promover a paz mundial^^rsrs
0
Neutral
User Tools
Latest Visitors
Topics I've Started
Php5.3+Zend/ Programação Em Camadas E Outros Frufrus
12/08/2011, 23:35
Erro Com Sistema De Login Com Php Oo.
24/03/2011, 23:06
Olá,
Tem um bom tempo que não programo em PHP
A algumas semanas me interesse pelo framework EXTJS então estou querendo usá-lo em meu TCC.
O maior problema é que os exemplos que encontro estão com PHP estruturado então acabo me enrolando um pouco para adaptar para o OO.
Então, estou agora tentando criar uma pré-tela solicitando login e Senha e checando no banco de dados.
Criei então a Classe AutLogin.php
E o arquivo para include e receber os dados do form de execução da autenticação
Usando um dos exemplos que achei modifiquei o seguinte arquivo para o login:
E o JS que constrói a tela de login:
Então quando insiro os dados de login e senha fica toda vida tentando logar-se mas não loga.. então adicionei o login e senha por $_GET para testar o php:
http://www.l2jbrasil...=usu1&pass=usu1
Exibe-se então o seguinte erro:
A SQL está correta e executa.
Aqui tá a classe de conexão(que funciona para as outras aplicações normalmente.
Desculpem-me esse ar de desespero, mas só quem já passou pelo TCC sabe do que estou falando.. rsrs
Grato desde já.
Forte Abraço
Tem um bom tempo que não programo em PHP
A algumas semanas me interesse pelo framework EXTJS então estou querendo usá-lo em meu TCC.
O maior problema é que os exemplos que encontro estão com PHP estruturado então acabo me enrolando um pouco para adaptar para o OO.
Spoiler
Pesquisando um pouco achei o exemplo do CRUD e Itens do Pedido - PHP do Fábio Jr. Policeno e analisando o código esclareci inúmeras dúvidas e estou usando algumas das classes dele para implementar novas coisas.
Então, estou agora tentando criar uma pré-tela solicitando login e Senha e checando no banco de dados.
Criei então a Classe AutLogin.php
<?php class AutLogin { public $nome, $senha; function getNome() { return $this->nome; } function AutLogin($nome,$senha) { // método construtor. $this->nome = $nome; //A senha será submetida a um hash, que é uma criptografia sem volta. //$this->senha = md5($senha); $this->senha = $senha; } function autentica() { $con = new Conexao(); // Cria um novo objeto de conexão com o BD. $nome = $this->nome; $senha = $this->senha; $query = "SELECT * FROM `usuarios` WHERE `usu_login` = '".$nome."' AND `usu_senha` = '".$senha."'"; echo $query; $resultados = $con->execute($query); if (mysql_num_rows($resultados)>0) { $this->geraSessao($this); $con->fecha(); return true; } else{ return false; echo "Falha ao Conectar"; } } function geraSessao($usuario) { session_start(); $_SESSION['usuario'] = $usuario; } function destruirSessao(){ return session_destroy(); } } ?>
E o arquivo para include e receber os dados do form de execução da autenticação
<?php include ("../class/AutLogin.php"); include ("../class/Conexao.php"); $username = $_POST["loginUsername"]; $password = $_POST["loginPassword"]; $usuario = new AutLogin($username,$password); if ($usuario->autentica()) { header("location:principal.php"); } else { header("location:login.php"); } ?>
Usando um dos exemplos que achei modifiquei o seguinte arquivo para o login:
<html> <head> <title>Autenticação</title> <link rel="stylesheet" type="text/css" href="lib/ext3.2.1/resources/css/ext-all.css" /> <link rel="stylesheet" type="text/css" href="lib/ext3.2.1/examples/shared/icons/silk.css"/> <link rel="stylesheet" type="text/css" href="lib/ext3.2.1/examples/shared/examples.css"/> <link rel="stylesheet" type="text/css" href="lib/ext3.2.1/examples/ux/flashmessage/Ext.ux.MessageBox.flash.css"> <!-- LIBS --> <script type="text/javascript" src="lib/ext3.2.1/adapter/ext/ext-base.js"></script> <script type="text/javascript" src="lib/ext3.2.1/ext-all.js"></script> <script type="text/javascript" src="js/JanelaLogin.js"></script> <!-- ENDLIBS --> </head> <body> <div id="xxx"></div> </body> </html>(aqui o arquivo no ar http://www.l2jbrasil...teste/login.php)
E o JS que constrói a tela de login:
Ext.onReady(function() { Ext.QuickTips.init(); var login = new Ext.FormPanel( { labelWidth:80, url:'include/LoginAction.php', frame:true, title : 'Autenticação', defaultType:'textfield', monitorValid:true, iconCls : 'icone-cadeado', items:[{ fieldLabel:'Usuário', name:'loginUsername', allowBlank:false, blankText: 'Preencha este campo' },{ fieldLabel:'Senha', name:'loginPassword', inputType:'password', allowBlank:false }],buttons:[{ text:'Login', formBind: true, iconCls : 'icone-porta-entrando', // Aciona quando clica no botao handler:function(){ login.getForm().submit({ method:'POST', waitTitle:'Conectando', waitMsg:'Enviando dados...', success:function(){ Ext.Msg.alert('Status', 'Logado com Sucesso!', function(btn, text){ if (btn == 'ok'){ var redirect = 'principal.php'; window.location = redirect; } }); }, // Failure function, see comment above re: success and failure. // You can see here, if login fails, it throws a messagebox // at the user telling him / her as much. failure:function(form, action){ if(action.failureType == 'server'){ obj = Ext.util.JSON.decode(action.response.responseText); Ext.Msg.alert('Login Failed!', obj.errors.reason); }else{ Ext.Msg.alert('Atenção!', 'Servidor de autenticação está inacessível : ' + action.response.responseText); } login.getForm().reset(); } }); } }] }); // This just creates a window to wrap the login form. // The login object is passed to the items collection. var win = new Ext.Window({ layout:'fit', width:300, height:180, closable: true, resizable: false, plain: true, border: false, items: [login] }); win.show(); });
Então quando insiro os dados de login e senha fica toda vida tentando logar-se mas não loga.. então adicionei o login e senha por $_GET para testar o php:
http://www.l2jbrasil...=usu1&pass=usu1
Exibe-se então o seguinte erro:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/l2jbrasil/www/leonan/projfinal/teste/class/AutLogin.php on line 34
Warning: Cannot modify header information - headers already sent by (output started at /home/l2jbrasil/www/leonan/projfinal/teste/class/AutLogin.php:32) in /home/l2jbrasil/www/leonan/projfinal/teste/include/LoginAction.php on line 17
A SQL está correta e executa.
SELECT * FROM `usuarios` WHERE `usu_login` = 'usu1' AND `usu_senha` = 'usu1'
Aqui tá a classe de conexão(que funciona para as outras aplicações normalmente.
<?php /** * Classe para tabalhar com banco de dados */ class Conexao { private $con; # objeto de conexão public function __construct() { # efetua conexão com servidor $this->con = mysql_connect('localhost', 'root', ''); if (!$this->con) { die('N�o foi poss�vel conectar-se com o servidor: ' . mysql_error()); } # seleciona banco de dados if (!mysql_select_db('TST_PEDIDOS', $this->con)) { die ('N�o foi poss�vel selecionar o banco de dados: ' . mysql_error()); } } /** * Fecha conexão * @return void */ public function fecha() { # fecha conexão mysql_close($this->con); } /** * Executa uma query no banco * @param $sql (query a ser executada) * @return true|false|array */ public function execute($sql) { $sql = trim($sql); $retorno = false; # executa a query $result = mysql_query($sql); //print_r($sql); # no caso de select, os dados são colocados em um array if (is_bool($result)) $retorno = $result; else { while ($row = mysql_fetch_array($result)) { # codifica resultado para utf8 array_walk($row, 'toUtf8'); $retorno[] = $row; } } return $retorno; } # execute } # fim da classe ?>
Desculpem-me esse ar de desespero, mas só quem já passou pelo TCC sabe do que estou falando.. rsrs
Grato desde já.
Forte Abraço
- Fórum WMO
- → Viewing Profile: Tópicos: Grundor
- Privacy Policy
- Regras ·