Archive for the ‘PHP’ Category

Como utilizar array bidimensional em PHP

Friday, June 22nd, 2007

Array’s podemos dizer que são tabelas temporárias que armazenam qualquer tipo de informação, como também podemos dizer que são árvores de informação dependendo do formato que for criado.

Não cheguei a fazer uma pesquisa, mas de todas empresas que tive acesso, constatei que são dois padrões mais utilizados nos array’s, um deles chamo de árvore e o outro ainda não dei um nome =D


Árvore:

<?php
$vetor[1]['nome'] = “Andrey Pedro Lefkum”;
$vetor[1]['sitePessoal'] = “http://www.andrey.com.br”;
$vetor[1]['diaDisponibilidade'][1] = “terça-feira”;
$vetor[1]['diaDisponibilidade'][2] = “quinta-feira”;

$vetor[2]['nome'] = “Eliton José da Silva”;
$vetor[2]['sitePessoal'] = “http://www.eliton.eti.br”;
$vetor[2]['diaDisponibilidade'][1] = “segunda-feira”;
$vetor[2]['diaDisponibilidade'][2] = “quinta-feira”;

$vetor[3]['nome'] = “Filipe M…”;
$vetor[3]['sitePessoal'] = “http://www.tecnoabil.com.br”;
$vetor[3]['diaDisponibilidade'][1] = “quarta-feira”;
$vetor[3]['diaDisponibilidade'][2] = “quinta-feira”;

/*
Utilizaremos o print_r para ver qual será o resultado da impressão desse array…
*/
print_r($vetor);
?>

O Resultado

Array
(
    [1] => Array
        (
            [nome] => Andrey Pedro Lefkum
            [sitePessoal] => http://www.andrey.com.br
            [diaDisponibilidade] => Array
                (
                    [1] => terça-feira
                    [2] => sexta-feira
                )
        )
    [2] => Array
        (
            [nome] => Eliton José da Silva
            [sitePessoal] => http://www.eliton.eti.br
            [diaDisponibilidade] => Array
                (
                    [1] => segunda-feira
                    [2] => sexta-feira
                )
        )
    [3] => Array
        (
            [nome] => Filipe M…
            [sitePessoal] => http://www.tecnoabil.com.br
            [diaDisponibilidade] => Array
                (
                    [1] => quarta-feira
                    [2] => sábado
                )
        )
)

Perceba que começa com um código e vai abrindo o array como se fosse uma árvore.

Agora vamos ver o outro tipo de array… aquele que ainda não dei um nome a ele:



Array sem Nome =D

<?php
$vetor['nome'][1] = “Andrey Pedro Lefkum”;
$vetor['sitePessoal'][1] = “http://www.andrey.com.br”;
$vetor['diaDisponibilidade'][1][1] = “ter軋-feira”;
$vetor['diaDisponibilidade'][1][2] = “quinta-feira”;

$vetor['nome'][2] = “Eliton Jos・da Silva”;
$vetor['sitePessoal'][2] = “http://www.eliton.eti.br”;
$vetor['diaDisponibilidade'][2][1] = “segunda-feira”;
$vetor['diaDisponibilidade'][2][2] = “quinta-feira”;

$vetor['nome'][3] = “Filipe M…”;
$vetor['sitePessoal'][3] = “http://www.tecnoabil.com.br”;
$vetor['diaDisponibilidade'][3][1] = “quarta-feira”;
$vetor['diaDisponibilidade'][3][2] = “quinta-feira”;

print_r($vetor);
?>

O Resultado

Array
(
    [nome] => Array
        (
            [1] => Andrey Pedro Lefkum
            [2] => Eliton José da Silva
            [3] => Filipe M…
        )

    [sitePessoal] => Array
        (
            [1] => http://www.andrey.com.br
            [2] => http://www.eliton.eti.br
            [3] => http://www.tecnoabil.com.br
        )

    [diaDisponibilidade] => Array
        (
            [1] => Array
                (
                    [1] => terça-feira
                    [2] => quinta-feira
                    [3] => sexta-feira
                )

            [2] => Array
                (
                    [1] => segunda-feira
                    [2] => quinta-feira
                    [3] => sexta-feira
                )

            [3] => Array
                (
                    [1] => quarta-feira
                    [2] => quinta-feira
                    [3] => sábado
                )

        )

)

Perceba que o segundo tipo de array cria um grupo para cada tipo de item: Nome, Site Pessoal, a Disponibilidade de todos fica armazenada em um grande grupo, porém as duas estão organizadas e darão o mesmo resultado.

Mas qual devo usar?

