Vous êtes sur la page 1sur 117

Introduccin a PHP

1. INTRODUCCIN:
Diferencias entre ASP y PHP

Software propietario Free Software


Plataformas Microsoft Multiplataforma
Varios lenguajes Un solo lenguaje:
(VBScript, JavaScript) PHP
Caractersticas de PHP

Ms rpido que ASP


Lenguaje ms fcil y potente
Integracin perfecta con 8 servidores
HTTP
Acceso a 20 tipos de Bases de Datos
Diseo modular de fcil ampliacin
Licencia abierta
Historia y Desarrolladores
Fechas
Inicio del desarrollo en otoo de 1994
PHP Versin 1 en primavera 1995
PHP Versin 2 1995-1997
PHP Versin 3 1997-2000
PHP Versin 4 en el segundo trimestre de 2000
PHP Versin 5 se encuentra en etapa de planeamiento

Equipo de Desarrollo (195 personas con acceso al CVS)


Zeev Suraski y Andi Gutmans (Israel)
Shane Caraveo (Florida)
Stig Bakken (Norway)
Andrei Zmievski (Lincoln, Nebraska)
Sascha Schumann (Dortmund, Germany)
Thies C. Arntzen (Hamburg, Germany)
Jim Winstead (Los Angeles)
Sam Ruby (Raleigh, NC)
Rasmus Lerdorf (San Francisco)
Estadsticas de uso

Fuente: Netcraft 3,314,634 Dominios, 637,746 Direcciones IP


Agosto 2000 19,823,296 Dominios analizados
PHP instalado en el 16.7% de todos los dominios
1,322,329 Servidores Apache analizados
429,589 (32.49%) PHP
Fuente: SecuritySpace.com
247,642 (18.73%) Frontpage
Septiembre 2000
133,414 (10.09%) mod_perl
Informe sobre Mdulos Apache
111,576 (8.44%) mod_ssl
78,030 (5.90%) OpenSSL
46,404 (3.51%) ApacheJServ
Plataformas soportadas
Plataformas (actualidad): Plataformas (en perparacin):
UNIX (todas las variantes) OS/390
Win32 AS/400
(NT/W95/W98/W2000)
QNX
Mac (WebTen)
OS/2
BeOS
Servidores: Servidores (en preparacin):
Apache (UNIX,Win32) Apache 2.0
CGI WSAPI (O'Reilly WebSite)
fhttpd phttpd
ISAPI (IIS, Zeus) thttpd
NSAPI (Netscape iPlanet)
Java servlet
AOLServer
Roxen
Bases de datos soportadas
SQL Otros
Adabas D dBase
Empress filePro (slo lectura)
IBM DB2 dbm (ndbm, gdbm, Berkeley db)
Informix
Ingres
Interbase
Frontbase
mSQL
Direct MS-SQL
MySQL
ODBC
Oracle (OCI7,OCI8)
PostgreSQL
Raima Velocis
Solid
Sybase
2. El lenguaje PHP
2.1. Extensin de los Archivos

.php3 Indica cdigo PHP 3.x.


.php4 Indica cdigo PHP 4.x.
.php Indica cdigo PHP. Preferiremos esta
extensin por ser ms genrica.
.phtml Actualmente en desuso.
2.2. Delimitadores

<? echo 'Primer mtodo de delimitar cdigo PHP'; ?>

<?php echo 'Segundo mtodo, el ms usado'; ?>

<script language="php">
echo 'Algunos editores (como el FrontPage) Slo
entienden este mtodo';
</script>

<% echo 'Mtodo de compatibilidad con ASP'; %>


2.2. Delimitadores. Ejemplo.

<%@
<html>Language=VBScript %>
<html>
<body>
<?php
<body>
if ( Hour(time)>20 || Hour(time)<4)
<%IF
<?php
{ Hour(time)>20
if ( Hour(time)>20
OR Hour(time)<4
|| Hour(time)<4)
THEN%> { ?>
Buenas
echo noches.
Buenas noches.;
<%ELSE%>
<?php
} } else { ?>
else
Buenos das.
{
<%END
<?phpecho}?>
IF%>
Buenos das.;
</body>
}
</html>
?>
</body>
</html>
2.3. Fin de lnea

print( date("M d, Y H:i:s", time()) );

print (
date( "M d, Y H:i:s",
time()
)
)
;
2.4. Comentarios

/* Comentarios estilo C.
* Pueden extenderse durante varias lneas.
*/

// Comentarios estilo C++. Hasta fin de lnea.

# Comentarios estilo Perl. Hasta fin de lnea.


2.5.1. Variables. Declaracin y Uso.

NO hace falta declararlas


Llevan delante el signo $.

$var_1 = 123;
$var_2 = hola;
$var_3 = $var_1 * 2;
2.5.2. Variables. Tipado.

Variables dbilmente tipadas (tipo mixed).

$mi_variable = Inicializamos como texto;


$mi_variable = 3; // Entero.
$mi_variable = 3.14 * $mi_variable; // Float.
$mi_variable = new MiClase(); // Objeto.
2.5.2. Variables. Tipado.
Conversin automtica.

PHP realiza conversiones automticas de tipo:

$mivar = 123;
echo $mivar; // Se convierte a string

$mivar = 3; // Se convierte a entero


$mivar = 2 + $mivar; // para realizar la suma
2.5.2. Variables. Tipado.
Conversin explcita.

Operador cast:

$mivar = (string)123;

Cambiar el tipo de una variable:

$mivar = 12;
settype($mivar, "double");
2.5.3. Variables. mbito.

En el cuerpo de un archivo, las variables son


GLOBALES al archivo y archivos incluidos.
En una funcin, son LOCALES a esa funcin.
Dentro de una clase, slo pueden ser accedidas
a travs del operador -> sobre el nombre del
objeto.
2.5.4. Referencias.

Se definen con el carcter &:

$alias = &$variable

Se puede eliminar una referencia con la funcin unset():

$a = 1;
$b = &$a;
unset ($a); // Pero $b sigue valiendo 1
2.6. Tipos de datos.

Enteros, en decimal, octal o hexadecimal.


$MiVar = 123;

Punto flotante.
$MiVar = 1.3e4;

Arrays.
$MiVar[2] = 123;

Strings.
$MiVar = Cadena de texto\n;

Objetos:
$MiVar = new MiClase();
2.6.3. Tipos de datos. Arrays.

$MiArray[0] = 1;

$MiArray[1] = hola!!;

$MiArray[] = 3;

echo $MiArray[2]; // 3
2.6.3. Tipos de datos. Arrays (2).

Funcionan como vectores o tablas hash al mismo tiempo:

$MiArray[nombre] = Homer;
echo $MiArray[0]; // 1
echo $MiArray[nombre]; // Homer

Y pueden tener ms de una dimensin:

$MiOtroArray[1][pepe][4] = 3 dimensiones!;
2.6.3. Tipos de datos. Arrays (3).

Tambin se pueden definir con el constructor array() :

$OtroArrayMas = array( 1, hola, 5);

$YOtroArray = array(
0 => 1,
1 => hola,
2 => 5,
3 => 8,
nombre => Homer
);
2.6.4. Tipos de datos. Strings.
Comillas dobles.
Si se delimitan entre comillas dobles (), se expandir
cualquier variable que haya dentro de la cadena. Adems, se
pueden incluir ciertas secuencias de escape, al igual que en C:
Secuencia Significado
\n Nueva lnea
\r Retorno de carro
\t Tabulacin horizontal
\\ Barra invertida
\$ Smbolo del dlar
\" Dobles comillas
\[0-7]{1,3} Carcter en octal
\x[0-9A-Fa-f]{1,2} Carcter en hexadecimal
2.6.4. Tipos de datos. Strings (2).
Comillas simples.

Si se delimitan entre comillas simples (),


las variables no se expanden y adems
las nicas secuencias de escape que se
reconocen son \\ y \' (barra invertida
y comillas simples.)
2.6.4. Tipos de datos. Strings (3).
Here Doc

