niml> in ve Pronto! A novidades neste script 6: » e-mail. Sua sintaxe é a seguinte: mail(Destinatario, Assunto, Mensagem, informagies_Adicianais); Depois do script que envia e-mail, vamos fazer um outro que guarde as informagées de um formuldriao HTML em um banco de dados. 2.9 - Funcées As fungdes no PHP nao diferem muito das outras linguagens. Algumas caracteristicas das funges: * Devern ser daclaradas antes de sererm usadas. » Podem receber parametros por valor ou por referéncia. * Podem ter quantidade varidvel de par&metros (Apenas a partir da versio 4). * Os parémetros podem ser declarados com um valor default. » Uma vez definida, uma fungao nao paderd ser "redefinida".Alguns exemplos de funcées: da val fuaet verilica email (Sex i slipos (Semal, "2 false esle 6 0 valor Liquide, Londo o valoz brulo © 9 desconio a cad: 9 desconwe ado Loz Laloxnade, uiilizaccnos 10% como padra: “/ fuaclloa vale. Lalo, des = 10 ura (Svalor beac - ($valor bsu-o Qs dois exemplos acima receberam seus parametros por valor. Isso significa que as altcragées de variaveis realizadas dentro da funcdo 86 terao efeito no contexto da funcdo, ¢ estas mudancas nao refictirao no resto do script. Em alguns casos pade ser interessante que os valores dos parametres scjam altcrados pcla fungdo, ¢ que scus novos valores reflitam no script come um todo. Para conseguir isto, usamos a técnica de passagem de pardmetro por referéncia. Vamos ver um exemplo: ye (ggrr_vel) { lle: //" Sav URL: Funet*on corp URL 242.10 - Classes Como n&o poderia deixar de ter, PHP também possui suporte a criagdo de dlasses e objetos de forma simple: dass carro { var $estado; // Estado do carro: ligado ou desligado function liga() ¢ if ($this-> estado != “ligado”) { $this->estado = "ligado”; return true; } else { return false; + ¥ $carrol = new carro; $carro1->liga(); © método construtar da classe (método que é executado quando a dasse é criada) € uma funcdo com 0 mesmo nome da classe: dass Pessoa { var $idade; function Pessoa() { $idade = 0; //Todo objeto desta classe € criado com 0 anos > As classes podem herdar caracteristicas de outras classes. Criando uma classe derivada de uma outra classe, como no exemplo a seguir da criag&o da dasse Aluno, derivada da classe Pessoa: dass Pessoa { var $nome; var $endereso; + dass Aluno extends Pessoa { var $matricula; +Todas as caracteristicas da classe mde s&o herdadas pela classe filha, A heranga multipla ndo € suportada pelo PHP. 2.11 - Acesso 4 banco de dados Como foi dito na apresentacao do PHP, 0 accesso a banco de dados é um dos pontos fortes desta linguagem. Ele possui acesso nativo a ADABAS, ORACLE, SYBASE, SQL SERVER, DBASE, INFORMIX, mSQL, MySQL, POSTGRESQL, além de suportar ODBC, fazendo com que o PHP possa trabalhar praticarnente com todos os bancos de dadas existentas. Neste médulo vamos ver apenas as apenas as funcies relativas ao banco MySQL, pois esta dupla PHP/MySQL est sendo preferida por uma boa parte das desenvolvedores, particularmente no ambiente Linux/Apache. © MySQL € um servidor SQL € portanto devemos seguir alguns procedimentos e regras para acesso aos seus dados. Se vocé esla acostumado com o Oracle ou SQL Server no tera dificuldades, mas se vacé usa somente bancos de dads do tipo Access ou DBF, poderd ter dificuldades em entender o mecanismo usado pelo MySQL. A primeira regra é ter um banco de dados cadastrado e um usuario com acesso @ este banco de dados. Vale lembrar que o MySQL ndo & um banca de dados, ¢ sim um servidor de dados, Tenha isto om mente para entender o exemplo. Digamos que temos um hanco de dados Curso com o usuario visitante ¢ senha temp99, O primeiro passo é "logar" ao servidor, Para isso usamos a fungdo nysz _connecs @ informamos ao servidor login (usuario) e senha. Veja abaix $conn = mysql_connect ("localhost", " isitante", "temp99"); Este camando abriré uma conexdo com o MySQL da maquina local (localhost), usando o usuario visitante cuja senha é temp99. Uma refar€ncia a esa conexdo serd gravada na variavel $conn. Depois de conectados ao servidor, devemos conectar ao banco de dados propriamente dito, usando o comando mysql_select_db, que precisa de dois parametros: O nome do banco de dados e a conexdo. Caso a canexfo nao seja informada, ele tentara usar a ultima criada, Em nossos exemplos, iremos sempre informar os dois parametros. $db mysql_select_db("", sconn), 26Neste ponto j4 temos uma conexéa com o servidor e ja criamos um link com o banca de dados. Agora podemos enviar os comandas SQL que desejarmos. Se vocé nda souber SQL, apranda :-) Agora segue nosso exemplo pratico: Vamos usar o script do médulo passado e alteré-lo de modo que os dados digitados na formulario sejam gravados no banco de dados Curso antes de enviar o e-mail. 1! Verificar se © campo NOME esta vazio, if ($nome "yt erro .= "Digite seu Nome\n"; + # Verificar a quantidade de caracteres no campo TELEFONE. if ((strlen($telefone) > 8) or (strlen(4telefone) < 7)) { $erro .= "O numero do telefone deva ter 7 ou 8 caracteres\n"; } # Testar vamor do campo E-mail, verificando o caracter "@" if strpos ($email, "@") = 0 { serro .= "O e-mail digitado nao é valido\n’ } # Cabecalho de respesta. echo("\n"); echo("
");
Este 0 procedimento padr&o para usar servidores de banco de
dadas carn a PHP:
» Conectar ao servidor
* Abrir o banco de dados (um servidor SQL pode ter mais de um banco
de dados)
» Enviar os comandos SQL
* Desconcctar do servidor
Anovidade deste exemplo fica por conta do comands die que finaliza 0
script caso a funcdo que o precede ndo possa ser executada.
2.12 - FTP e HTTP
Algumas vezes pode ser util que nosso script execute um outro
script ou ent&o transfira um arquivo para outro servidor. Para isso,
podemos executar comandos HTTP e FTP de dentro do PHP. Veja os
exemplos:
HTTP: Podemos fazer, dentro do script PHP, uma chamada a outro
script ou programa CGI hospedado em outro servidor. Isto é muito Util
quando queremos consultar algum dado em um servidor remoto, ou até
mesmo para abrir uma pagina, usando a protocolo HTTP. Para isso,
basta charnar a funcdo Header("location: pagina.htm") para redirecionar
para uma pagina especifica ou entéo o usar a comand abaixo para
executar um CGI passando par&metros via URL
sezver/c. « $paran);
Onde sparam € uma varidvel que pode vir de uma consulta a
banco de dados ou mesmo de um formuldrio.
Outra funcao HTTP importante ¢ 0 uso de "cookies" para gravar
alguma informacéo na browser de quem estiver visitando sua pagina.
Para gravar um "cookie", usamos a funcdo setcookie(), como mostrado
abaixa
selcoosie (Vis cou", "Slo", tome =2603) 5© comando acima gravaré um cookie chamado "Visitou" com a
valor "sim", com apenas uma hora de durag3c. Note que 0 3600 é 0
numera de segundos além do hordrio alual que o coakie deve ficar
ativo. Se no lugar de 3600, usassemos 36000, o cookie seria ative por
10 horas.
FTP: A seqiiéncia de tarefas para uso do protocolo FTP é Conectar ao
Servidor, Identificar-se (Login e Senha), Enviar/Buscar arquivo(s),
Desconectar. Os comandos para cada uma destas tarefas sdo:
creck (WT Lp. nt .ufse.or
conn, ‘Legian’,
targuvyo_vemoto', | "
2.13 - Sessdes
Sessfes HTTP servem para preservar dados em acessos
subseqientes, através de registros de varidveis de sessdo. Usamos
basicamente trés funcdes
session_start(); .
+ session_register( "VARIAVEL" );
* session_destroy();
Exempla:
";
+
felose ($fp);
)Neste Ultimo exemplo, pega-se linha a linha de um arquivo e
imprime em HTML separando as linhas pela lag "
".
2.15 - Tratamento de Erros
© PHP tem um esquema especial de "debugging" (tratamento ¢
verificagdo de errus), que & acessada por uma porta TCP, que permite
acompanhar a execucdo des scripts e ver quaisquer erros que estiverem
acontecendo,
Além disso o tratamente de erros pode ser feito no proprio script,
conforme explicado abaixo
O PHP possui 4 niveis de erros e avisos, que sao:
1+ Erros de normais de Fungécs
2 = Avisos Normais
4 - Erro de interpretaco
8 - Avisos que vocé pode ignorar, mas que podem causar danos &
execugio normal do script.
© padrda do PHP é 0 nivel 7 (1 + 2 + 4), mas este nivel pode ser
alterade tanto no arquivo de configuracio quanto em tempo de
execugde, chamando a fungac errs: reporting (nivel) com o nivel
desejado,
Se usarmos o valor 0 (zero) nenhum aviso ou mensagem de erro
seré gerada em tempo de execucéo, Neste caso, podemos usar uma
varidvel especial (Sokp ezrosms¢) que conterd o ultimo erro gerado
pelo script, para que possamos criar rotinas especificas para tratamento
de erros. Podemos fazer uma analogia ao comando on error resume
next do ASP, técnica muito Util para personalizarmos mensagens de erro
para o usuario, entre outras coisas.Bibliografia
hi www, ibestmasters,com,br
http://www.weberdev.com
http://www.php.net
hup://www.webmonkey.com
http://www.devshed.com
http://www.mysal.com
http://www. phpbuilder.com
PRIDAPALL, Grazicla W. & SANTANA, Juliana 8, ‘Trabalho de Conclusto de Curso —
“Construindo uma apliczyao de Comércio Eletrénico”