O Array “árvore” é ótimo para visualização, pois, quando utilizamos a função nativa do PHP “print_r”, dará uma visão mais clara do que temos no array, ou seja, tudo que é pertinente aquele usuário está agrupado, já no outro formato de array o agrupamento é pelo tipo de informação.

Porém um dos grandes problemas do array em “árvore” é ordenação… Caso queira ordenar esse vetor, será um parto… A função que você provavelmente utilizará será “array_mulltisort()”:

http://br2.php.net/manual/pt_BR/function.array-multisort.php

Porque a ordenação é diferente nos dois tipos de uso de array?

Como no segundo array as informações estão agrupadas por tipo… Esquece… vamos fazer uma analogia ao problema:

Temos 30 fitas, 50 DVDs, 15 revistas, 45 Jornais…

Ta, agora ordene todos as publicações por titulo…
Vai ser difícil, porém não impossível…

Agora, seu chefe diz:
- Olhe, temos 4 colunas de publicações, uma com fitas, outra com DVD’s, revistas e por último jornais, agora em cada coluna quero que ordene por título, será com certeza bem mais fácil!

E é assim que acontece quando tentará ordenar os dois tipos de array, então cabe a você nobre programador anti social =D “Por que falam isso dos programadores? =D” ter o bom senso de escolher o melhor para sua aplicação!

É isso ae!
Espero que esse artigo sirva para alguma coisa
Até mais!

PHP Web Services - Encontrando Erros

Tuesday, May 8th, 2007

Apenas para definição e apresentação:

Web service é uma solução utilizada na integração de sistemas e na comunicação entre aplicações diferentes. Com esta tecnologia é possível que novas aplicações possam interagir com aquelas que já existem e que sistemas desenvolvidos em plataformas diferentes sejam compatíveis. Os Web services são componentes que permitem � s aplicações enviar e receber dados em formato XML. Cada aplicação pode ter a sua própria “linguagem”, que é traduzida para uma linguagem universal, o formato XML.

Qual o problemas dos problemas com erros?

O grande problema quando ocorre um erro, como por exemplo a falta de um “;” no final da linha de código é encontrar o que ocorreu, já que na maioria dos exemplos que encontrei na internet ficam com a página em branco quando ocorre uma situação inesperada como essa. Exemplo:

Serviço

<?php
require_once(”nusoap.php”);

function retornaUsuarios($parametro) {
$nome = “Andrey Pedro Lefkum”;
return $nome;
}

$objetoSoapServer = new soap_server();
$objetoSoapServer->configureWSDL(’SMSSoap’,’urn:SMSSoap’);

/* Registra o serviço para que possa ser encontrado pelo outro sistema que irá acessa-lo */
$objetoSoapServer->register(’retornaUsuarios’);

$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : ”;

$objetoSoapServer->service($HTTP_RAW_POST_DATA);
?>

Acesso ao Serviço

<?php
require_once(”nusoap.php”);

$parametros = array(’usuarioCodigo’ => 5);

$clienteSoap = new soapclient(”http://localhost/webservice/soap.php”);
$resultado = $clienteSoap->call(’retornaUsuarios’,$parametros);

if($clienteSoap->fault) {
echo “Erro ao acessar o WEBSERVICE<br />Erro: “.$clienteSoap->faultstring;
}
else {
echo “Nome Usuário: “.$resultado;
}
?>

Então quando acesso o “Acesso ao serviço” caso falte um “;” no serviço a página fica toda em branco!

O que fazer?

Execute o diretamente o script do serviço “retornaUsuarios” e chame na mesma página a função como o exemplo abaixo:

<?php
require_once(”nusoap.php”);

function retornaUsuarios($parametro) {
$nome = “Andrey Pedro Lefkum”;
return $nome;
}

$objetoSoapServer = new soap_server();
$objetoSoapServer->configureWSDL(’SMSSoap’,’urn:SMSSoap’);

/* Registra o serviço para que possa ser encontrado pelo outro sistema que irá acessa-lo */
$objetoSoapServer->register(’retornaUsuarios’);

$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : ”;

$objetoSoapServer->service($HTTP_RAW_POST_DATA);

$objeto = retornaUsuarios(1);
echo $objeto->faultstring;
echo $objeto;

?>

Observe o código que está em negrito! Quando executar o script do serviço ele vai auto chama-lo através da primeira linha que está em negrito acima e retornará:

Em caso de erro - Objeto;
Em caso de execução OK - retorna o valor, que no caso acima é “Andrey Pedro Lefkum”.

Caso retorne o valor é simples, basta imprimi-lo na tela, mas quando retornar o objeto?

Observe a segunda linha do código em negrito acima: echo $objeto->faultstring;
Imprime o valor faultstring que está atribuido ao objeto.

Somente quem desenvolver um Web Services, vai saber do que disse acima! =D

Pessoal, caso tenham qualquer dúvida, pode deixar um post que retornarei com certeza, e com toda satisfação e ajudar! ;)