Utilizando la sintaxis here doc de Perl. Las


variables se expanden y no hace falta escapar
las comillas:

$cadena = <<<FINCAD
Esto es un ejemplo de cadena como here doc.
La variable \$a vale $a.
Ahora vamos a finalizar la cadena:
FINCAD
2.6.4. Tipos de datos. Strings (4).

Para concatenar cadenas se utiliza el operador . :

$cad = A esta cadena ;


$cad = $cad . le vamos a aadir ms texto.;

Se puede acceder a cada carcter como si fuera un array:

$cad2 = Tercer carcter de \$cad : $cad[2];


2.7. Constantes.
Las constantes se definen con la funcin define():
define(SALUDO, Hola, mundo!);
echo La constante SALUDO vale . SALUDO;

Las constantes en PHP se diferencian de las variables en


que:
no llevan el smbolo del dlar delante.
puede accederse a ellas desde cualquier parte del
cdigo donde han sido definidas, sin restricciones de
mbito como en las variables.
no pueden ser redefinidas o borradas una vez
definidas.
slo pueden contener valores escalares, no vectores.
2.8. Maysculas y minsculas.

Comportamiento mixto en variables y funciones:

En las variables, las maysculas y minsculas


IMPORTAN.
En los nombres de funciones y palabras reservadas,
las maysculas NO IMPORTAN.
2.9.1. Operadores aritmticos.

Operacin Nombre Resultado


$a + $b Suma Suma de $a y $b.
$a - $b Resta Diferencia entre $a y $b.
$a * $b Multiplicacin Producto de $a y $b.
$a / $b Divisin Cociente de $a y $b.
$a % $b Mdulo Resto de la operacin $a/$b.
2.9.2. Auto-incremento y
auto-decremento.

