0% encontró este documento útil (0 votos)
132 vistas33 páginas

Apuntes PHP

PHP es un lenguaje de scripting orientado a la web que se ejecuta en el servidor. Se incluye en páginas HTML mediante tags y permite realizar tareas como procesar formularios, acceder a bases de datos, generar imágenes dinámicas, manejar sesiones y más. Originalmente desarrollado en 1994, ha evolucionado rápidamente y su versión 4 traerá mejoras significativas en rendimiento y soporte a objetos.

Cargado por

Artabe
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
132 vistas33 páginas

Apuntes PHP

PHP es un lenguaje de scripting orientado a la web que se ejecuta en el servidor. Se incluye en páginas HTML mediante tags y permite realizar tareas como procesar formularios, acceder a bases de datos, generar imágenes dinámicas, manejar sesiones y más. Originalmente desarrollado en 1994, ha evolucionado rápidamente y su versión 4 traerá mejoras significativas en rendimiento y soporte a objetos.

Cargado por

Artabe
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 33

         

                          

         

 

                      

                
!    
"

Lenguaje.
− Lenguaje orientado a la web.
− Lenguaje de programación de scripts.
− Es ejecutado en el servidor web: Server Side.
− Es embebido en páginas HTML.

"

Historia y Futuro.
− Iniciado por Rasmus Lerdorf en 1994.
− Primera versión pública: 1995 Personal Home Page
Tools
− Parser reescrito a mediados de 1995: PHP/FI versión
2 con soporte de mySQL.
− Finales de 1996: PHP/FI usado en más de 15.000
webs.
− Mediados de 1997: 50.000 webs.
− Zeev Suraski y Andi Gutmans reescriben el parser de
PHP/FI y aparece PHP versión 3.
− Para finales de este verano se espera la versión 4 de
PHP, con el parser de nuevo reescrito que supondrá
muchas mejoras en soporte de objetos, velocidad de
ejecución y disponibilidad para múltiples plataformas y
programas.

"

Integración en la web.
− Embebido en página HTML. TAGS.
− Intérprete como módulo de Apache.
− Intérprete como CGI.
"

Autentificación HTTP.
− Mediante cabeceras HTTP, ó métodos mas complejos
con cookies, identificadores en urls o directorios.

"

Creación de imágenes GIF.


− Usando PHP con la librería GD están disponibles
funciones para crear lineas, círculos, texto, etc en gifs.

"

Upload de ficheros.
− Gestión de campos FILE en formularios, limitación de
tamaño, etc.

"

Manejo de cookies.

"

Manejo de bases de datos.


− Con soporte nativo para Oracle, Adabas D, Sybase,
FilePro, mSQL, Velocis, MySQL, Informix, Solid, dBase,
ODBC, Unix dbm, PostgreSQL.

"

Manejo de expresiones regulares.


− Como buen sustituto de perl soporta estas funciones.

"

Soporte de reportes de ERROR.


− Varios niveles de alerta.
− Soporte para seguimiento de errores.
"

Soporte de conexiones canceladas, timeouts ó


normales.
− Detección de conexiones canceladas, timeouts del
script, o conexiones satisfactoriamente concluidas.
− Ejecución de funciones al finalizar el procesado de una
página.

"

Visualizador de código PHP.


− Modo de visualización de código, con remarcado de
expresiones en vez de ser ejecutado.

"

Soporte PDF, IMAP, conexiones de red, XML, ficheros


.gz, etc.
− Diferentes habilidades extra, dadas por
módulos/librerías.
"

Módulo de Apache.
− A partir de RPMs de Red Hat 6.0.
− A partir de código fuente.

"

CGI.
− A partir de RPM de Red Hat 6.0.
− A partir de código fuente.

"

CGI.
− Configuración del servidor para usar el intérprete de
php para los ficheros de la extensión .php3.

"

ISAPI (Futuro PHP versión 4).


− Futura posibilidad en Zend.
El código PHP se incluye entre tags. El intérprete PHP
deja el código HTML tal cual e interpreta sólo las partes de
código PHP.
#

<?php echo ("hola\n"); ?>


#

