Académique Documents
Professionnel Documents
Culture Documents
1. INTRODUCCIN:
Diferencias entre ASP y PHP
<script language="php">
echo 'Algunos editores (como el FrontPage) Slo
entienden este mtodo';
</script>
<%@
<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()
)
)
;
2.4. Comentarios
/* Comentarios estilo C.
* Pueden extenderse durante varias lneas.
*/
$var_1 = 123;
$var_2 = hola;
$var_3 = $var_1 * 2;
2.5.2. Variables. Tipado.
$mivar = 123;
echo $mivar; // Se convierte a string
Operador cast:
$mivar = (string)123;
$mivar = 12;
settype($mivar, "double");
2.5.3. Variables. mbito.
$alias = &$variable
$a = 1;
$b = &$a;
unset ($a); // Pero $b sigue valiendo 1
2.6. Tipos de datos.
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).
$MiArray[nombre] = Homer;
echo $MiArray[0]; // 1
echo $MiArray[nombre]; // Homer
$MiOtroArray[1][pepe][4] = 3 dimensiones!;
2.6.3. Tipos de datos. Arrays (3).
$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.
$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).
$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.
$a = 1;
$b = 2;
$c = El resultado de . $a . + . $b . es . $a + $b;
2.9.8. Atajos en la asignacin.
, ^
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
$factorial5 = 1;
for ($i = 2; $i <= 5; $i++ )
{
$factorial5 *= $i;
}
2.10.4. for (2)
ASP
<%FOR i=1 TO 100%>
<%=MiVar%>
<%NEXT%>
// PHP
<?php
for ($i = 1; $i <= 100; $i++)
{
echo $MiVar;
}
?>
2.10.5. foreach
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
// Excepcin:
$x = "0"; // cero en una cadena
if( $x ) // evala a falso
// (se convierte a entero)
2.11. Cierto o falso.
Arrays.
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 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
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.
Hola <?=$nombre?>.
Tiene <?=$edad?> aos.
3.1.2. Forms.
Valores mltiples.
<?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.
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.
setcookie(PruebaCookie,
expirar dentro de una hora,
time() + 3600);
setcookie(PruebaCookie, , time());
3.4. Tratamiento de errores.
$nombre = '/etc/shadow';
if( !$archivo )
{
die("No se pudo abrir el archivo ($nombre)");
}
3.5.1. Cadenas. Comparacin.
// Ejemplo:
if (strcmp($a, $b) == 0)
{
echo iguales;
}
3.5.2. Cadenas. Subcadenas.
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)
$pago1 = 68.75;
$pago2 = 54.35;
$pago = $pago1 + $pago2;
$busca = DAlton;
// Habr que escapar el apstrofe
$sql = SELECT *
FROM usuarios
WHERE apellido = \ .
addslashes($busca) . \;
3.5.4. Escapar caracteres.
Shell.
$valor = a>b;
echo <input type=hidden name=var value= .
htmlspecialchars($valor) . >;
$cadena = campo1:campo2:campo3;
$campos = explode(:, $cadena);
$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.
Maysculas y minsculas:
string strtoupper (string cadena)
string strtolower (string cadena)
string ucfirst (string cadena)
3.6.1. Archivos.
Abrir y cerrar.
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.
$direcotrio = opendir('.');
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>
<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
class NombreClase
{
var $variables;
class Coche {
var $velocidad; // Velocidad actual
}
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.
mysql_close ($link);
3.8.2. BD. Elegir una BD.
if (!mysql_select_db("prueba", $link))
{
die (No existe la BD);
}
3.8.3. BD. Querys.
class ConexionGenerica {
var $link;
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");
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);