430 likes | 591 Views
PHP. Constantino Martins DEI – Departamento de Engenharia Informática ISEP - Instituto Superior Engenharia Do Porto. Í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.
E N D
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 PHP ?> Codigo HTML <? Codigo PHP ?> Codigo HTML <? Codigo PHP ?> Etc.... 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(“const@dei.isep.ipp.pt", “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