<? echo ("hola\n"); ?>


#

<SCRIPT Language="php">
echo ("hola\n");
</SCRIPT>
#

<% echo ("hola\n"); %>


#

<%= $variable; #equivalente a echo ("$variable") %>

Cada instrucción va separada de otra por un punto y coma


(;) pudiendo ir varias instrucciones seguidas en una sóla
línea. (estilo C ó Perl).
El tag de cierre también implica el final de instrucción,
pudiéndose omitir el punto y como si se desea en las
lineas finales.
#

<?php echo "hola\n"; ?>


#

<?php echo "hola\n" ?>


PHP admite comentarios estilo C, C++ y shell.
#

<?php echo "hola"; //Comentario


/* Este es de varias
lineas*/
# y el ultimo tipo de comantario ?>

Las variables en PHP siempre se representan con el


símbolo del dólar delante ($)

PHP admite los siguientes tipos de variables:


#

Enteros.
Son admitidos los siguientes formatos:
$a = 1234; # decimal
$a = −123; # decimal negativo
$a = 0123; # octal (83 en decimal)
$a = 0x12; # hexadecimal (18 en decimal)
#

Números en coma flotante.


Su sintaxis es:
$a = 1.234;
$a = 1.2e3;
#

Strings.
Las cadenas de texto pueden ser definidas entre
comillas dobles o simples.
$texto="cadena";
$texto=’cadena’;
La diferencia es que con comillas dobles se realiza
expansión de variables y de los caracteres de escape \n
\t \r \\ \$ y \".
Con comillas simples sólo se procesa \\ y \’.
<? $var="hola";
echo "$var que tal"; # imprime: hola que tal
echo ’$var que tal"; # imprime: $var que tal ?>
Las strings se concatenan con puntos:
<? $var=$cadena." otra cadena ".$otra_var; ?>
#

Arrays.
PHP soporta arrays escalares y asociativos, al igual que
Perl.
$a[0] = "abc";
$a[1] = "def";
$b["identificador"] = 13;
$c[] = "test1"; # equivalente a $c[0]="test1"
$c[] = "test2"; # equivalente a $c[1]="test1"
$bidimensional[0][1]="posición 0,1";
$bidimensional["id"][3]="mezcla asociativo y normal";
Las funciones array y list pueden ser usadas para
construir arrays.
#

Objects.
Los objetos en PHP versión 3.0 son útiles y usables,
pero aú no son lo suficientemente potentes como para
construir sistemas de objetos complejos.
class mi_objeto {
function hacer_cosas () {
echo "Haciendo cosas.";
}
}
$a = new mi_objeto;
$a −> hacer_cosas ();

En PHP normalmente no se establece el tipo de las


variables. Es definido en tiempo de ejecución dependiendo
del contescto donde es usada cada variable.
Se puede forzar la conversión a un tipo de una variable con
la función:
settype(variable,["integer","double","string","array","object"])
También se puede forzar el tipo de una variable con casting:
$a = 10; // $a es un integer
$b = (double) $a; // $b es double
− (int), (integer) − cast to integer
− (real), (double), (float) − cast to double
− (string) − cast to string
− (array) − cast to array
− (object) − cast to object
Las string cuando son evaluadas como números ($a + $b)
siguen las siguientes normas para su conversión:
$

Evalua como double si contiene ".", "e" ó "E".


$

El valor es impuesto por la primera parte de la cadena


("10.3 5" es double).
$

Si la primera parte no es un número válido, toma el valor 0


("hola3" es 0).
$

Cuando un string es el primer operando de una operación,


