PHP Constantino Martins DEI – Departamento de Engenharia Informática ISEP - Instituto Superior Engenharia Do Porto Constantino Martins Índice O que é o PHP? Vantagem Tipos de variáveis Forms com PHP Mail Funções Comunicação com SGBD como exemplo o MySQL Autenticação com PHP - algumas soluções. SESSION com PHP Uploads Links Constantino Martins O que é PHP? PHP ("PHP: Hypertext Preprocessor") é uma linguagem de script server-side HTML-embedded. Implementado em “qualquer” ambiente Server-side -> código é executado no servidor. Constantino Martins Historia e Datas Concebido em 1994 por Rasmus Lerdorf Versão 1: 1995 Versão 2: PHP/FI 1995-1997 Versão 3: PHP 1997-2000 Versão 4: PHP meio-2000 Constantino Martins Vantagem Entre outras, umas das grandes vantagem do PHP é o de suportar um grande número de base de dados e sobretudo de fácil uso. Adabas D, InterBase, Solid, dBase, mSQL, Sybase, Empress, MySQL, Velocis, FilePro, Oracle, Unix dbm, Informix, PostgreSQL Constantino Martins Primeiro programa - hello world FILE.php: <html><head> <title>Example</title> </head><body> <? echo “hello world!"; ?> </body> </html> Output: Hello world! O código PHP é delimitado por tags iniciais e finais que lhe permite sair e entrar no PHP. Constantino Martins Tipos de Tags <? codigo PHP ?> <?php codigo PHP ?> <% codigo PHP %> <script language="php"> codigo PHP </script> Constantino Martins PHP embebido com HTML <? Codigo ?> Codigo <? Codigo ?> Codigo <? Codigo ?> Etc.... PHP HTML PHP HTML PHP Constantino Martins Exemplo <? if(strstr($HTTP_USER_AGENT,"MSIE")) { ?> <b>You are using Internet Explorer</b> <? } else { ?> <b>You are not using Internet Explorer</b> <? } ?> Constantino Martins Sintaxe PHP “a la “ C (e Perl, TCL etc..) Instruções “a la” C <? for ($i=0; $i<5; $i++) { if ($i < 2) { echo “ola"; } else { echo “oli"; } echo "$i<BR>\n"; } ?> Constantino Martins Tipos de Comentários <? // primeira /* segunda */ # vamos embora? ?> Constantino Martins Tipos de variáveis Não precisam de serem declaradas Tipo da variável decidido em “runtime” pelo PHP, dependo do contexto em que é usada Constantino Martins Tipos de variáveis Inteiros: $a=123456; $a=-1221212; Float $a = 1.234; $a = 1.2e3; Constantino Martins Tipos de variáveis - string Limitada por duas maneiras: “ ‘ (neste caso as variáveis não serão “expandidas”) Nota: Uso “\” para “escapes” Constantino Martins Tipos de variáveis - strings Exemplos: Atribuição $string = “É uma string"; /* Appending to it . */ $string = $string . " com mais strings"; /* Outra maneira */ $string .= " mais coisas.\n"; Constantino Martins Tipos de variáveis Outro exemplo $num = 9; $string = "<p>Number: $num</p>"; Resultado: string =<p>Number: 9</p> /* Mais um exemplo*/ $num = 9; $string = '<p>Number: $num</p>'; Resultado: string= <p>Number: $num</p> /* último exemplo */ $string = ‘É um teste.'; $first = $string[0]; Constantino Martins Tipos de variáveis - vectores $a[0]=“abc”; $a[1]=“cba”; $a[]=“ole”; /* ole fica automaticamente na posição a[2] */ Constantino Martins FORMS <form action="action.php" method="POST"> Nome: <input type=text name=nome><br> Idade: <input type=text name=idade><br> <input type=submit> </form> action.php: Hello <? echo $nome; ?>. A sua idade é <? echo $idade; ?> Constantino Martins FORMS action.php: <? if ($nome!=“” && $idade!=“”) { ?> Hello <? echo $nome; ?>. A sua idade é <? echo $idade; } else { ?> <form action="action.php" method="POST"> Nome: <input type=text name=nome><br> Idade: <input type=text name=idade><br> <input type=submit> </form> <? } ?> Constantino Martins FORMS – uma dica <form action="action.php" method="POST"> <select multiple name=equipas[]> <option>FCP <option>SLB<option>SCP<option>BOAVISTA </select><input type=submit></form> action.php: <? echo “Seleccionou:<br>"; $tamanho=sizeof($equipas); $i=0; while ($i<$tamanho) { echo “equipas[$i] <br>;” } ?> Constantino Martins Mail Sintaxe: bool mail(string to, string subject, string message, string [additional_headers]); Exemplo: mail(“[email protected]", “Dúvidas", “ola 1\n ole 2\n oli 3"); Constantino Martins Funções Declaração de funções: <? function exemplo($var1, $var2) { echo “var1=$var1 <br>var2=$var2”; }?> Chamada de funções: <? $envia1=“ola”; $envia2=“ola2”; exemplo($envia1,$envia2); ?> Constantino Martins Funções <? $a = 1; $b = 2; Function Sum () { global $a, $b; $b = $a + $b; } Sum (); echo $b; ?> Constantino Martins Execução de comandos $output = `ls -al`; echo "<pre>$output</pre>"; system(), passthru(), exec(), popen(), and escapeshellcmd(). Constantino Martins Instruções - tudo “a la” C if while switch Etc... Constantino Martins Includes Permite incluir files <? // includes assim podemos ter todos o mesmo layout etc.... include ("cabecalho.php"); include ("pesquisa1.php"); include ("rodape.html"); ?> Nota: Ver também require Constantino Martins Database support Quase todas: Adabas D, InterBase, Solid, dBase, mSQL, Sybase, Empress, MySQL, Velocis, FilePro, Oracle, Unix dbm, Informix, PostgreSQL Vamos falar do MySQL Constantino Martins MySQL – ligação a base de dados int mysql_connect(string [hostname [:port] [:/path/to/socket] ] , string [username] , string [password] ); Returns: A positive MySQL link identifier on success, or false on error. Exemplo: <? $lig=mysql_connect(“”,”const”,”os meu alunos gostavam de saber”); mysql_close($lig); // fechar ligação ?> Constantino Martins MySQL Seleccionar base de dados – int mysql_select_db(string database_name, int [link_identifier] ); Returns: true on success, false on error Executar uma query – int mysql_query(string query, int [link_identifier] ); Ver números de resultados int mysql_num_rows(int result); Mostrar resultados object mysql_fetch_object(int result, int [result_typ]); Constantino Martins MySQL - exemplo pesquisa numa tabela <? /* connect a BD */ $lig=mysql_connect(“”,”const”,”os meu alunos gostavam de saber”); /* seleccionar BD */ mysql_select_db(“nome da BD”) /* executar query */ $query=“select * from tabela”; $result=mysql_query($query); /* ver números de resultados */ $numero=mysql_num_rows($result); Constantino Martins MySQL - exemplo pesquisa numa tabela $i=0; While($i<$numero) { if ($row=msql_fetch_object($result)) { echo “$row->nomecoluna<br>etc .....”; } $i++; } /* Free result memory */ mysql_free_result($result); /* fechar ligação */ mysql_close($lig); ?> Constantino Martins MySQL - exemplo inserir numa tabela <? /* connect a BD */ $lig=mysql_connect(“”),”const”,”os meu alunos gostavam de saber”); /* seleccionar BD */ mysql_select_db(“nome da BD”) /* executar query */ $query=“insert into ....etc”; $result=mysql_query($query); /* fechar ligação */ mysql_close($lig); ?> Constantino Martins Autenticação - alguns exemplos Base de dados HTTP – com PHP Cookies .htaccess do linux Constantino Martins Autenticação- exemplo <?php if(!isset($PHP_AUTH_USER)) { Header("WWW-Authenticate: Basic realm=\"My Realm\""); Header("HTTP/1.0 401 Unauthorized"); echo "Text to send if user hits Cancel button\n"; exit; } else { echo "Hello $PHP_AUTH_USER.<P>"; echo "You entered $PHP_AUTH_PW as your password.<P>"; } ?> Constantino Martins Session int setcookie(string name, string value, int expire, string path, string domain, int secure); Iniciar session usar session_start() e para registar variáveis nesta sessão usar session_register(). Constantino Martins Session Exemplo: <? SetCookie(‘dei',‘const'); ?> <? session_start(); session_register(‘var'); $var = 'Hello World'; ?> Constantino Martins Session Para verificar se uma função foi registada usar session_is_registered(): <? if (!session_is_registered("my_var")) { session_register("my_var"); } Nota: consultar outras funções Constantino Martins uploads <FORM ENCTYPE="multipart/form-data" ACTION="_URL_" METHOD=POST> <INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="1000"> Send this file: <INPUT NAME="userfile" TYPE="file"> <INPUT TYPE="submit" VALUE="Send File"> </FORM> Constantino Martins uploads <? copy($PHP_UPLOADED_FILE_NAME,$ DOCUMENT_ROOT.$REQUEST_URI); ?> Constantino Martins Phpinfo(); phpinfo(): “ Outputs a large amount of information about the current state of PHP. This includes information about PHP compilation options and extensions, the PHP version, server information and environment (if compiled as a module), the PHP environment, OS version information, paths, master and local values of configuration options, HTTP headers, and the GNU Public License. “ <? phpinfo(); ?> Constantino Martins Variáveis do sistema <? $REMOTE_ADDR = getenv("REMOTE_ADDR"); $HTTP_REFERER = getenv("HTTP_REFERER"); $DOCUMENT_URI = getenv("REQUEST_URI"); $HTTP_USER_AGENT = getenv("HTTP_USER_AGENT"); $REMOTE_HOST = gethostbyaddr($REMOTE_ADDR); $HTTP_USER_AGENT = str_replace("|", "", $HTTP_USER_AGENT); $REMOTE_HOST1 = strtolower("$REMOTE_HOST"); echo "$REMOTE_ADDR<br>"; echo "$HTTP_USER_AGENT<br>"; echo "$REMOTE_HOST1<br>"; echo "outra solucao=$REMOTE_HOST<br>"; ?> Constantino Martins LINKS Home Page: http://www.php.net Manual: http://www.php.net/manual/ Tutorial: http://www.php.net/tut.php Books: http://www.php.net/books.php Hotscripts: http://www.hotscripts.com/ Constantino Martins