Archive for December, 2006

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!

Como pegar o texto do editor FCKeditor com JS

Thursday, December 21st, 2006

Esse POST merece um 10, pois sofri para encontrar essas duas linhas na NET!

Bom, é o seguinte, para que está usando o FCKeditor (Editor estilo word para WEB), e está precisando pegar o texto que a pessoa digitou para gravar temporariamente através do AJAX, ou até mesmo dar um alert essas duas linhas são a sua salvação!

function pegaTextoFCKeditor() {
var oEditor = FCKeditorAPI.GetInstance(’mensagemCorpo’);
mensagemCorpo = oEditor.GetXHTML();

alert(mensagemCorpo);
}

A variável mensagemCorpo, você usa da maneira que desejar!

Tá eu sei que isso é fácil, mas demorei duas horas para encontrar, isso quer dizer que não devem existir muitos POST disso na NET, e que algum louco vai precisar!

Valeu!

Google Analytics - Plus one of the Google!

Thursday, December 21st, 2006

Para que ainda não ouviu falar do Google Analytics, ai vai uma breve apresentação!

Essa poderosa ferramenta e fácil de usar e trás valiosas informações que poderão estar auxiliando na manutenção e em novos conteúdos, como por exemplo, um dos relatórios existentes é a palavra-chave usada pelo visitante para encontrar seu site.

Exemplo de palavras utilizadas para acessar o site www.andrey.eti.br:
“Javascript txt”, “java txt”, “php arquivo txt”

Dessa maneira você sabe que existem pessoas procurando sobre como criar arquivos do formato TXT por exemplo e criar artigos que interessem seus visitantes, ou seja, direciona o conteúdo ao interesse de seus visitantes.

Alguns dos relatórios oferecidos são:

- Localidade de acesso do visitante (Mapa).
- Plataformas utilizadas para acessar seu site (Linux, windows, …)
- Navegadores (Firefox, IE)
- Palavras Usadas para encontrar seu site no Google
- Por qual local o usuário conseguiu acessar seu site (Pelo Google, Msn, diretamente pelo endereço, enfim…)

Estou publicando essa matéria, porque utilizei essa ferramenta, gostei, e acho interessante divulgar para que tenham sites com qualidade de conteúdo!

Valeu Pessoal!

AJAX - Trabalho TCC - Rodrigo de Souza Koch

Wednesday, December 20th, 2006

Pessoal, um ótimo trabalho de TCC (Trabalho de Conclusão de Curso) de recém formado Analista de Sistemas Rodrigo de Souza Koch (Mais conhecido como Super Nene).

Para quem quer ter uma idéia do que é realmente o Ajax, ou seja, sair do ponto de vista da programação e ver pró e contra dessa metodologia que vem dominando a internet, é muito interessante ler esse trabalho que ficou muito bem escrito (Palavras da Banca).

Abaixo coloquei o Resumo do trabalho para terem uma noção do que se trata:

RESUMO

Com o crescimento do desenvolvimento de aplicações web, também tem aumentado
a necessidade de recursos cada vez mais avançados, antes existentes apenas em
aplicações desktop. Para acompanhar esta evolução, cresce também a necessidade
de novas linguagens e técnicas de programação. Uma outra necessidade que surge
é a redução do tamanho das páginas geradas e do tráfego entre as estações e os
servidores de aplicação. Como uma possível solução, será apresentada neste trabalho
a metodologia de programação AJAX, o que ela é, quais são os seus benefícios
em sua utilização e as desvantagens existentes. Também serão descritas todas as
linguagens que compõem esta metodologia, tais como HTML, JavaScript, XML, CSS
e DOM, além da linguagem de programação PHP, que foi utilizada no sistema desenvolvido
para caso de uso, o gerenciador de banco de dados MySQL, também utilizado
no sistema e o servidor de páginas Apache, que permite a exibição de todas
as páginas desenvolvidas. Para demonstrar as melhorias trazidas por esta metodologia
de programação, será apresentado um sistema de plano de negócios gratuito
para web, contando com alguns recursos de AJAX, além de serem citados alguns
sites que utilizam esta metodologia.

Palavras-Chave: Ajax, Desenvolvimento Web, Plano de Negócios.

ABSTRACT

With the growing development of the web application, it is increasing the necessity of
more and more advanced resources, previously it was used only in desktop application.
In order to follow this evolution, it is growing the necessity of new languages and
programming techniques. Another necessity that appears is the reduction of the
pages sizes generated and the traffic between the stations and the servers’ application.
As a possible solution, it will be presented in this study a methodology of AJAX
programming, what it is, what are its benefits in its utilization and the existent disadvantages.
It will be described all languages which consists of that methodology, such
as HTML, JavaScript, XML, CSS and DOM, besides the languages of programming
PHP, it was used in the development systems in case of use, the system of data
bank MySQL, it is also used in the system and in the page server Apache, which allows
the exhibition of all the programming pages. In order to demonstrate the improvements
brought by this methodology of programming, it will be presented a system
of a free business plan for web, using some resources of AJAX, besides being
quoted some sites which uses that methodology.

Key Words: Ajax, Web Development, Business Plan.

Quem quiser ter mais detalhes, ou esclarecer algumas dúvidas com Rodrigo, o e-mail dele é rodrigojoi@gmail.com

Valeu Pessoal!

——