el tipo con el que se evalúa viene impuesto por el del
segundo argumento ("10.0 hola"+"1" resulta un entero y
("10 ejemplos" + "2.0" resulta double).
Además se dispone de varias funciones para conecer el tipo
de una variable, como gettype(), is_long(), is_double(),
is_string(), is_array(), y is_object().

En PHP el rango de las variables es siempre local, y no se


puede acceder a las variables globales a no ser de que se
especifique en la función.
function prueba() {
global $a $b;
$b = $a + $b;
}
ó accediendo a través del array $GLOBALS[]
function prueba() {
$GLOBALS["b"] = $GLOBALS["a"] + $GLOBALS["b"];
}
Dentro de una función se puede establecer una variable que
se comporte como global en cuanto a que no pierte su valor.
function incrementa() {
static $i = 0;
echo $a;
$a++;
}

PHP soporta al igual que Perl variables de nombre variable:


$a="hola";
${$a}="adios";
echo "$hola es igual a ${$a}";

PHP soporta constantes, definidas con la función define():


define("EJEMPLO", "valor");
echo EJEMPLO; # imprime: valor

Casi todo en PHP son expresiones. Una expresión es


cualquier cosa que tiene un valor. Las variables, costantes,
números, llamadas a funciones, etc son expresiones porque
devuelven o tienen un valor.
También las asignaciones se evaluan al valor que asignan,
los operadores de comparación (==, <, >, >=, <=, !=) se
evaluan a TRUE (no 0) o FALSE (0), y existe soporte para
pre/post−incremento/decremento.
También es una expresión: $first ? $second : $third.
Las expresiones acabadas en ; son statements o
instrucciones.

Los operadores se aplican a expresiones. Veamos los tipos


existentes:
"

Aritméticos:
+, −, *, / y % ($a + $b, etc...)
"

Strings:
. (Concatena strings: $a= $cadena . " texto";)
"

Asignación:
El operador de asignación fundamental es =. Sobre él
hay variaciones como .=, +=, *=, etc...
"

Sobre bits:
& (And), | (Or), ~ (Not), << (Mult. x2, desplaz izq.), >>
(Div. /2, despaz. dcha.)
"

Lógicos:
And, or, xor, !, &&, ||, ^
"

De comparación:
==, !=, <, >, <=, >=, (expr1) ? (expr2) : (expr3);
"

Prioridad de operadores:
new
[y(
! ~, ++ −− y castings
*/%
+−.
<< >>
< <= > >=
== !=
&
^
|
&&
||
?:
= += −= *= /= .= %= &= != ~= <<= >>=
print
and
xor
or
,
Agrupan statements.
"

if ... elseif ... else


if (expr) statement
if (expr) { statements }
if (expr) : statements endif;
if (expr) {
statements
} elseif (expr) {
statements
} else {
statements
}
if (expr) :
statements
elseif (expr):
statements
else:
statements
endif;
"

while
while (expr) statement
while (expr): statement ... endwhile;
"

do ... while
do { statements } while (expr);
"

for
for (inicial; condicion; incremento) statement
for (inicial; condicion; incremento): statement; ...; endfor;
"

break
"

continue
"

switch
switch ($i) {
case 0:
print "i es igual a 0";
break;
case 1:
print "i es igual a 1";
break;
case 2:
print "i es igual a 2";
break;
default:
print "i no es igual a 0, 1 o 2"
}
"

require
require ’header.inc’;
Inserta el fichero una sóla vez, sin ejecutarlo, y luego se
interpreta el script entero.
"

include
include($fichero);
Inserta el fichero y lo evalua cada vez que se encuentra.
"

function
function ejemplo ($arg_1, $arg_2, ..., $arg_n) {
echo "funcion de ejemplo.\n";
return $valor;
}
return devuelve el resultado de la función.
Los argumentos pueden ser pasados por valor ($arg1,
$arg2) o por referencia (con (&$arg1, &$arg2))
PHP también admite establecer valores por defecto para
los argumentos, y que no se produzca una advertencia
en caso de que alguno no sea especificado:
function ejemplo ($arg_1, $arg_2="nada") {
if ($arg_2=="nada") {
echo "No se ha pasado el segundo argumento"
}
echo "funcion de ejemplo.\n";
return $valor;
}
"

class
class nombre {
var variable;
...
function nombre_metodo ($param) {
$this−>variable=$param;
}
...
}
PHP posee gran cantidad de funciones para todo tipo de
tareas.
Con los ejemplos se irán viendo funciones y aprendiendo su
uso.
Siempre es aconsejable programar con el manual de
referencia e ir buscando las funciones a utilizar en cada
caso.
PHP define automáticamente variables de cookies,
formularios enviados via POST o GET.
También las variables de entorno impuestas por apache
aparecen como variables más.
Adicionalmente existen una serie de constantes
relaccionadas con PHP:
#

__FILE__
Nombre del script que se está ejecutando.
#

__LINE__
Linea del script que se está ejecutando.
#

PHP_VERSION
Version de PHP en uso. Ej: ’3.0.11’.
#

PHP_OS
Nombre del sistema operativo en uso. Ej: ’Linux’.
#

TRUE
Contiene el valor verdadero.
#

FALSE
Contiene el valor falso.
#

E_ERROR
Error no recuperable.
#

E_WARNING
Error en alguna parte, pero se continua la ejecución.
#

E_PARSE
Error de sintaxis encontrado por el parser. Irrecuperable.
#

E_NOTICE
Algo ha pasado, pero no llega a la categoría de error. Uso
de strings sin comillas en arrays, acceso a variables no
definidas, etc.
Veamos que maneras existen en la programación web de
almacenar e interactuar con el usuario
"

Formularios con campos hidden (GET/POST).


Se añaden campos hidden: <INPUT TYPE="hidden"
NAME="variable" VALUE="valor">
"

Cookies.
SetCookie("nombre[]",$valor,time()+3600,"/dir/",".dominio.e
s",1);
"

Urls GET.
Añadir ?var=valor a todas las URL de una página. Algo
engorroso.
"

PHP como Handler en apache de ciertos directorios.


<Location /local>
ForceType application/x−httpd−php3
</Location>
local es un script php3.
$url_array=explode("/",$REQUEST_URI);
"

Desarrollo de una conexión y consulta de Bases de


datos.
<?php
mysql_connect($host,$user,$password);
$result = mysql_db_query("database","select * from
table");

if (!$result) { echo "ERROR"; }


else {
while($row = mysql_fetch_array($result)) {
echo $row["user_id"];
echo $row["fullname"]; }
mysql_free_result($result);
}
?>

while (list($id, $name) = mysql_fetch_row($result)) {


print(" <tr><td>$id</td>\n".
" <td>$name</td></tr>\n");
}

while($row = mysql_fetch_object($result)) {
echo $row−>user_id;
echo $row−>fullname;
}
"

Instalación y necesidades.
−Servidor con soporte PHP.
−Base de datos MySQL, PostgreSQL, Oracle ó ODBC.
−Requiere configurar el fichero prepend.php3 para que se
ejecute antes de cualquier fichero .php3.
−Configuración de la base de datos, editando el fichero
local.inc de phplib.
"

Seguimiento. Variables de sesión y usuario.


<?php
page_open(array("sess" => "clase_de_sesion"));
$sess−>register("s");
?>
<html>
<h1><?php print ++$s ?></h1>
</html>
<?php page_close(); ?>
page_open(array("feature" => "classname"))
Las features son sess y user
"

Conexiones a bases de datos. (DN_Sql class)


Variables:
−Host
−Database
−User
−Password
−Row
−Errno
−Error
−Autofree
Métodos:
−query($query_string)
−next_record()
−seek($pos)
−metadata($table)
−num_rows(), nf() (SELECT)
−affected_rows() (INSERT, UPDATE, DELETE)
−num_fields()
−np()
−f($field)
−p($field)
Métodos internos:
−connect()
−halt($msg)
"

Autentificación
page_open(array("feature" => "classname"))
Con las features: auth y perm.

"

Phorum (http://www.phorum.org)
"

IMP (http://horde.org/imp/)
"

Otros de comercio electrónico, cartas de productos...


(http://www.php.net/projects.php3)
Con la función phpinfo() se puede obtener información
detallada de la configuración actual de php y el sistema.

auto_append_file [fichero|none]
Nombre del fichero que es automáticamente añadido al
final de los script php3 a no ser de que se terminen con
exit(). El fichero es insertado con la función include() por lo
que se busca en el include_path.
#

auto_prepend_file [fichero|none]
Fichero añadido al principio, llamando a include().
#

display_errors [On|Off]
Imprimir o no los errores en el código HTML resultante.
#

doc_root directorio
Determina el directorio donde se encuentran los
documentos php3. Si estamos en el modo seguro sólo
esos scripts se pueden ejecutar.
#

engine [On|Off]
Útil para configurar algunos directorios de Apache sin
parser php3.
#

error_log [fichero|syslog]
Indica el fichero donde se deben notificar los errores
encontrados en scripts. Si se usa la palabra syslog en NT
los errores son notificados al even log y en UNIX por los
mecanismos tradicionales de syslog.
#

error_reporting nivel
Selecciona que sucesos son notificados: error_reporting()
1 − normal errors
2 − normal warnings
4 − parser errors
8 − non−critical style−related warnings
#

open_basedir directorio
Sólo los ficheros de dentro de ese directorio pueden ser
abierto y leidos por las funciones fopen u otras.
Seguro ante symlinks.
Permite especificar varios directorios separados por : en
UNIX y por ; en Windows. El directorio . Es tratado como
el actual, donde se encuentra el script en ejecución.
#

gpc_order [GPC|GCP|PCG|PGC|CGP|CPG]
Orden de parsing de las variables recibidas. Se puede
omitir uno de los métodos de recepción.
#

ignore_user_abort [On|Off]
Completar la ejecución de los scripts aunqueel usuario
pare y cierre la conexión.
#

include_path directorios
Directorios donde include() y require() buscan los ficheros.
Directorios múltiples separados por : en UNIX y , en
Windows.
#

log_errors [On|Off]
Define si los errores serán enviados al log del servidor.
#

magic_quotes_gpc [On|Off]
Comillas y \ son transformados a \" \’ y \\ para operaciones
(Get/Post/Cookie) automáticamente.
#

magic_quotes_runtime [On|Off]
Lo mismo pero para todas las funciones que devuelvan
texto de bases de datos o similares.
#

max_execution_time segundos
Máximo tiempo permitido de ejecución del script.
#

memory_limit numbytes
Máxima memoria consumida por un script.
#

short_open_tag [On|Off]
Uso de tags reducidos <? ?>
#

asp_tags [On|Off]
Uso de tags estilo ASP <% %> y <%=$variable %>
#

track_errors [On|Off]
Si está habilitado, el último mensaje de error estará
almacenado en la variable global $php_errormsg
#

track_vars [On|Off]
Habilita los arrays asociativos $HTTP_GET_VARS,
$HTTP_POST_VARS y $HTTP_COOKIE_VARS
#

upload_tmp_dir directorio
directorio temporal usado mientras se hace upload de
ficheros.
#

user_dir directorio
Directorio base de los usuarios donde les es permitido
colocar scripts php3, limitado en caso de habilitar el modo
seguro.
#

SMTP dirección
Nombre DNS o dirección IP que debe usar PHP en
Windows como servidor SMTP para el envio de correo.
#

sendmail_from email
Dirección usada por PHP como From: en los mensajes.
#

sendmail_path path
Ruta y parámetros con que debe llamarse al sendmail
para enviar correo. /usr/sbin/sendmail −t por ejemplo.

safe_mode [On|Off]
Habilitar el modo seguro de PHP.
#

safe_mode_exec_dir directorio
Directorio donde se encuentran los programas que están
permitidos ejecutar desde los scripts.

debugger.host direccion
Nombre DNS ó dirección IP de la máquina usada como
debugger.
#

debugger.port puerto
Puerto de la máquina donde se envia la información.
#

debugger.enabled [On|Off]
Habilita/deshabilita el debugger.
#

enable_dl [On|Off]
Usable con PHP como módulo de Apache. Permite cargar
librerías dinámicamente.
#

extension_dir directorio
Directorio donde se encuentran las extensiones.
#

extension nombre
Para definir que extensiones queremos cargar al arrancar.
Una linea extension=nombre por cada módulo.

*.allow_persistent [On|Off]
Habilita conexiones persistentes (mejoran el rendimiento).
#

*.max_persistent número
Máximo de conexiones persistentes.
#

*.max_links integer número


Máximo de conexiones por proceso.

bcmath.scale número
Número de decimales usado en las funciones BC_Math
<HTML>
<HEAD>
<TITLE>Ejemplo 1</TITLE>
</HEAD>
<BODY>
<?php echo "Hola Mundo\n<BR>" ?>
<?php echo ’Hola Mundo\n<BR>’ ?>
<? echo "Hola Mundo\n<BR>" ?>
<% echo "Hola Mundo\n<BR>" %>
<? $hola="Mundo";
$saludo="Hola ".$hola;
echo "Hola $hola\n<BR>";
?>
<%= $saludo %>
<?php
echo ("<BR>".
"y la despedida ".
"final...\n<BR>");
$despedida[]="Adios";
$despedida[]="mundo";
$despedida[]="cruel";
while (list($pos,$palabra)=each($despedida)) {
echo "$palabra"." ";
?>
</BODY></HTML>
#

Formulario típico
En una página HTML:
<FORM ACTION="recibir_login.php3" METHOD="POST">
Login: <INPUT TYPE="text" NAME="login"><BR>
Password: <INPUT TYPE="text" NAME="passwd"><BR>
<INPUT TYPE="submit" VALUE="Enviar">
</FORM>
Código PHP sencillo para recibir los datos:
<?
echo "Login: $login \n<BR>";
echo "Password: $passwd \n<BR>";
?>
#

Formulario y recepción en la misma página


Se comprueban las variables con IsSet() para saber si están
definidas. En caso de no estarlo se imprime el formulario y si
están se procesan.

El envio de mensajes se realiza llamando a la función mail()


mail($destino,$titulo,$mensaje,$cabeceras extra);
Las cookies hay que establecerlas antes de escribir nada en
la página. Es decir, antes siquiera de que aparezca el tag
<HTML>.
Se utiliza la función SetCookie:
SetCookie("nombre",$nombre,$expire_date,$path,$domain);

Ya sea con las funciones propias de PHP o con los métodos


dados por phplib consiste básicamente en:
#

Establecer la conexión
#

Hacer una consulta SQL


#

Comprobar si hay error y el numero de resultados


#

Recorrer los resultados imprimiéndolos


#

Liberar memoria

PHP permite muchos modos de autentificación, ya sea con


cabeceras HTTP, formularios y consultas en bases de
datos, phpLib, etc.
<?php
Header("Content−type: image/gif");
$string=implode($argv," ");
$im = imagecreatefromgif("images/button1.gif");
$orange = ImageColorAllocate($im, 220, 210, 60);
$px = (imagesx($im)−7.5*strlen($string))/2;
ImageString($im,3,$px,9,$string,$orange);
ImageGif($im);
ImageDestroy($im);
?>

Configurando Apache o el servidor para que se ejecute


cuando se llama a un directorio, y consultando
$REQUEST_URI se pueden recibir datos en forma de
directorios virtuales.
PHP soporta la subida de ficheros al servidor tanto por
POST como por PUT. Put prácticamente no se usa, hay que
escribir manualmente la URL o utilizando programas de
terceros.
La subida de ficheros post se realiza incluyendo un campo
de tipo FILE en un formulario.
PHP establece las variables:
#

$nombre_campo_file
Nombre temporal del fichero en el disco del servidor.
#

$nombre_campo_file_name
Nombre original del fichero en el navegador del cliente
#

$nombre_campo_file_size
Tamaño en bytes del fichero subido.
#

$nombre_campo_file_type
Tipo mime del fichero, si el navegador proporciona esta
información.
nombre_campo_file es el nombre que elijamos para el
campo FILE del formulario. De esa manera se puede
soportar la subida de varios ficheros de una vez, o
añadiendo al nombre los corchetes para que se comporte
como array.
PHP recibe la identificación del navegador y aparece dentro
de los scripts como la variable global:
$HTTP_USER_AGENT
Consultándola y actuando en consecuencia se puede
personalizar la página para cada navegador. Es buena idea
ver detectores como los javascript de Netscape para ver que
condiciones cumple cada navegador.

PHP dispone de funciones para consultar, crear fechas,


efectuar conversiones de calendarios, comprobar validez,
así como imprimir la fecha localizada a cada idioma.

También podría gustarte