Operacin Nombre Resultado


Incrementa $a en 1, y
++$a Pre-incremento
devuelve $a (incrementado).
Devuelve $a, y despus lo
$a++ Post-incremento
incrementa en 1.
Decrementa $a en 1, y
--$a Pre-decremento
despus lo devuelve.
Devuelve $a, y despus lo
$a-- Post-decremento
incrementa en 1.
2.9.3. Operadores de bits.
Operacin Nombre Resultado
Se ponen a 1 los bits que estn a
$a & $b Y
1 en $a y $b.
Se ponen a 1 los bits que estn a
$a | $b O
1 en $a o $b.
Se ponen a 1 los bits que estn a
$a ^ $b O Exclusivo
1 en $a o $b, pero no en ambos.
Se invierten los bits (se cambian 1
~ $a No
por 0 y viceversa.)
Desplaza $b posiciones a la
$a << $b Desp. Izq.
izquierda todos los bits de $a.
Desplaza $b posiciones a la
$a >> $b Desp. Drch.
derecha todos los bits de $a.
2.9.4. Operadores lgicos.

Operacin Nombre Resultado


$a and $b Y Cierto si $a y $b son ciertos.
$a or $b O Cierto si $a o $b es cierto.
Cierto si $a o $b es cierto, pero no
$a xor $b O Exclusivo.
ambos.
! $a No Cierto si $a es falso.
$a && $b Y Cierto si $a y $b son ciertos.
$a || $b O Cierto si $a o $b es cierto.
2.9.5. Operadores. Asignacin,
igualdad e identidad.

Operacin Nombre Resultado


Asigna el valor de una variable o
$a = $b Asignacin expresin del segundo trmino a la
variable del primer trmino.
Compara si el valor de los dos
$a == $b Igualdad
operandos es el mismo.
Compara si el valor es el mismo y,
$a === $b Identidad
adems, el tipo coincide.
2.9.5. Operadores. Asignacin,
igualdad e identidad.Ejemplo.

$var1 = 1; // Asignacin
$var2 = 1;
$var3 = 1;
($var1 == $var2) // Cierto, son iguales
($var1 == $var3) // Son iguales (tras conversin)
($var1 === $var2) // Cierto, son idnticas
($var1 === $var3) // FALSO, el tipo no coincide
2.9.5. Operadores. Asignacin,
igualdad e identidad. Error.

$var1 = 1;
$var2 = 2;
if( $var1 = $var2 )
{
echo iguales;
}
else
{
echo distintas;
}
2.9.6. Comparaciones.

Operacin Nombre Resultado


Cierto si el valor de $a no es
$a != $b No igual
igual al de $b.
Cierto si $a no es igual a $b, o
$a !== $b No idntico
si no tienen el mismo tipo.
Cierto si $a es estrictamente
$a < $b Menor que
menor que $b.
Cierto si $a es estrictamente
$a > $b Mayor que
mayor que $b.
Cierto si $a es menor o igual
$a <= $b Menor o igual que
que $b.
Cierto si $a es mayor o igual
$a >= $b Mayor o igual que
que $b.
2.9.7. Operadores de cadenas.

$a = 1;
$b = 2;

$c = El resultado de . $a . + . $b . es . $a + $b;
2.9.8. Atajos en la asignacin.

+= -= *= /= %= &= ^= .= >>= y <<=

$var1 += 3; // $var1 = $var1 + 3;


$var2 /= 2; // $var2 = $var2 / 2;
$var3 >>= 1; // $var3 = $var3 >> 1;
2.9.9. Precedencia.