Conforme foi lembrado pelo Luis Filipe, faltou o link para acesso ao TCC! :D

Então aqui vai: http://www.andrey.eti.br/arquivos/tcc_versao_final.rar

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.

Google apresenta nova ferramenta para busca de patentes

Friday, December 15th, 2006
SÃO FRANCISCO - O gigante da internet Google lançou na quinta-feira em modo de teste o serviço Google Patent Search, uma nova ferramenta que serve para buscar milhões de patentes registradas nos Estados Unidos.

A última incorporação � ampla coleção de ferramentas especializadas do Google permite buscar entre aproximadamente 7 milhões de patentes, usando parâmetros como número, data e nome do inventor.

O servidor inclui todas as invenções de 1790 a meados de 2006, exceto as que estão com aprovação pendente e as internacionais.

O serviço, no endereço www.google.com/patents, competirá com o motor de busca do Escritório de Patentes e Marcas Registradas dos EUA, a agência oficial americana, utilizada por historiadores, inventores e advogados, entre outros.

“É uma extensão natural de nossa missão para tornar a informação pública mais facilmente acessível”, disse Doug Banks, engenheiro da companhia, no “blog” corporativo.

Toshiba testa laptop movido a metanol

Friday, December 15th, 2006
vulgação
Notebook da Toshiba: desafio é tornar combustível seguro

Ajax dá DINHEIRO?

Friday, December 15th, 2006

Quarta-feira, 13 de dezembro de 2006 - 16h10

SÃO PAULO - Veja como anda o mercado para quem se
especializa na técnica de programação Ajax.

O programador Auro Florentino, de 26 anos, conheceu a técnica do Ajax por acaso. Depois de uma temporada viajando de mochilão pela Argentina, resolveu arrumar um emprego para poder passar mais tempo em Buenos Aires. Em janeiro de 2005, foi trabalhar como programador web numa empresa portenha, onde lhe mostraram um novo jeito de atualizar listas de estados e cidades sem precisar recarregar a página inteira —
o Ajax. Seis meses depois, ele foi “repatriado” por uma excelente oferta de trabalho num projeto da Alcoa, a maior produtora de alumínio do mundo. Detalhe: Florentino é
formado em direito, não em computação. “Sempre gostei de programação e acabei indo trabalhar no ramo”, diz.

Quer dizer que está chovendo trabalho para quem trabalha com Ajax? “Ainda não”, afirma Bruno Martins dos Santos, gerente de hunting da consultoria paulista Conquest One, responsável pela colocação de Florentino. “Ainda há poucos projetos no Brasil envolvendo Ajax. Mesmo assim, os poucos programadores que manjam de Ajax já andam disputados. “Temos 30 mil currículos na área de TI em nosso banco de dados. Mas quando
a vaga pede experiência em Ajax, temos de partir para nosso network e indicações de parceiros”, diz Santos. Foi o que aconteceu nas sete vagas que surgiram na Conquest One no segundo semestre de 2005. Na prática, isso se traduz em boas
oportunidades de aumentar o salário. Segundo Santos, um programador web sênior ganha acréscimos de 20 a 25% em média quando o Ajax é pré-requisito. Na experiência de Florentino, a conta foi além disso. “Um programador que domina a técnica
consegue até dobrar seu salário”, diz. O Ajax não dá um upgrade na carreira isoladamente. “Para poder dizer que entende de Ajax, o profissional precisa mostrar que tem ótimos fundamentos de HTML, XML, JavaScript e alguma linguagem para web, como PHP”, diz Abel Reis, vice-presidente de tecnologia da paulista AgênciaClick.
“Dominar e saber usar essas tecnologias em conjunto é um trunfo que dá uma enorme dianteira em qualquer processo de seleção na área de web”, diz Pierre Mantovani, diretor de novos negócios da Agencia Tribal, de São Paulo. Outra característica em comum, segundo a Conquest One, é a intimidade com o mundo open source: todos os sete
profissionais selecionados em 2005 tinham experiência com Linux, PHP, Apache e MySQL.

Interatividade

O pacote de conhecimentos procurado pelas empresas é reflexo da evolução da web. “Com o Ajax e outras técnicas parecidas, é possível oferecer ao internauta a mesma interatividade de uma aplicação tradicional de desktop. Isso é muito bom para
o usuário, mas dá trabalho para fazer”, diz Mantovani. “Há alguns anos, os programadores de client-side tinham que entender muito mais de design do que de programação”, diz
Reis, da AgênciaClick. “Hoje eles precisam dominar conceitos como programação orientada a objeto, que antes eram pré-requisitos apenas para quem cuidava do back-end comos
bancos de dados”, afirma.

Onde o Ajax entra?

O Ajax é uma técnica que envolve o uso em conjunto de várias tecnologias. Basicamente, trata-se de usar XML para se comunicar com o servidor e atualizar os dados no browser do internauta sem precisar recarregar a página inteira. Isso é feito por meio de JavaScript em conjunto com alguma outra linguagem de programação web, como PHP ou C� . A
implementação mais comum do Ajax é baseada na classe XMLHttpRequest, que faz o meio de campo entre o servidor e o browser. A técnica ganhou fama em serviços como o Gmail,
Orkut e GoogleLocal, que empregam muitos recursos em Ajax.

Fonte: Desconhecida
Obs.: E-mail foi enviado por Rodrigo de Souza Koch da Empresa BaseTI


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