PHP - Programação para seres humanos
-
Upload
caike-souza -
Category
Technology
-
view
1.827 -
download
7
Transcript of PHP - Programação para seres humanos
![Page 1: PHP - Programação para seres humanos](https://reader034.fdocumentos.tips/reader034/viewer/2022052418/587484071a28abc62f8b4743/html5/thumbnails/1.jpg)
PHP: Programação para Seres Humanos
Carlos Henrique R. de SouzaXX.Sepai.Belém.PAOutubro de 2006
![Page 2: PHP - Programação para seres humanos](https://reader034.fdocumentos.tips/reader034/viewer/2022052418/587484071a28abc62f8b4743/html5/thumbnails/2.jpg)
Agenda Objetivo Paradigmas A Web O que é PHP / PHPCLI / PHPGTK Características / Fatos Primeiros passos IDE Orientação a Objetos Frameworks CMS Segurança Conclusões
![Page 3: PHP - Programação para seres humanos](https://reader034.fdocumentos.tips/reader034/viewer/2022052418/587484071a28abc62f8b4743/html5/thumbnails/3.jpg)
Objetivo
Desenvolvimento em PHP Iniciantes em PHP Iniciantes em outras linguagens Alunos de cursos técnicos / graduaçao em TI Entusiastas
Quando usálo Quando não usálo
![Page 4: PHP - Programação para seres humanos](https://reader034.fdocumentos.tips/reader034/viewer/2022052418/587484071a28abc62f8b4743/html5/thumbnails/4.jpg)
Paradigmas
ClientSide Vantagens:
Alicerce robusto Controle sobre os recursos Liberdade local
Desvantagens: Desenvolvimento ‘do zero’ Liberdade local Bugfix
![Page 5: PHP - Programação para seres humanos](https://reader034.fdocumentos.tips/reader034/viewer/2022052418/587484071a28abc62f8b4743/html5/thumbnails/5.jpg)
Paradigmas
ServerSide
![Page 6: PHP - Programação para seres humanos](https://reader034.fdocumentos.tips/reader034/viewer/2022052418/587484071a28abc62f8b4743/html5/thumbnails/6.jpg)
Paradigmas
ServerSide Vantagens:
Interface prémodelada Maior acessibilidade Bugfix
Desvantagens: Pouca (quase nenhuma) informação sobre cliente Preocupação com tráfego Popularização no desenvolvimento de aplicações
![Page 7: PHP - Programação para seres humanos](https://reader034.fdocumentos.tips/reader034/viewer/2022052418/587484071a28abc62f8b4743/html5/thumbnails/7.jpg)
A Web
Em novembro de 1992 – 26 servidores web fonte: netcraft Em outubro de 2006 – 98 milhões de ‘hostnames’
“A internet náo é uma rede de computadores, mas sim de pessoas”
Total Sites Across All Domains August 1995 October 2006
![Page 8: PHP - Programação para seres humanos](https://reader034.fdocumentos.tips/reader034/viewer/2022052418/587484071a28abc62f8b4743/html5/thumbnails/8.jpg)
O que é PHP ?
Uma linguagem de programação opensource e de propósitosgerais
Criada por Rasmus Lerdof em 1995 (PHP/FI) Reescrita por Andi Gtmans e Zeev Suraszi
(Zend) em 1997 – PHP3 Utilizada especialmente para
desenvolvimento web (procedural e/ou OO) Misturada com HTML TODO código PHP é interpretado no servidor
![Page 9: PHP - Programação para seres humanos](https://reader034.fdocumentos.tips/reader034/viewer/2022052418/587484071a28abc62f8b4743/html5/thumbnails/9.jpg)
O que é PHP ?
arquivo.php (no servidor)
<html><p><b><? echo “Olá, Mundo!” ?></b></p>
</html>
arquivo.php (no cliente)
<html><p><b>Olá, Mundo!</b></p>
</html>
![Page 10: PHP - Programação para seres humanos](https://reader034.fdocumentos.tips/reader034/viewer/2022052418/587484071a28abc62f8b4743/html5/thumbnails/10.jpg)
O que é PHP ?
PHPCLI Command Line Interpreter Uso similar a bash, perl, awk ClientSide Cron tasks
#!/usr/bin/php –q<?echo “PHP aqui também!”;?>
![Page 11: PHP - Programação para seres humanos](https://reader034.fdocumentos.tips/reader034/viewer/2022052418/587484071a28abc62f8b4743/html5/thumbnails/11.jpg)
O que é PHP ?
PHPGTK Gimp Tool Kit
Bibliotecas escritas em C Client/ServerSide Crossplatform
![Page 12: PHP - Programação para seres humanos](https://reader034.fdocumentos.tips/reader034/viewer/2022052418/587484071a28abc62f8b4743/html5/thumbnails/12.jpg)
Independente de Plataforma Linux, HPUX, Mac OS X, Win32 (NT/W95/W98/W2000),
BeOS, Solaris Servidores
Apache, MSIIS / PWS, Xitami Suporte nativo a diversos SGBDs
Adabas D, dBase, Empress, FilePro (apenas leitura), Hyperware, IBM DB2, Informix, Ingres, Interbase, FrontBase, mSQL, Direct MSSQL, MySQL, ODBC, Oracle (OCI7 e OCI8), Ovrimos, PostgreSQL, SQLite, Solid, Sybase, Velocis, Unix dbm
Características
![Page 13: PHP - Programação para seres humanos](https://reader034.fdocumentos.tips/reader034/viewer/2022052418/587484071a28abc62f8b4743/html5/thumbnails/13.jpg)
Características
Extensões: GD (imagens), LDAP, SNMP, SOAP, IMAP, FTP,
MCAL, IMSP, Java, Curl, gettext, SWF, CCVS, zlib, etc...
![Page 14: PHP - Programação para seres humanos](https://reader034.fdocumentos.tips/reader034/viewer/2022052418/587484071a28abc62f8b4743/html5/thumbnails/14.jpg)
Características
Tipagem dinâmica (‘duck’ typing) e conversão automática
If ( funcao_foo($arg_foo) ) {
... fazer algo ...}
Funções suficientes! tipo int ou String
![Page 15: PHP - Programação para seres humanos](https://reader034.fdocumentos.tips/reader034/viewer/2022052418/587484071a28abc62f8b4743/html5/thumbnails/15.jpg)
Características
Integração com outras linguagens (Java, Perl, MS.net , etc.)
public class JavaPHP { private String nome = null;
public void setNome(String nome) { this.nome = nome; }
public String getNome() { return nome; } }
<?$javaPHP = new Java('JavaPHP'); $javaPHP->setNome("Java+PHP"); echo "Método do Java = " . $javaPHP->getNome(); ?>
ex: PHPBrasil
![Page 16: PHP - Programação para seres humanos](https://reader034.fdocumentos.tips/reader034/viewer/2022052418/587484071a28abc62f8b4743/html5/thumbnails/16.jpg)
Características
Sintaxe simples, semelhante a Perl e CPerl:$conn = Pg::connectdb("dbname=foo host=localhost user=root password=123");
PHP:$conn = pg_connect("host=localhost dbname=foo user=root password=123")
Otimizadores APC, Zend Optimizer, Turck MMCache
![Page 17: PHP - Programação para seres humanos](https://reader034.fdocumentos.tips/reader034/viewer/2022052418/587484071a28abc62f8b4743/html5/thumbnails/17.jpg)
Características
Arrays Ordenados
<? $vetor[0] = “primeiro”;$vetor[1] = “segundo”;$vetor[] = “terceiro”; ?>
Associativos<? $vetor[‘caike’] = “php”;
$vetor[‘jamesgoslin’] = “java”;$vetor[‘joselito’] = “asp”; ?>
48 funções para array
![Page 18: PHP - Programação para seres humanos](https://reader034.fdocumentos.tips/reader034/viewer/2022052418/587484071a28abc62f8b4743/html5/thumbnails/18.jpg)
Fatos
19.491.324 Domains 1.313.977 IP Addresses fonte: netcraft
![Page 19: PHP - Programação para seres humanos](https://reader034.fdocumentos.tips/reader034/viewer/2022052418/587484071a28abc62f8b4743/html5/thumbnails/19.jpg)
Fatos
“Top 10 Programming Languages”
fonte: tiobe
![Page 20: PHP - Programação para seres humanos](https://reader034.fdocumentos.tips/reader034/viewer/2022052418/587484071a28abc62f8b4743/html5/thumbnails/20.jpg)
Fatos
fonte: nexen
![Page 21: PHP - Programação para seres humanos](https://reader034.fdocumentos.tips/reader034/viewer/2022052418/587484071a28abc62f8b4743/html5/thumbnails/21.jpg)
Primeiros Passos
Opção 1: LAMP Linux com APTGET
aptget install apache2 php5 mysqlserver php5mysql mysqlquerybrowser
Compilações e instalações independentes Opção 2: WAMP
EasyPHP (7.7mb) Instalações independentes
![Page 22: PHP - Programação para seres humanos](https://reader034.fdocumentos.tips/reader034/viewer/2022052418/587484071a28abc62f8b4743/html5/thumbnails/22.jpg)
IDEs
OpenSource: Eclipse (PHPEclipse, PHPIDE), Tulip,
PHPDesigner Proprietárias:
Zend Studio, Dreamweaver
![Page 23: PHP - Programação para seres humanos](https://reader034.fdocumentos.tips/reader034/viewer/2022052418/587484071a28abc62f8b4743/html5/thumbnails/23.jpg)
Orientação a Objetos
Inspiraçao no mundo real Introduzida no PHP 3 Reescrita para o PHP 4, mas ainda
insuficiente PHP5 = OO madura e similar a outras
linguagens
![Page 24: PHP - Programação para seres humanos](https://reader034.fdocumentos.tips/reader034/viewer/2022052418/587484071a28abc62f8b4743/html5/thumbnails/24.jpg)
Orientação a Objetos
construtores e destrutores padrão
class BD{var $conn;function __construct($host, $user, $pw){
$this>conn = mysql_connect($host,$user,$pw);}
function __destruct($host, $user, $pass){mysql_close($this>conn) ;
}}
![Page 25: PHP - Programação para seres humanos](https://reader034.fdocumentos.tips/reader034/viewer/2022052418/587484071a28abc62f8b4743/html5/thumbnails/25.jpg)
Orientação a Objetos
modificadores de acesso public private protected
class Funcionario { public $nome;protected $telefone;private $salario;
}
![Page 26: PHP - Programação para seres humanos](https://reader034.fdocumentos.tips/reader034/viewer/2022052418/587484071a28abc62f8b4743/html5/thumbnails/26.jpg)
Orientação a Objetos
__set(), __get(), __call()class Pessoa {
private $dt_nascimento;
function __set($atributo, $valor){ if($atributo == "dt_nascimento"){ $dt_nascimento = implode("",array_reverse(explode("/",$valor)));
} }
}
$p1 = new Pessoa();$p1>dt_nascimento = "03/09/1984"; // ... dt_nascimento = 19840903
![Page 27: PHP - Programação para seres humanos](https://reader034.fdocumentos.tips/reader034/viewer/2022052418/587484071a28abc62f8b4743/html5/thumbnails/27.jpg)
Orientação a Objetos
__set(), __get(), __call()class Conta {
private $saldo; private $limite = 100;
function setSaldo() ... function __get($at){ if($at == “saldo”) return $this>saldo + $this>limite; }}
$p1 = new Conta();$p1>setSaldo(200);echo $p1>saldo; // 300
![Page 28: PHP - Programação para seres humanos](https://reader034.fdocumentos.tips/reader034/viewer/2022052418/587484071a28abc62f8b4743/html5/thumbnails/28.jpg)
Orientação a Objetos
__set(), __get(), __call()class Guitarra {
private $cordas; private $captadores;
function __call($metodo, $args){ echo "@#&!! $metodo não existe para a classe guitarra !"; }}
$a = new Guitarra();$a>tocarUmPagodao();
![Page 29: PHP - Programação para seres humanos](https://reader034.fdocumentos.tips/reader034/viewer/2022052418/587484071a28abc62f8b4743/html5/thumbnails/29.jpg)
Orientação a Objetos
interfaces
interface IPessoa{
function fazerObrigacoes();function seDivertir();
}
![Page 30: PHP - Programação para seres humanos](https://reader034.fdocumentos.tips/reader034/viewer/2022052418/587484071a28abc62f8b4743/html5/thumbnails/30.jpg)
Orientação a Objetos
interfacesclass Garoto implements IPessoa{
private $obrigacoes = false;
function fazerObrigacoes(){echo “Fazer meu dever de casa”;$this>obrigacoes = true;
}
function seDivertir(){ echo “Jogar playstation”; }
function getObrigacoes(){ return $this>obrigacoes; }}
![Page 31: PHP - Programação para seres humanos](https://reader034.fdocumentos.tips/reader034/viewer/2022052418/587484071a28abc62f8b4743/html5/thumbnails/31.jpg)
Orientação a Objetos
interfacesclass Adulto implements IPessoa{
private $obrigacoes = false;
function fazerObrigacoes(){echo “Trabalhar para pagar o PS do meu filho”; $this>obrigacoes = true;
}
function seDivertir(){ echo “Verei o Papão jogar!”; }
function getObrigacoes(){ return $this>obrigacoes; }}
![Page 32: PHP - Programação para seres humanos](https://reader034.fdocumentos.tips/reader034/viewer/2022052418/587484071a28abc62f8b4743/html5/thumbnails/32.jpg)
Orientação a Objetos
interfacesclass Deus{
function julgar(IPessoa $p){
if(!$p>getObrigacoes()){echo “Faça já suas obrigações!”;$p>fazerObrigacoes();
}$p>setDivertir();
}}
![Page 33: PHP - Programação para seres humanos](https://reader034.fdocumentos.tips/reader034/viewer/2022052418/587484071a28abc62f8b4743/html5/thumbnails/33.jpg)
Orientação a Objetos
interfaces$objPessoa1 = new Garoto();Deus::julgar($objPessoa);
Fazer meu dever de casaJogar playstation
$objPessoa2 = new Adulto();Deus::julgar($objPessoa2);
Trabalhar para pagar o PS do meu filhoVerei o Papão jogar
![Page 34: PHP - Programação para seres humanos](https://reader034.fdocumentos.tips/reader034/viewer/2022052418/587484071a28abc62f8b4743/html5/thumbnails/34.jpg)
Orientação a Objetos
classes e métodos abstratos propriedades estáticas clonagem manipulação de erros (try/catch)
![Page 35: PHP - Programação para seres humanos](https://reader034.fdocumentos.tips/reader034/viewer/2022052418/587484071a28abc62f8b4743/html5/thumbnails/35.jpg)
Frameworks
Genial, ClassGenerator, MetaClass, Smarty, PRADO, CakePHP, Symfony, etc.
“ Não reinvente a roda, mas saiba como ela foi feita ”
![Page 36: PHP - Programação para seres humanos](https://reader034.fdocumentos.tips/reader034/viewer/2022052418/587484071a28abc62f8b4743/html5/thumbnails/36.jpg)
Content Management System (CMS) Portais:
Joomla, Mambo, PHPNuke, etc ... Blogs:
Wordpress, simplog eCommerce:
phpShop, XTCommerce GroupWare:
NetOffice, PHPGroupWare
![Page 37: PHP - Programação para seres humanos](https://reader034.fdocumentos.tips/reader034/viewer/2022052418/587484071a28abc62f8b4743/html5/thumbnails/37.jpg)
Segurança
SQLInjection XSS Engenharia Social
![Page 38: PHP - Programação para seres humanos](https://reader034.fdocumentos.tips/reader034/viewer/2022052418/587484071a28abc62f8b4743/html5/thumbnails/38.jpg)
SQL Injection
Manipulação dos scripts SQL
$sql= “... WHERE nome = `$_POST[`nome`]` AND senha = ‘$_POST[`senha`]`”;
Login: bla’ or 1 = 1 – Senha: 123
$sql = “... WHERE nome = ‘bla’ or 1 =1 ` AND senha = ‘123`”;
Sempre validar entrada, SEMPRE!
![Page 39: PHP - Programação para seres humanos](https://reader034.fdocumentos.tips/reader034/viewer/2022052418/587484071a28abc62f8b4743/html5/thumbnails/39.jpg)
SQL Injection
Ajudam a evitar ataques de SQLInjection: addslashes mysql_real_escape_string magic_quotes
![Page 40: PHP - Programação para seres humanos](https://reader034.fdocumentos.tips/reader034/viewer/2022052418/587484071a28abc62f8b4743/html5/thumbnails/40.jpg)
Cross-Site Scripting (XSS)
Informação de um contexto (nãoconfiável) é inserida em outro contexto
Link em um email: Fotos daquela sua amiga na festa<a href = "http://xpto.com/?param=<script>...</script>”>Fotos daquela sua amiga na festa </a>
<a href = “http://tinyurl.com/y6tz8”>Fotos daquela sua amiga na festa </a>
![Page 41: PHP - Programação para seres humanos](https://reader034.fdocumentos.tips/reader034/viewer/2022052418/587484071a28abc62f8b4743/html5/thumbnails/41.jpg)
Cross-Site Scripting (XSS)
Ajudam a evitar ataques de XSS strip_tags htmlentities
Sempre validar entrada e SAÍDA!
![Page 42: PHP - Programação para seres humanos](https://reader034.fdocumentos.tips/reader034/viewer/2022052418/587484071a28abc62f8b4743/html5/thumbnails/42.jpg)
Engenharia Social
Independente de tecnologia Caso Paris Hilton Caso Harvard Business School “ Não existe patch para falha humana...”
![Page 43: PHP - Programação para seres humanos](https://reader034.fdocumentos.tips/reader034/viewer/2022052418/587484071a28abc62f8b4743/html5/thumbnails/43.jpg)
Conclusões
PHP – programação para sereshumanos e situações humanas no planeta Terra !
“ Quando tudo que se tem é um martelo... ”
![Page 44: PHP - Programação para seres humanos](https://reader034.fdocumentos.tips/reader034/viewer/2022052418/587484071a28abc62f8b4743/html5/thumbnails/44.jpg)
Fim Referências
www.php.net www.netcraft.com www.opensourcecms.com www.nexen.net www.tiobe.com http://ref.web.cern.ch/ref/CERN/CNL/2001/001/wwwhistory/
Contato [email protected] www.equilibriumweb.com www.step2rock.com
Grupo phppaidegua[email protected]