, ^
or &
xor == != === !==
and < <= > >=
print << >>
= += -= *= /= .= %= &= +-.
|= ^= ~= <<= >>= */%
?: ! ~ ++ -- (int) (double)
|| (string) (array) (object) @
&& [
| new
2.10.1. Estructuras de control.
if elseif else

if (expresin)
{
comandos
}

if (expresin)
{
comandos_cierto
}
else
{
comandos_falso
}
2.10.1. Estructuras de control.
if elseif else (2)
if (expresion1)
{
comandos1
}
elseif (expresion2)
{
comandos2
}
elseif (expresion3)
{
comandos3
}
...
else
{
comandosElse
}
2.10.2. while y do while

while (expresin)
{
comandos
}

do
{
comandos
}
while (expresin);
2.10.4. for

for (expresin1; expresin2; expresin3)


{
comandos
}

$factorial5 = 1;
for ($i = 2; $i <= 5; $i++ )
{
$factorial5 *= $i;
}
2.10.4. for (2)

for ($factorial5 = 1, $i = 2; $i <= 5; $i++ )


{
$factorial5 = $factorial5 * $i;
}

for ($factorial5=1, $i=2;


$i<=5;
$factorial5*=$i, $i++);
2.10.4. for (3). ASP.

ASP
<%FOR i=1 TO 100%>
<%=MiVar%>
<%NEXT%>

// PHP
<?php
for ($i = 1; $i <= 100; $i++)
{
echo $MiVar;
}
?>
2.10.5. foreach

foreach (array as variable)


{
comandos
}

$a = array (1, 2, 3, 17);


foreach ($a as $v)
{
print "Valor actual de \$a: $v.\n";
}

// Valor actual de $a: 1


// Valor actual de $a: 2
// Valor actual de $a: 3
// Valor actual de $a: 17
2.10.5. foreach (2)

foreach (array as indice => variable)


{
comandos
}
2.10.6. switch

switch (variable)
{
case valor1:
comandos1
case valor2:
comandos2
...
case valorN:
comandosN
default:
comandosDefault
}
2.10.6. switch (2)
switch ($i)
{
case 1:
echo Cdigo del 1;

case 2:
echo Cdigo del 2;

case 3:
echo Cdigo del 3;
break;

case 4:
echo Cdigo del 4;
}
2.11. Cierto o falso.
Valores numricos.

$x = 1; // $x
if( $x ) // se evala a cierto

$x = 0; // $x definida como el entero 0


if( $x ) // se evala a falso
2.11. Cierto o falso.
Strings.

$x = "hello"; // asignamos una cadena a $x


if( $x ) // se evala a cierto

$x = ""; // cadena vaca


if( $x ) // evala a falso

// Excepcin:
$x = "0"; // cero en una cadena
if( $x ) // evala a falso
// (se convierte a entero)
2.11. Cierto o falso.
Arrays.

$x = array(); // $x es un array vaco


if( $x ) // se evala como falso

$x = array( "a", "b", "c" );


if( $x ) // se evala a cierto
2.11. Cierto o falso.
Objetos.

Class Yod {} // clase vaca


$x = new Yod();
if( $x ) // se evala a falso

Class Yod { // clase no vaca


var $x = 1;
}
$x = new Yod();
if( $x ) // se evala a cierto
2.11. Cierto o falso.
Constantes.

TRUE es el valor entero decimal 1.

FALSE es la cadena vaca.


2.12. Funciones.

function nombre ($arg_1, $arg_2, ..., $arg_n)


{
comandos
return $salida;
}
2.12. Funciones. (2)
Ejemplo.
function factorial ($valor) {
if ($valor < 0) {
return 1; // Error
}

if ($valor == 0 ) {
return 1;
}

if ($valor == 1 || $valor == 2) {
return $valor;
}

$ret = 1;
for ($i = 2; $i <= $valor; $i++) {
$ret = $ret * $i;
}
return $ret;
}

$factorial5 = factorial(5);
2.12. Funciones. (3)
Valores por defecto.

function enlace($url = www.php.net)


{
echo <a href= . $url . >Pulsa aqu</a>;
}
2.12.1. Funciones.
Argumentos por referencia.

function MiFuncion(&$var)
{
$var++;
}

$a = 5;
MiFuncion($a);
// Aqu $a == 6
2.12.2. Funciones.
Devolucin por referencia.

function &buscar_cliente($nombre)
{
// ... buscamos ...
return $registro;
}

$cliente = &buscar_cliente(Juan);
echo $cliente->dni;
2.13. include y require

La sentencia include(arch) incluye y evala el


archivo especificado.
La sentencia require(arch) se sustituye a s
misma con el archivo especificadotal y como
funciona la directiva #include de C.

El intrprete sale del modo PHP y entra en modo


HTML al principio del archivo referenciado, y
vuelve de nuevo al modo PHP al final.
2.13. include y require

Include() se re-evala cada vez que se


encuentra (y slo cuando est siendo
ejecutada)
require() siempre leer el archivo referenciado,
incluso si la lnea en que est no se ejecuta
nunca (condicional).
2.13. include y require

require(cabecera.inc);

If ($incluir == TRUE)
{
$archivos = array(uno, dos, tres);
foreach ($archivos as $archivo)
{
include($archivo);
}
}
2.14. Variables de Sistema
$HTTP_USER_AGENT Nos informa principalmente sobre el sistema
operativo y tipo y versin de navegador utilizado por el internauta. Su
principal utilidad radica en que, a partir de esta informacin, podemos
redireccionar nuestros usuarios hacia pginas optimizadas para su
navegador o realizar cualquier otro tipo de accin en el contexto de un
navegador determinado.
$HTTP_ACCEPT_LANGUAGE Nos devuelve la o las abreviaciones de
la lengua considerada como principal por el navegador. Esta lengua o
lenguas principales pueden ser elegidas en el men de opciones del
navegador. Esta variable resulta tambin extremadamente til para
enviar al internauta a las pginas escritas en su lengua, si es que existen.
$HTTP_REFERER Nos indica la URL desde la cual el internauta ha
tenido acceso a la pgina. Muy interesante para generar botones de
"Atrs" dinmicos o para crear nuestros propios sistemas de estadsticas
de visitas.
2.14. Variables de Sistema

$PHP_SELF Nos devuelve una cadena con la URL del script que est
siendo ejecutado. Muy interesante para crear botones para recargar la
pgina.
$HTTP_GET_VARS Se trata de un array que almacena los nombres y
contenidos de las variables enviadas al script por URL o por formularios
GET
$HTTP_POST_VARS Se trata de un array que almacena los nombres y
contenidos de las variables enviadas al script por medio de un formulario
POST
$HTTP_COOKIES_VARS Se trata de un array que almacena los
nombres y contenidos de las cookies. Veremos qu son ms adelante.
2.14. Variables de Sistema
$PHP_AUTH_USER Almacena la variable usuario cuando se efecta la
entrada a pginas de acceso restringido. Combinado con
$PHP_AUTH_PW resulta ideal para controlar el acceso a las pginas
internas del sitio.
$PHP_AUTH_PW Almacena la variable password cuando se efecta la
entrada a pginas de acceso restringido. Combinado con
$PHP_AUTH_USER resulta ideal para controlar el acceso a las pginas
internas del sitio.
$REMOTE_ADDR Muestra la direccin IP del visitante.
$DOCUMENT_ROOT Nos devuelve el path fsico en el que se encuentra
alojada la pgina en el servidor.
$PHPSESSID Guarda el identificador de sesin del usuario. Veremos
ms adelante en qu consisten las sesiones.
3. Programando en PHP
3.1.1. Forms.
Valores sencillos.

<form action="accion.php" method="POST">


Su nombre: <input type=text name=nombre><br>
Su edad: <input type=text name=edad><br>
<input type=submit>
</form>

Hola <?=$nombre?>.
Tiene <?=$edad?> aos.
3.1.2. Forms.
Valores mltiples.

<form action="accion1.php" method="POST">


<select multiple name=menu>
<option>Tortilla <option>Paella
<option>Fabada <option>Lentejas
</select><input type=submit></form>

<?php
echo "Su eleccin:<br>";
foreach($menu as $plato)
{
echo "$plato<br>\n";
}
?>
3.1.2. Forms.
Valores mltiples. (php3)
<form action="accion1.php" method="POST">
<select multiple name=menu>
<option>Tortilla <option>Paella
<option>Fabada <option>Lentejas
</select><input type=submit></form>
<?php
echo "Su eleccin:<br>\n"; $i=0;
while ($i<4){
if($menu[$i]!="") {
echo $menu[$i]."<br>\n";
}
$i++; }
?>
3.2.1. Sesiones.

Una sesin es una cantidad de informacin


que se almacena dentro del servidor con un
identificador nico de usuario

ste id es enviado atmaticamente al usuario


por medio de cookies.
3.2.2. Sesiones.

Dentro de sta sesin se puede almacenar los


valores de las variables y disponer de ellas en
cualquiera de las pginas en las que se inicie
una sesin.
Una ventaja extra es que al cambiar el valor de
las variables, automticamente cambia su
valor para la sesin
3.2.3. Sesiones.

bool session_start(void);
bool session_register (mixed name [, mixed ...])
bool session_destroy(void);

// Ejemplo, un contador
session_start();
print($contador);
$contador++;
session_register("contador");

<A HREF="siguiente.php?<?=SID?>">Continuar</A>
3.3. Cookies.

int setcookie (string nombre [, string valor


[, int fin [, string camino
[, string dominio
[, int seguro]]]]])

setcookie(PruebaCookie,
expirar dentro de una hora,
time() + 3600);

setcookie(PruebaCookie, , time());
3.4. Tratamiento de errores.

$nombre = '/etc/shadow';

$archivo = @fopen ($nombre, 'r');

if( !$archivo )
{
die("No se pudo abrir el archivo ($nombre)");
}
3.5.1. Cadenas. Comparacin.

int strcmp (string str1, string str2)


int strcasecmp (string str1, string str2)

// Ejemplo:
if (strcmp($a, $b) == 0)
{
echo iguales;
}
3.5.2. Cadenas. Subcadenas.

string substr (string cadena, int inicio


[, int tamao])

$str = substr('abcdef', 2, 3); // cde


$str = substr('abcdef', -2); // ef
$str = substr('abcdef', -2, 1); // e
$str = substr('abcdef', 1, -2); // bcd
3.5.2. Cadenas. Subcadenas.
Ejemplo: substr.php3
<?php
echo "substr('abcdef', 2, 3)<br>";
$str = substr('abcdef', 2, 3); echo "EL substring de
long. 3 a partir de la posicion 2 es: $str <br><br>";
echo "substr('abcdef', -2) <br>";
$str = substr('abcdef', -2); echo "EL substring a
partir de la posicion 2 desde la derecha es:
$str<br><br>";
echo "substr('abcdef', -2, 1)<br>";$str =
substr('abcdef', -2, 1); echo "EL substring a partir de
la posicion 2 desde la derecha es: $str <br><br>";
echo "substr('abcdef', 1, -2)<br>";$str =
substr('abcdef', 1, -2); echo "EL substring a partir
de la posicion 1 y hasta la posicion 2 desde laderecha
es: $str <br><br>";
?>
3.5.2. Cadenas. Subcadenas. (2)

int strpos (string cadena, string referencia


[, int inicio])
int strrpos (string cadena, char referencia)
string strstr (string cadena, string referencia)

$i = strpos('cadena de prueba', 'de');


// $i = 2
$i = strpos('cadena de prueba', 'de', 5);
// $i = 7
$s = strrpos('cadena de prueba', 'de');
// $s = 7
$s = strstr('cadena de prueba', 'de');
// $s = dena de prueba
3.5.2. Cadenas. Subcadenas. (2)
Ejemplo: cadpos.php3
<?php
echo "strpos('cadena de prueba', 'de') <br>";
$i = strpos('cadena de prueba', 'de');
echo "La posicion de: de en: cadena de prueba es: $i <br><br>";
echo "strpos('cadena de prueba', 'de', 5) <br>";
$i = strpos('cadena de prueba', 'de', 5);
echo "La posicion de: de en: cadena de prueba despues de la 5 posicin es :
$i <br><br>";
echo "strrpos('cadena de prueba', 'de')<br>";
$s = strrpos('cadena de prueba', 'de');
echo "La posicion de: de en: cadena de prueba es : $s <br><br>";
echo "strstr('cadena de prueba', 'de')<br>";
$s = strstr('cadena de prueba', 'de');
echo "La cadena despues de la primera ocurrencia de: de en: cadena de
prueba es : $s <br>";
?>
3.5.3. Cadenas.
Imprimir y formatear.

int printf (string formato [, mixed args...])


string sprintf (string formato [, mixed args...])

1. Relleno
2. Alineacin Secuencias de formato
3. Nmero de caracteres
4. Precisin
5. Tipo
% El carcter de tanto por ciento.
b Entero en binario.
c Entero como carcter ASCII.
d Entero en decimal.
f Double en punto flotante.
o Entero en octal.
s Cadena.
x Entero en hexadecimal (minsculas).
X Entero en hexadecimal (maysculas).
3.5.3. Cadenas.
Imprimir y formatear. (2)

printf(%02d/%02d/%04d, $dia, $mes, $ao);

$pago1 = 68.75;
$pago2 = 54.35;
$pago = $pago1 + $pago2;

// echo $pago mostrara "123.1"


// Mostrar al menos un dgito entero y exactamente
// dos decimales, rellenando con ceros

printf ("%01.2f", $pago);


3.5.4. Escapar caracteres.
SQL.

$busca = DAlton;
// Habr que escapar el apstrofe

$sql = SELECT *
FROM usuarios
WHERE apellido = \ .
addslashes($busca) . \;
3.5.4. Escapar caracteres.
Shell.

string system (string comando [, int valor_salida])

echo system(finger $usuario);

Qu pasa si $usuario=pepe ; apachectl stop ?

string escapeshellcmd (string comando)


3.5.4. Escapar caracteres.
HTML.

$valor = a>b;
echo <input type=hidden name=var value= .
htmlspecialchars($valor) . >;

// <input type=hidden name=var value=a&gt;b>

string nl2br (string cadena)


3.5.5. Extraer campos.

array explode (string delimitador, string cadena


[, int lmite])

$cadena = campo1:campo2:campo3;
$campos = explode(:, $cadena);

string implode (string delimitador, array campos)

$cadena = implode(:, $campos);


3.5.5. Extraer campos.
Expresiones regulares.

array split (string delimitador, string cadena


[, int lmite])

$fecha = "12/4 2002";


$campos = split ('[ /.-]', $fecha);
3.5.6. Recorrer un array.

reset(), end(), next(), each(), current(), key()

$arr = array(1,'cosa',1.57,'gato'=>'raton','perro'=>'gato');

current($arr); // 1
next($arr); // cosa
current($arr); // cosa
prev($arr); // 1
end($arr); // gato
current($arr); // gato
key($arr); // perro
reset($arr); // 1
each($arr); // array(0,1)
each($arr); // array(1,'foo')
each($arr); // array(2,1.57)
3.5.7. Ordenar un array.

sort(): Ordena el array por contenido en orden ascendente.

rsort(): Ordena por contenido en orden descendente.

ksort(): Ordena por el ndice en orden ascendente.

rksort(): Ordena por el ndice en orden descendente.


3.5.8. Otras funciones.

Eliminar espacios en blanco:

string trim (string cadena)


string ltrim (string cadena)
string rtrim (string cadena)

Maysculas y minsculas:
string strtoupper (string cadena)
string strtolower (string cadena)
string ucfirst (string cadena)
3.6.1. Archivos.
Abrir y cerrar.

int fopen (string nombre, string modo


[, int include_path])

Modos:
r Slo lectura. Puntero al inicio.
r+ Lectura/escritura. Puntero al inicio.
w Slo escritura. Se trunca el archivo.
w+ Lectura/escritura. Se trunca el archivo.
a Slo escritura. Puntero al final.
a+ Lectura/escritura. Puntero al final.

int fclose (int identificador)


3.6.2. Archivos.
Leer y escribir.

string fgets (int identificador, int tamao)

mixed fscanf (int identificador, string formato


[, string var1...])

int feof (int identificador)

array file (string archivo


[, int include_path])

int fwrite (int identificador, string cadena


[, int tamao])
3.6.3. Archivos.
Copiar / renombrar / borrar.

int copy (string origen, string destino)

int rename (string origen, string destino)

int unlink (string archivo)


3.6.4. Directorios.

int chdir (string directorio)


int mkdir (string nombre, int modo)
int rmdir (string nombre)

int opendir (string nombre)


string readdir (int identificador)
void closedir (int identificador)
3.6.4. Directorio.
Listado de contenidos.

$direcotrio = opendir('.');

while (($archivo = readdir($directorio)) !== FALSE)


{
echo "$archivo\n";
}

closedir($directorio);
3.6.5. Archivos. Envo.

<FORM ENCTYPE="multipart/form-data"
ACTION="recibir.php" METHOD=POST>
<INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="1000">
archivo: <INPUT NAME="archivo" TYPE="file">
<INPUT TYPE="submit" VALUE="Enviar">
</FORM>

// Contenido de recibir.php
echo "Recibido el archivo: ".$archivo_name."<br>\n";
echo "Tamao del archivo: ".$archivo_size."<br>\n";
echo "Tipo mime: ".$archivo_type."<br>";
rename($archivo, $archivo_name);
3.6.5. Archivos. Envo.

<FORM ENCTYPE="multipart/form-data"
ACTION="recibir1.php" METHOD=POST>
<INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="1000">
archivo: <INPUT NAME="archivo" TYPE="file">
<INPUT TYPE="submit" VALUE="Enviar">
</FORM>

// Contenido de recibir1.php
echo "Recibido el archivo: ".$archivo_name."<br>\n";
echo "Tamao del archivo: ".$archivo_size."<br>\n";
echo "Tipo mime: ".$archivo_type."<br>";
@rename($archivo, $archivo_name);
3.6.6 Pasar Variables por la URL
Para pasar las variables de una pgina a otra lo
podemos hacer introduciendo dicha variable dentro del
enlace hipertexto de la pgina destino. La sintaxis
sera la siguiente:

<a href="destino.php?variable1=valor1&variable2=valor2&...">Mi
enlace</a>

Estas variables no poseen el smbolo $ delante. Esto


es debido a que en realidad este modo de pasar
variables no es especfico de PHP
3.6.6 Pasar Variables por la URL.
Ejemplo: origen.html

<HTML> <HEAD>
<TITLE>origen.html</TITLE>
</HEAD>
<BODY>
<a href="destino.php?saludo=hola&texto=Esto es una variable
texto">
Pasaje de variables saludo y texto a la pgina destino.php</a>
</BODY> </HTML>
3.6.6 Pasar Variables por la URL.
Ejemplo: destino.php

<HTML> <HEAD>
<TITLE>destino.php</TITLE>
</HEAD> <BODY>
<?
echo "Variable \$saludo: $saludo <br>\n";
echo "Variable \$texto: $texto <br>\n"
?>
</BODY> </HTML>
3.6.7. Pasar variables por
formularios

Este tipo de transferencia nos permite


interaccionar directamente con el usuario.
El proceso es similar al explicado para las
URLs.
Primeramente, presentamos una primera
pgina con el formulario clsico a rellenar y las
variables son recogidas en una segunda
pgina que las procesa
3.6.8. Pasar variables por formularios.
Ejemplo: formulario.html

<HTML> <HEAD> <TITLE>formulario.html</TITLE>


</HEAD>
<BODY>
<FORM METHOD="POST" ACTION="destino2.php">
Nombre<br>
<INPUT TYPE="TEXT" NAME="nombre"><br>
Apellidos<br>
<INPUT TYPE="TEXT" NAME="apellidos"><br>
<INPUT TYPE="SUBMIT">
</FORM>
</BODY>
</HTML>
3.6.9. Pasar variables por formularios.
Ejemplo: destino2.php

<HTML> <HEAD> <TITLE>destino2.php</TITLE> </HEAD>


<BODY>
<?
echo "Variable \$nombre: $nombre <br>\n";
echo "Variable \$apellidos: $apellidos <br>\n"
?>
</BODY>
</HTML>
3.7.1. POO. Definicin de una clase.

class NombreClase
{
var $variables;

function metodos ($parametros)


{
codigo
}
}
3.7.1. POO. Definicin de una clase.
Ejemplo.

class Coche {
var $velocidad; // Velocidad actual

// Constructor por defecto. El coche est parado.


function coche() {
$this->velocidad = 0;
}
// Constructor que indica la velocidad inicial.
function coche($vel) {
$this->velocidad = $vel;
}
// Mtodo acelerar. El coche va ms rpido.
function acelerar() {
$this->velocidad++;
}
// Mtodo frenar. El coche va ms lento hasta frenar.
function frenar() {
if ($this->velocidad > 0) {
$this->velocidad--;
}
}
}
3.7.2. POO. Herencia.

class ClaseDerivada extends ClaseBase


{

// definicin de mtodos y variables


// exclusivos de ClaseDerivada,
// y redefinicin (especializacin)
// de mtodos de ClaseBase

}
3.7.2. POO. Herencia.
Ejemplo.
class CocheFantastico extends coche() {
// Frenado instantneo
function frena() {
$this->velocidad = 0;
}
// El coche habla!
function habla() {
echo Hola, Michael.;
}
// Salta!
function salta() {
echo Boing!!;
}
// Turbo propulsin
function turbo() {
$this->velocidad = 200;
}
}
3.7.3. POO. Creacin y uso
de objetos.

// Creacin (instanciacin)
$MiCoche = new Coche;
$MiCocheSeMueve = new Coche(10);

// Uso
$MiCoche->acelerar();
$MiCoche->acelerar();
$MiCoche->acelerar();
echo $MiCoche->velocidad;
$MiCoche->frenar();
3.8.1. BD. Conexin y desconexin.

int mysql_connect ([string servidor [:puerto]


[:/camino/al/socket]
[, string usuario
[, string contrasea]]])

int mysql_close ([int identificador])

int mysql_pconnect ([string servidor [:puerto]


[:/camino/al/socket]
[, string usuario
[, string contrasea]]])

int mysql_pclose ([int identificador])


3.8.1. BD. Conexin y desconexin.
Ejemplo.

$link = mysql_connect ("www.mmlabx.ua.es",


"nobody", "");
if (!$link)
{
die ("No se pudo conectar");
}

print ("Conexin realizada");

mysql_close ($link);
3.8.2. BD. Elegir una BD.

int mysql_select_db (string nombre_bd


[, int identificador])

if (!mysql_select_db("prueba", $link))
{
die (No existe la BD);
}
3.8.3. BD. Querys.

int mysql_query (string query [, int identificador])


int mysql_db_query (string nombre_bd, string query
[, int identificador])
int mysql_free_result (int result)

$query = "SELECT codigo, nombre, descripcion,


creditos, tipo
FROM asignatura";

$asignaturas = mysql_query($query, $link);


if (!$asignaturas)
{
die (Error en el query);
}
3.8.4. BD. Extraer informacin.

int mysql_affected_rows ([int identificador])

int mysql_num_rows (int resultado)

array mysql_fetch_row (int resultado)

array mysql_fetch_array(int resultado


[, int tipo_resultado])

object mysql_fetch_object (int result)

array mysql_fetch_lengths (int resultado)

int mysql_data_seek (int resultado,


int numero_fila)
3.8.5. BD. Extraer informacin.
Ejemplos.

while ($fila = mysql_fetch_array($asignaturas))


{
echo $fila[codigo] . . $fila[nombre] . \n;
}

while ($fila = mysql_fetch_object($asignaturas))


{
echo $fila->codigo . . $fila->nombre . \n;
}
3.9. Acceso a BD unificado.
Clase ConexionGenerica.

class ConexionGenerica {
var $link;

function connect($servidor, $usuario, $clave) {


echo "<h1>El m&eacute;todo <i>connect</i> ",
"no est&aacute; implementado en la ",
"clase <i>".get_class($this)."</i></h1>";
return FALSE;
}

function close() {}
function select_db($base_datos) {}
function query($query) {}
function fetch_array($resultado) {}
function free_result($resultado) {}
}
3.9. Acceso a BD unificado.
Clase ConexionMySQL.

require ("ConexionGenerica.inc");

class ConexionMySQL extends ConexionGenerica {

function connect($servidor="localhost",
$usuario="nobody", $clave="") {
return $this->link = mysql_connect($servidor,
$usuario, $clave);
}

function close() {}
function select_db($base_datos) {}
function query($query) {}
function fetch_array($resultado) {}
function free_result($resultado) {}
}
3.9. Acceso a BD unificado.
Uso.

// archivo CreaConexion.inc
require ("ConexionMySQL.inc");
$conexion = new ConexionMySQL();

require ("CreaConexion.inc");

$conexion->connect("localhost", "nobody");
$conexion->select_db("prueba", $link);

$asignaturas = $conexion->query("SELECT codigo, nombre,


descripcion,
creditos, tipo
FROM asignatura");

Vous aimerez peut-être aussi