Você está na página 1de 4

Integrando Intraweb com PHP - Passe parmetros para script PHP com IW

Autor : Daniel Khl Lima

Atualmente, a linguagem PHP muito popular na criao de sites, e o Intraweb vem sendo cada vez mais utilizado em ambientes corporativos, devido a sua facilidade de uso e rapidez no desenvolvimento de solues para a internet, baseado no ambiente de desenvolvimento do Delphi. Este artigo explica como possvel unir essas duas tecnologias, ganhando produtividade, sem perder a flexibilidade e sem a necessidade de um grande impacto de migrao no sistema. No Intraweb, as funcionalidade so infinitamente mais fceis e prticas de serem implantadas principalmente no que diz respeito a controle de sesso do usurio e manipulao de dados com o banco. Componentes utilizados Foi utilizado os seguintes pacotes de componentes no desenvolvimento dessa aplicao para integrar com scripts PHP: Indy 10, que acompanha o Delphi 2005 (disponvel para www.atozed.com/indy/Plus/Files.iwp); Intraweb 7.2, que acompanha o Delphi 2005 (disponvel para www.atozed.com/intraWeb/Download/Files/Archives/70.iwp) download download em em

Este artigo parte do princpio que voc j possui um servidor Web com PHP instalado e configurado. Criando os formulrios Intraweb e cdigos Crie uma nova aplicao Intraweb no Delphi, utilizando o assistente do Intraweb (em File|New>Other>Intraweb), conforme a Figura 1.

Figura 1. Criando uma aplicao Intraweb utilizando o assistente Na prxima tela, em Application Type escolha StandAlone Application, em Options marque a opo Create User Session. Clique em OK para prosseguir. Abra a unit UserUnitSession, adicione um IdHTTP (IndyClients) e altere seu nome para HTTP1

Figura 2. Inserindo o IdHTTP na sesso do usurio Salve a unit do formulrio principal como u_main.pas, a unit da sesso do usurio (UserUnitSession) e do controlador do servidor Intraweb (ServerController) com o nome sugerido e o projeto como iw_php.dpr. Na unit UserSessionUnit adicione na clusula uses IdMultipartFormData. Aps, necessrio criar as variveis responsveis, por armazenar os parmetros que sero passados ao script PHP. Na seo public, adicione as variveis, conforme o cdigo a seguir: public Data: TIdMultiPartFormDataStream; Nome, animal: string; Dia: TDateTime; Essas variveis, recebero os parmetros passados pelo script PHP, assim estaro disponveis para as outras units, tendo seus valores distintos por sesso criada. No evento OnCreate do UserSessionUnit, adicione o seguinte cdigo: Data := TIdMultiPartFormDataStream.Create; No formulrio principal, adicione dois IWLabel e altere a propriedade Caption para Informe seu nome completo e Qual seu animal favorito? para cada um. Adicione tambm um IWEdit (EditNome), um IWComboBox (ComboAnimal) com os itens: Cachorro, Gato, Cavalo e Passarinho e um IWButton (BtnEnviar). A aparncia final do formulrio dever ser parecida com a Figura 3.

Figura 3. Aparncia final do formulrio principal No uses do formulrio adicione as units ServerController e UserSessionUnit. No evento OnClick do boto digite o seguinte cdigo: UserSession.Nome := EditNome.Text; UserSession.animal := ComboAnimal.Text; UserSession.Dia := Date; TFormPHP.Create(WebApplication).Show; Crie mais um formulrio Intraweb (File|New>Others>Intraweb>New Form), que ir conter o cdigo retornado pelo IdHTTP com o resultado gerado pelo script PHP em um servido qualquer. Salve a unit gerada como u_php.pas e altere a propriedade Name do formulrio para FormPHP. Adicione na clusula uses do formulrio principal, a unit do formulrio recm criado. De volta ao FormPHP, adicione um IWText, alterando a propriedade Name para TextPHP e RawText para True. Adicione clusula uses do formulrio as units ServerController e UserSessionUnit. No evento OnRender do FormPHP, acrescente o cdigo seguir. try { Adiciona os parmetros usados nas var do Scrip PHP } UserSession.Data.AddFormField('Nome', UserSession.Nome);

UserSession.Data.AddFormField('Animal', UserSession.animal); UserSession.Data.AddFormField('Dia', DateToStr(UserSession.Dia)); { Chama o mtodo POST do TidHTTP e l o resultado do Text } TextPHP.Lines.Text := UserSession.HTTP1.Post( 'http://localhost/php_test.php', UserSession.Data); finally UserSession.Data.Free; end; A sintaxe para o mtodo AddFormField : AddFormField('nome_variavel_no_script_php', 'valor_passado_para_a_variavel'); No cdigo a seguir temos o script PHP, que voc pode salv-lo com o nome de php_test.php. <html> <title></title> <body> <? //recuperando o nome do usuario via POST echo("<h1>Integrando Intraweb com PHP</h1>"); echo("Ol <b>$_POST[nome] </b>"); echo("<br> Seu animal favorito mesmo <b>$_POST[animal </b>?"); echo("<br><br> Seu acesso ocorreu no dia $_POST[dia]"); ?> </body> </html> Esse cdigo faz o seguinte: o script php_test.php utiliza as variveis $_POST[nome], $_POST[animal] e $_POST[dia] para gerar cdigo HTML. As variveis necessrias para fazer o script funcionar foram definidas na UserSessionUnit e seus valores passados pelo formulrio principal no evento OnClick do boto que os definiu e chamou o FormPHP. No evento OnRender ( chamado toda vez que a pgina carregada) passou os valores das variveis para o script PHP atravs do mtodo POST implementado pelo IdHTTP. Testando a aplicao A Figura 4 mostra o formulrio principal onde sero informados as variveis que sero passadas ao script PHP.

Figura 4. Pgina principal informando as variveis que sero passadas ao script PHP Clicando em Enviar, ser passado os valores para as variveis do script PHP que ir l-los e mostrar seu resultado na prpria aplicao Intraweb, sendo totalmente transparente para o usurio. Note que em momento algum existe algo que relacione-o ao script PHP. como se tudo fizesse parte de uma s aplicao (Figura 5).

Figura 5. Resultado gerado pelo script PHP mostrado pela aplicao Intraweb Concluses Esse artigo mostra o que possvel fazer com o Intraweb, no s a integrao com PHP possvel, mas sim com qualquer outra linguagem que receba valores passados atravs do POST, dentre elas esto o prprio Intraweb, ASP, arquivos CGI e uma infinidade mais.