Andrey.

PHP - Cache do navegador

Monday, January 22nd, 2007

PHPComo muitas pessoas utilizam o armazenamento “cache” do navegador ligado, quando se há alterações na página ela não consegue ver, pois o navegador pega o a página temporária que armazenou da primeira vez que o usuário acessou o site, para esse problema, basta usar o código abaixo no topo de seu código, lembrando que ele deve ficar em cima de qualquer echo, print, print_r … para funcionar.

/* Não deixa o browser armazenar a página no cache. */

header(”Expires: Wed, 21 Dec 1983 09:00:00 GMT”);

header(”Last-Modified: ” . gmdate(”D, d M Y H:i:s “) . ” GMT”);

header(”Cache-Control: no-store, no-cache, must-revalidate”);

header(”Cache-Control: post-check=0, pre-check=0″, false);

header(”Pragma: no-cache”);

Apenas para registrar e ajudar o pessoal!

Andrey.

Validar usuário e senha com “CLASSE”

Thursday, January 18th, 2007

Vendo que muitos tem dificuldades em montar esse tipo de validação, que é encapsulada, resolvi postar aqui e mostrar um forma simples de validar um formulário com uma Classe PHP.

Bom… não cheguei ao ponto de montar o formulário, mas lá teríamos dois campos que se chamariam usuarioLogin e usuarioSenha e um botão que teria o nome de inserir.

Após o usuário submeter a página ficaria por conta desse script abaixo fazer a validação:

<?php
if($_POST['inserir']) {
include “_include/conecta.php”;
include “_classe/classeValidaSessao.php”;

$objetoValida = new ValidaSessao();
$objetoValida->setUsuarioLogin($_POST['usuarioLogin']);
$objetoValida->setUsuarioSenha($_POST['usuarioSenha']);
$dadosUsuario = $objetoValida->valida();

if($dadosUsuario == false) {
header(”location: sistemaLogar.php?erro=true”);
}
else {
echo
“Validou… Aqui cria a sessão do usuário”;
}
}
?>

Como é fácil né? Basta setar os dados e mandar validar… o resto a classe faz, lembrando que você não vai mais fazer essa validação nunca, somente se quiser aperfeiçoa-la!

Agora abaixo temos a classe:

- Variáveis: $usuarioLogin…
- Get and Set: getUsuarioLogin, setUsuarioLogin…
- Metodos: valida…

No metodo valida, temos um SELECT que faz a consulta no banco através dos dados que foram setados no script acima, lembrando que quando setamos os dados a classe já deixa códigos maliciosos inutilizáveis com addslashes e também já aplica o md5 em cima da senha para criptografar (hash 32).

<?php

class ValidaSessao {

var $usuarioLogin;
var $usuarioSenha;
var $codigoSessao;

function getUsuarioLogin() {
return $this->usuarioLogin;
}
function setUsuarioLogin($usuarioLogin) {
$this->usuarioLogin = addslashes($usuarioLogin);
}

function getUsuarioSenha() {
return $this->usuarioSenha;
}
function setUsuarioSenha($usuarioSenha) {
$this->usuarioSenha = md5($usuarioSenha);
}

function valida() {

$sql_usu = “SELECT usuarioCodigo
,usuarioNome
,usuarioLogin
,usuarioFilialCodigo
,usuarioEmail
FROM usuario
WHERE usuarioLogin = ‘”.$this->getUsuarioLogin().”‘
AND usuarioSenha = ‘”.$this->getUsuarioSenha().”‘
AND usuarioStatus = ‘1′
“;

$res_usu = mysql_query($sql_usu) or die(mysql_error());

if(mysql_num_rows($res_usu) == 1) {
$lin_usu = mysql_fetch_array($res_usu);
$usuario['usuarioCodigo'] = $lin_usu['usuarioCodigo'];
$usuario['usuarioNome'] = $lin_usu['usuarioNome'];
$usuario['usuarioLogin'] = $lin_usu['usuarioLogin'];
$usuario['usuarioEmail'] = $lin_usu['usuarioEmail'];
$usuario['usuarioFilialCodigo'] = $lin_usu['usuarioFilialCodigo'];

return $usuario;
}
else {
return false;
}
}
}
?>

Espero que gostem, porque deu maior trabalho pra colorir tudo isso :D
Se você leu, espero que deixe um POST para agradecer ao menos :D hehe
Valeu!

Aprendendo PHP

Thursday, January 4th, 2007

Visando aumentar a comunidade PHP no mundo vou ajudar aqui em uma série de matérias como desenvolver com PHP.

Primeiramente é necessário ter um local para testes, para isso recomendo que utilizem o Vertrigo ou PHP Triad (http://baixaki.ig.com.br/download/PHP-Triad.htm).

Um editor pode ser o PHP Editor (http://baixaki.ig.com.br/download/PHP-Editor.htm)

Obs.: Não vou chegar ao nível de explicar como instalar esses softwares, por isso recomendo que procure no Google!

Após estar funcionando corretamente o seu server para testes e instalado o editor para PHP, vamos fazer alguns exemplos.

Nessa primeira matéria, vamos fazer exemplos com functions para string:

Abra seu editor e coloque o seguinte:

echo “O echo serve para imprimir na tela o que está escrito aqui”;
?>

Desse modo se você rodar o código acima, ele teria o seguinte resultado:

O echo serve para imprimir na tela o que está escrito aqui

Agora, vamos usar variáveis para armazenar textos e depois concatena-las e mostrar na tela:

Obs: O que são as Variáveis?

As variáveis são objectos que servem para guardar informação. Elas permitem-nos dar nomes a cada um dos fragmentos de informação com que temos de lidar. Se esses nomes forem bem escolhidos fica fácil saber onde é que se deve guardar um determinado pedaço de informação e onde é que se pode ir buscar a informação que se guardou antes.Exemplo:

$nome = “Andrey Pedro”;
$sobrenome = ” Lefkum”;

echo $nome.$sobrenome;
?>

Obs.: Nesse exemplo acima utilizamos a concatenação que é representada no PHP com “.” (ponto). Então acima primeiramente dizemos que $nome que é uma variável, vai guardar a seguinte informação: “Andrey Pedro”, e a variável $sobrenome vai guardar ” Lefkum”.

Desse modo ao rodarmos o código temos como resultado:

Andrey Pedro Lefkum

——-

Agora que comecei a escrever, vi que iniciei avançado demais…

então vou parando por aqui, e no próximo explicarei melhor o que são variáveis e outros!

Valeu Pessoal, se quiserem dar idéias, ficarei grato!

Att.,

Andrey

PHP - Validação de senha simples e segura!

Friday, December 22nd, 2006

Hoje vou mostrar como montar uma área de login e senha e como validar isso no php de forma segura.

Primeiramente vamos começar com o formulário:
Esse primeiro código é somente com HTML e estilos CSS.

<html>
<head>
<title>Área Restrita - Efetue seu login!</title>
<style>
body {
font:12px Verdana;
}

#caixaLogin {
text-align:center;
border:1px solid blue;
border-top:20px solid blue;
}

h1 {
font: 15px Verdana;
font-weight:bold;
}

#obs {
font:10px Verdana;
text-align:left;
margin:20px;
}

span {
border: 1px solid green;
background: #00FF00;
}
</style>
</head>
<body>
<form action=”" method=”post” name=”form”>
<div id=”caixaLogin”>
<h1>Realize seu Login para acessar nossa 疵ea restrita:</h1>
Login:<br />
<input type=”text” name=”login” /><br />
Senha:<br />
<input type=”text” name=”senha” /><br /><br />
<input type=”checkbox” value=”1″ name=”comSeguranca” /> Efetuar login com seguran軋?<br /><br />
<input type=”submit” name=”logar” value=”Logar” /><br /><br />
</div>
<div id=”obs”>
<strong>Obs.:</strong>
<br /><br />
O que ・efetuar login com seguran軋 nessa p疊ina?
<br /><br />
ノ remover todo cigo com intuito de “burlar” o sistema.
</div>
</form>
</body>
</html>

Obs.: Esse código estou reutilizando do POST de SQL Injection que fiz pouco tempo atrás!

Antes de mexer no PHP, vamos executar este SQL abaixo, para poder testar o form depois:
Para quem ainda é iniciante, abra o seu PHPMyAdmin crie um banco de dados chamado de test, acesse o banco e execute o SQL.
IMPORTANTE: Verifique se o Login e Senha de seu MySQL são “root” e “” respectivamente.

CREATE TABLE `usuario` (
`usuarioCodigo` int(11) NOT NULL,
`usuarioLogin` varchar(15) NOT NULL,
`usuarioSenha` varchar(32) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;


– Extraindo dados da tabela `usuario`

INSERT INTO `usuario` (`usuarioCodigo`, `usuarioLogin`, `usuarioSenha`) VALUES (0, ‘andrey’, ‘baf22ddb7b1a317d860f48638254e2e9′),
(0, ‘teste’, ‘698dc19d489c4e4db73e28a713eab07b’);

Como o form está pronto, agora vamos a parte que interessa, a validação PHP.

<?php
/* Conectando ao banco */
mysql_connect(”localhost”,”root”,”");
mysql_select_db(”test”);
/* Fim conectando ao banco */

/*
Desenvolvedor: Andrey Pedro Lefkum
E-mail: andrey@andrey.eti.br
Site: www.andrey.eti.br

Função do Arquivo: Demonstrar como fazer um sistema de login seguro!
*/

function removerCodigoMalicioso($comSeguranca) {
$comSeguranca = addslashes($comSeguranca);
$comSeguranca = htmlspecialchars($comSeguranca);
$comSeguranca = str_replace(”SELECT”,”",$comSeguranca);
$comSeguranca = str_replace(”FROM”,”",$comSeguranca);
$comSeguranca = str_replace(”WHERE”,”",$comSeguranca);
$comSeguranca = str_replace(”INSERT”,”",$comSeguranca);
$comSeguranca = str_replace(”UPDATE”,”",$comSeguranca);
$comSeguranca = str_replace(”DELETE”,”",$comSeguranca);
$comSeguranca = str_replace(”DROP”,”",$comSeguranca);
$comSeguranca = str_replace(”DATABASE”,”",$comSeguranca);

return $comSeguranca;
}

if($_POST['logar']) {

$login = $_POST['login'];
$senha = $_POST['senha'];

$login = removerCodigoMalicioso($login);
$senha = removerCodigoMalicioso($senha);

$sql = ”
SELECT usuarioLogin
FROM usuario
WHERE usuarioLogin = ‘”.$login.”‘
AND usuarioSenha = ‘”.md5($senha).”‘
“;

$resultado = mysql_query($sql) or die(mysql_error());

if(mysql_num_rows($resultado) == 1) {
?>
<span>Logou no sistema!</span>
<?php
}
else {
?>
Erro ao tentar acessar o sistema, verifique seu LOGIN e SENHA!
<?php
}
}
?>

O Código está ai, mas o que ele faz realmente?
Esse código acima, remove todos os tipos de SQL Injection que poderia estar afetando o funcionamento normal do seu sistema de login. Todos os $_POST que são enviados pelo formulário passam pela função que faz a remoção de qualquer código malicioso.

Uma dica interessante seria obrigar o usuário a colocar pelo menos 6 caracteres, não deixar no login e senha repetir no campo “aaaaaa” ou sequencial como “123456″ ou “abcdef” e ainda sugerir ao usuário utilizar letras e números ao mesmo tempo.

—-

Quero agradecer ao Google Analytics que está indicando o que os visitantes do meu site querem ler e o que eles mais procuram na net. Resolvi escrever esse POST porque vi que muitos que busca algo pelo Google relacionado ao PHP são iniciantes, e nada melhor do que um sistema de LOGIN seguro, que é o que muita gente falha hoje em dia. Conheço empresas que estão fortes no mercado de software, que não tem essa preocupação, então diria que não seria somente para iniciantes, mas também para pessoas despreocupadas com as informações do PRÓXIMO!

;)
Valeu, espero que gostem do post!

Contador de Visitas PHP que grava em TXT

Friday, December 15th, 2006

Um simples contador de acessos que grava em arquivo do tipo TXT o número de visitas em sua página principal:
$arquivo = fopen(”conta.txt”,”r”);
$conta_num = fgets($arquivo);
fclose($arquivo);

chmod(”conta.txt”,0777);

$arquivo = fopen(”conta.txt”,”w+”);

$conta_num = $conta_num + 1;

if(!fwrite($arquivo,$conta_num))
{
echo “Erro no contador…”;
}
fclose($arquivo);
?>

Obs.: O arquivo conta.txt já deve estar criado e também estar na mesma pasta que o arquivo php.
Autor: Andrey Pedro Lefkum
Fonte Bibliográfica: PHP.net

SQL somente dentro das CLASSES

Friday, December 15th, 2006

Pouco tempo atrás começamos a adotar um novo padrão, onde basicamente falando, qualquer SQL que for executado em um site ou sistema deve ficar dentro da classe. Para cada tabela existe uma classe, por exemplo para a tabela “usuario”, o nome da classe passa a ser “Usuario”.
Ok, mas qual a vantagem em fazer isso?

  • Como todo SQL fica confinado dentro da classe, caso queira fazer migração de banco de dados, basta alterar dentro das classes, não precisando sair catando SQL pelos arquivos PHP.
  • Padronização dos SQL’s e métodos que retornam ou inserem no banco. Lembrando que essa padronização acaba obrigando o programador a fazer de uma única forma.
  • Pode ser criado um gerador de códigos para esse padrão, pois como é feito de forma única, não precisa-se mais criar classes, dessa forma o programador, foca boa parte de seu tempo na regra de negócio (Obs.: Esse gerador de códigos está quase pronto, e está sendo feito por Eliton José da Silva, que por sinal está ficando muito bom)
  • Pode-se trabalhar com dois programadores em um mesmo módulo do software, onde um pode mexer com a regra de negócio dentro da classe (Esqueci de mencionar que toda regra de negócio deve ficar dentro da classe) e outro no script que chama os métodos da classe só exibindo na tela dados já trabalhados na classe ou executar métodos para inserir dados.

Bom, esses são alguns dos inúmeros benefícios que obterá em usar esse padrão.

Vou colocar alguns exemplos:

No script que instância métodos da classe faremos da seguinte forma para inserir um registro:

session_start();

/* Importando Classes que serão usadas no sistema */
include “../_classe/classeUsuario.php”;
include “../_include/config.php”;

/* Instanciando o Objeto Usuário */
$objetoUsuario = new Usuario();

if($_POST['enviar']) {

$objetoUsuario->setUsuarioLogin($_POST['usuarioLogin']);
$objetoUsuario->setUsuarioNome($_POST['usuarioNome']);
$objetoUsuario->setUsuarioFuncao($_POST['usuarioFuncao']);
$objetoUsuario->setUsuarioEmail($_POST['usuarioEmail']);
$objetoUsuario->setUsuarioSenha($_POST['usuarioSenha']);
$objetoUsuario->setUsuarioTelefone($_POST['usuarioTelefone']);
$objetoUsuario->setUsuarioCelular($_POST['usuarioCelular']);

if($_POST['acao'] == ‘a’) {
$objetoUsuario->setUsuarioCodigo($_POST['usuarioCodigo']);
$objetoUsuario->alteraUsuario();
}
else {
$objetoUsuario->carregaUsuario();
if(count($objetoUsuario->getVetorUsuario()) == 0) {
$objetoUsuario->insereUsuario();
}
else {
?>
Usuário já existe
}
}
unset($_POST['acao']);

?>
Cadastrou com sucesso!
}
Lembrando que esses dados são submetidos por um formulário com o “method=’post’”

Agora vamos para a classe que possui os dois métodos utilizados no script acima:

/***********************************
Autor: Andrey Pedro Lefkum
andrey@andrey.eti.br
www.andrey.eti.br

Classe: Usuário

Classe para ações do usuário no
sistema.

***********************************/

class Usuario {

/* Metodo Construtor */
function Usuario() {

}
/* Fim Metodo construtor */

/* variáveis da classe */
var $usuarioCodigo;
var $usuarioNome;
var $usuarioEmail;
var $usuarioTelefone;
var $usuarioCelular;
var $usuarioLogin;
var $usuarioSenha;
var $resultado;
var $vetorUsuario;
var $ordem;
/* Fim variáveis da classe */

/* Metodos Get’s and Set’s */
function getusuarioCodigo() {
return $this->usuarioCodigo;
}
function setusuarioCodigo($usuarioCodigo) {
$this->usuarioCodigo = $usuarioCodigo;
}

function getUsuarioNome() {
return $this->usuarioNome;
}
function setUsuarioNome($usuarioNome) {
$this->usuarioNome = addslashes($usuarioNome);
}

function getUsuarioEmail() {
return $this->usuarioEmail;
}
function setUsuarioEmail($usuarioEmail) {
$this->usuarioEmail = addslashes($usuarioEmail);
}

function getUsuarioTelefone() {
return $this->usuarioTelefone;
}
function setUsuarioTelefone($usuarioTelefone) {
$this->usuarioTelefone = addslashes($usuarioTelefone);
}

function getUsuarioCelular() {
return $this->usuarioCelular;
}
function setUsuarioCelular($usuarioCelular) {
$this->usuarioCelular = addslashes($usuarioCelular);
}

function getUsuarioLogin() {
return $this->usuarioLogin;
}
function setUsuarioLogin($usuarioLogin) {
$this->usuarioLogin = addslashes($usuarioLogin);
}

function getUsuarioSenha() {
return $this->usuarioSenha;
}
function setUsuarioSenha($usuarioSenha) {
$this->usuarioSenha = md5($usuarioSenha);
}

function getOrdem() {
return $this->ordem;
}
function setOrdem($ordem) {
$this->ordem = $ordem;
}

function getBuscar() {
return $this->buscar;
}
function setBuscar($buscar) {
$this->buscar = $buscar;
}

function getResultado() {
return $this->resultado;
}
function setResultado($resultado) {
$this->resultado = $resultado;
}

function getVetorUsuario() {
return $this->vetorUsuario;
}
function setVetorUsuario($vetorUsuario) {
$this->vetorUsuario = $vetorUsuario;
}

function getUsuarioFuncao() {
return $this->usuarioFuncao;
}
function setUsuarioFuncao($usuarioFuncao) {
$this->usuarioFuncao = $usuarioFuncao;
}

function getSql() {
return $this->sql;
}
function setSql($sql) {
$this->sql = $sql;
}
/* Fim Metodo Get’s and set’s */

/* Metodos de acoes da classe */
function insereUsuario() {
$sql = “INSERT INTO usuario
(usuarioLogin
,usuarioNome
,usuarioSenha
,usuarioTelefone
,usuarioCelular
,usuarioEmail
,usuarioFuncao
)
VALUES
(
‘”.$this->getUsuarioLogin().”‘
,’”.$this->getUsuarioNome().”‘
,’”.$this->getUsuarioSenha().”‘
,’”.$this->getUsuarioTelefone().”‘
,’”.$this->getUsuarioCelular().”‘
,’”.$this->getUsuarioEmail().”‘
,’”.$this->getUsuarioFuncao().”‘
)
“;

$resultado = mysql_query($sql) or die(”alert(’”.mysql_error().”‘);”);
if($resultado) {
$objetoLog = new Log();
$objetoLog->setLogTabela(’usuario’);
$objetoLog->setLogSql($sql);
$objetoLog->setLogDataHora(date(”Y-m-d H:i:s”));
$objetoLog->insereLog();
}

$this->setResultado($resultado);
}

function carregaSql() {
$sql = “SELECT usuarioCodigo
,usuarioLogin
,usuarioNome
,usuarioSenha
,usuarioEmail
,usuarioTelefone
,usuarioCelular
,usuarioFuncao
FROM usuario
WHERE 1 “;

if($this->getUsuarioNome()) {
$sql .= ” AND usuarioNome LIKE ‘%”.$this->getUsuarioNome().”%’ “;
}

if($this->getusuarioCodigo()) {
$sql .= ” AND usuarioCodigo = ‘”.$this->getusuarioCodigo().”‘ “;
}

if($this->getOrdem()) {

$sql .= “ORDER BY “.$this->getOrdem();
}
else {
$sql .= “ORDER BY usuarioNome “;
}
$this->setSql($sql);
}

function carregaUsuario() {
$this->carregaSql();
$sql = $this->getSql();
$resultado = mysql_query($sql) or die(”alert(’”.mysql_error().”‘);”);

while($linha = mysql_fetch_object($resultado)) {
$vetorUsuario['usuarioCodigo'] [$linha->usuarioCodigo] = $linha->usuarioCodigo;
$vetorUsuario['usuarioLogin'] [$linha->usuarioCodigo] = $linha->usuarioLogin;
$vetorUsuario['usuarioNome'] [$linha->usuarioCodigo] = $linha->usuarioNome;
$vetorUsuario['usuarioSenha'] [$linha->usuarioCodigo] = $linha->usuarioSenha;
$vetorUsuario['usuarioTelefone'][$linha->usuarioCodigo] = $linha->usuarioTelefone;
$vetorUsuario['usuarioCelular'] [$linha->usuarioCodigo] = $linha->usuarioCelular;
$vetorUsuario['usuarioEmail'] [$linha->usuarioCodigo] = $linha->usuarioEmail;
$vetorUsuario['usuarioFuncao'] [$linha->usuarioCodigo] = $linha->usuarioFuncao;
}
$this->setVetorUsuario($vetorUsuario);
}

function alteraUsuario() {
$sql = “UPDATE usuario
SET usuarioLogin = ‘”.$this->getUsuarioLogin().”‘
,usuarioNome = ‘”.$this->getUsuarioNome().”‘
,usuarioTelefone = ‘”.$this->getUsuarioTelefone().”‘
,usuarioCelular = ‘”.$this->getUsuarioCelular().”‘
,usuarioEmail = ‘”.$this->getUsuarioEmail().”‘
,usuarioFuncao = ‘”.$this->getUsuarioFuncao().”‘
WHERE usuarioCodigo = “.$this->getusuarioCodigo();

if($this->getUsuarioSenha() != md5(”")) {
$this->alteraSenha();
}

$resultado = mysql_query($sql) or die(mysql_error());
if($resultado) {
$objetoLog = new Log();
$objetoLog->setLogTabela(’usuario’);
$objetoLog->setLogSql($sql);
$objetoLog->setLogDataHora(date(”Y-m-d H:i:s”));
$objetoLog->insereLog();
}
}

function alteraSenha() {
$sql = “UPDATE usuario
SET usuarioSenha = ‘”.$this->getUsuarioSenha().”‘
WHERE usuarioCodigo = ‘”.$this->getusuarioCodigo().”‘ “;

$resultado = mysql_query($sql) or die(mysql_error());
if($resultado) {
$objetoLog = new Log();
$objetoLog->setLogTabela(’usuario’);
$objetoLog->setLogSql($sql);
$objetoLog->setLogDataHora(date(”Y-m-d H:i:s”));
$objetoLog->insereLog();
}
}
/* Fim metodo de acoes */
}
/* Fim classe */
?>

Autor: Andrey Pedro Lefkum
Obs.: Nesse exemplo não cheguei ao nível de explicar o que a Orientação Objetos.

Web Service em PHP

Tuesday, November 21st, 2006

Como cada vez mais surgem novos sistemas de informação de diversas linguagens de programação, surgiram a necessidade de integração de alguns sistemas, mas como desenvolver uma ferramenta que entenda todas linguagens e que seja de fácil acesso? Foi criado o WEB SERVICE que utiliza o protocolo SOAP através do XML para enviar as informações de um sistema � outro. Anteriormente ao XML era usado comandos via “socket” que nada mais é do que um software que fica escutando uma determinada porta do computador, porém é um processo muito trabalhoso!

Abaixo temos um exemplo de um Web Service em php utilizando a classe NUSOAP. Utilizar essa classe é realmente simples!

Então vamos lá:

O primeiro exemplo é o servidor que irá enviar as informações para o cliente. O servidor agora, somente tem uma ação que é retornar um nome de usuário, na situação abaixo é “Andrey Pedro Lefkum”, mas isso pode ser dinâmico, sendo retornado do banco de dados.

Arquivo: soap.php

<?php
require_once(”nusoap.php”);

function retornaUsuarios($parametro) {
$nome = “Andrey Pedro Lefkum”;
return $nome;
}

$objetoSoapServer = new soap_server();
$objetoSoapServer->configureWSDL(’SMSSoap’,'urn:SMSSoap’);

/* Essa funcao nao faz nada */
$objetoSoapServer->register(’retornaUsuarios’
,array(’base’ => ‘xsd:string’)
,array(’return’ => ‘xsd:string’)
,’urn:SMSSoap’
,’urn:SMSSoap#retornaUsuarios’
);

$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : ”;

$objetoSoapServer->service($HTTP_RAW_POST_DATA);
?>

Esse segundo exemplo é a parte que faz a requisição ao servidor, nesse caso ele é o cliente.
O cliente diz qual será o servidor, e qual a função do servidor que ele quer que retorne, nesse caso é a retornaUsuarios.
Caso não aconteça nenhum erro ele retorna o nome do usuário.

Arquivo: nusoapCliente.php

<?php
require_once(”nusoap.php”);

$parametros = array(’usuarioCodigo’ => 5);

$clienteSoap = new soapclient(”http://localhost/webservice/soap.php”);
$resultado = $clienteSoap->call(’retornaUsuarios’,$parametros);

if($clienteSoap->fault) {
echo “Erro ao acessar o WEBSERVICE<br />Erro: “.$clienteSoap->faultstring;
}
else {
echo “Nome Usu疵io: “.$resultado;
}
?>

Lembrando que o cliente poderia ser feito em qualquer outra linguagem, como JAVA, ASP enfim…

Referências Bibliográficas:

Claudimir Zavalik, Gulilherme Lacerda, José Palazzo M. de Oliveira
www.inf.ufrgs.br/~palazzo/OAI/04%20Software%20Livre%20-%20Web%20Serv.pdf

Mauricio Reckziegel
http://www.imasters.com.br/artigo/4379/webservices/protocolo_de_transporte_padrao_-_soap/

Mauricio Reckziegel
http://www.imasters.com.br/artigo/4422/webservices/descrevendo_um_web_service_-_wsdl/

MS faz acordo com Zend para promover PHP

Wednesday, November 1st, 2006

A Microsoft e a Zend, fornecedora de ferramentas para criação de software de fonte aberta e sociedade formada para vender linguagem PHP, anunciaram nesta terça-feira, 31, uma parceria de longo prazo.

Segundo o estrategista de Tecnologia da MS, Bill Hilf, o acordo vai garantir que programas PHP sejam compatíveis com versões passadas e futuras do Windows para servidores de web.

O acordo cobre tanto o Windows Server 2003, que já está em uso, quanto a nova versão do software, conhecida pelo nome-código de Longhorn. “O PHP sempre funcionou com o Windows. O problema é que nunca funcionou muito bem”, diz Andi Gutman, co-fundador e vice-presidente de tecnologia da Zend, dando explicações a Reuters sobre a aliança com a Microsoft. As atividades da parceria, segundo Gutman, começam no primeiro trimestre de 2007.

Fonte: http://www.baguete.com.br/noticia.php?id=14070


This is a free Wordpress template provided by Mathew Browne | Web Design | SEO