Sie sind auf Seite 1von 78

PHP Manual de PHP Iniciacin a PHP

Conceptos bsicos
El lenguaje PHP es un lenguaje de programacin de estilo clsico, con esto
quiero decir que es un lenguaje de programacin con variables, sentencias
condicionales, bucles, funciones.... No es un lenguaje de marcas como podra
ser HTML, XML o WML. Est mas cercano a JavaScript o a C, para aquellos
que conocen estos lenguajes.
Pero a diferencia de Java o JavaScript que se ejecutan en el navegador, PHP
se ejecuta en el servidor, por eso nos permite acceder a los recursos que tenga
el servidor como por ejemplo podra ser una base de datos. El programa PHP
es ejecutado en el servidor y el resultado enviado al navegador. El resultado es
normalmente una pgina HTML pero igualmente podra ser una pagina WML.

Al ser PHP un lenguaje que se ejecuta en el servidor no es necesario que su


navegador lo soporte, es independiente del navegador, pero sin embargo para
que sus pginas PHP funcionen, el servidor donde estn alojadas debe
soportar PHP.

Nuestro primer PHP


La ventaja que tiene PHP sobre otros lenguajes de programacin que se
ejecutan en el servidor (como podran ser los script CGI Perl), es que nos
permite intercalar las sentencias PHP en las paginas HTML, es un concepto
algo complicado de entender si no se ha visto nunca como funciona unas
paginas PHP o ASP.
Vamos a ver un ejemplo sencillo para comprenderlo mejor. En azul est el
cdigo HTML y en rojo el cdigo PHP. Seguiremos este criterio durante todo el
manual.
<!-- Manual de PHP de WebEstilo.com -->
<html>
<head>
<title>Ejemplo de PHP</title>
</head>
<body>
Parte de HTML normal.
<BR><BR>
<?php
echo "Parte de PHP<br>";
for($i=0;$i<10;$i++)
{
echo "Linea ".$i."<br>";
}
?>
</body>
</html>
El cdigo PHP ejecutado tiene dos partes: la primera imprime "Parte de PHP" y
la segunda es un bucle que se ejecuta 10 veces de 0 a 9, por cada vez que se
ejecuta se escribe una lnea, la variable $i contiene el nmero de lnea que se
est escribiendo.
No importa si no entiende muy bien el programa este ejemplo solo es para
ilustrar como se intercala el cdigo HTML y el cdigo PHP.

Variables
Una variable es un contenedor de informacin, en el que podemos meter
nmeros enteros, nmeros decimales, carcteres... el contenido de las
variables se puede leer y se puede cambiar durante la ejecucin de una pgina
PHP.
En PHP todas las variables comienzan con el smbolo del dlar $ y no es
necesario definir una variable antes de usarla. Tampoco tienen tipos, es decir
que una misma variable puede contener un nmero y luego puede contener
carcteres.
<!-- Manual de PHP de WebEstilo.com -->
<html>
<head>
<title>Ejemplo de PHP</title>
</head>
<body>
<?php
$a = 1;
$b = 3.34;
$c = "Hola Mundo";
echo $a,"<br>",$b,"<br>",$c;
?>
</body>
</html>
En este ejemplo hemos definido tres variables, $a, $b y $c y con la instruccin
echo hemos impreso el valor que contenan, insertando un salto de lnea entre
ellas.
Existen 2 tipos de variables, las variables locales que solo pueden ser usadas
dentro de funciones y las variables globales que tienen su mbito de uso fuera
de las funciones, podemos acceder a una variable global desde una funcin
con la instruccin global nombre_variable;

Operadores

Aritmticos
Los operadores de PHP son muy parecidos a los de C y JavaScript, si usted
conoce estos lenguajes le resultaran familiares y fciles de reconocer.
Estos son los operadores que se pueden aplicar a las variables y constantes
numricas.
Operador Nombre

Ejemplo Descripcin

Suma

5+6

Suma dos nmeros

Resta

7-9

Resta dos nmeros

Multiplicacin

6*3

Multiplica dos nmeros

Divisin

4/8

Divide dos nmeros

Mdulo

7%2

Devuelve el resto de dividir ambos


nmeros, en este ejemplo el resultado es
1

++

Suma 1

$a++

Suma 1 al contenido de una variable.

--

Resta 1

$a--

Resta 1 al contenido de una variable.

<!-- Manual de PHP de WebEstilo.com -->


<html>
<head>
<title>Ejemplo de PHP</title>
</head>
<body>
<?php
$a = 8;
$b = 3;
echo $a + $b,"<br>";
echo $a - $b,"<br>";
echo $a * $b,"<br>";
echo $a / $b,"<br>";
$a++;
echo $a,"<br>";
$b--;
echo $b,"<br>";
?>
</body>
</html>

Comparacin
Los operadores de comparacin son usados para comparar valores y as poder
tomar decisiones.

Operador Nombre

Ejemplo Devuelve cierto cuando:

==

Igual

$a == $b $a es igual $b

!=

Distinto

$a != $b $a es distinto $b

<

Menor que

$a < $b $a es menor que $b

>

Mayor que

$a > $b $a es mayor que $b

<=

Menor o igual $a <= $b $a es menor o igual que $b

>=

Mayor o igual $a >= $b $a es mayor o igual que $b

<!-- Manual de PHP de WebEstilo.com -->


<html>
<head>
<title>Ejemplo de PHP</title>
</head>
<body>
<?php
$a = 8;
$b = 3;
$c = 3;
echo $a == $b,"<br>";
echo $a != $b,"<br>";
echo $a < $b,"<br>";
echo $a > $b,"<br>";
echo $a >= $c,"<br>";
echo $b <= $c,"<br>";
?>
</body>
</html>

Lgicos
Los operadores lgicos son usados para evaluar varias comparaciones,
combinando los posibles valores de estas.

Operador Nombre Ejemplo

Devuelve cierto cuando:

&&

(7>2) && (2<4)

Devuelve verdadero cuando ambas


condiciones son verdaderas.

and

(7>2) and (2<4)

Devuelve verdadero cuando ambas


condiciones son verdaderas.

||

(7>2) || (2<4)

Devuelve verdadero cuando al menos


una de las dos es verdadera.

or

(7>2) or (2<4)

Devuelve verdadero cuando al menos


una de las dos es verdadera.

No

! (7>2)

Niega el valor de la expresin.

<!-- Manual de PHP de WebEstilo.com -->


<html>
<head>
<title>Ejemplo de PHP</title>
</head>
<body>
<?php
$a = 8;
$b = 3;
$c = 3;
echo ($a == $b) && ($c > $b),"<br>";
echo ($a == $b) || ($b == $c),"<br>";
echo !($b <= $c),"<br>";
?>
</body>
</html>

Instrucciones de Programacin

Condicionales
Las sentencias condicionales nos permiten ejecutar o no unas ciertas
instrucciones dependiendo del resultado de evaluar una condicin. Las ms
frecuentes son la instruccin if y la instruccin switch.
Sentencia if ... else
<?php
if (condicin)
{
Sentencias a ejecutar cuando la
condicin es cierta.
}
else
{
Sentecias a ejecutar cuando la
condicin es falsa.
}
?>

La sentencia if ejecuta una serie de instrucciones u otras dependiendo de la


condicin que le pongamos. Probablemente sea la instruccin ms importante
en cualquier lenguaje de programacin.
<!-- Manual de PHP de WebEstilo.com -->
<html>
<head>
<title>Ejemplo de PHP</title>
</head>
<body>
<?php
$a = 8;
$b = 3;
if ($a < $b)
{
echo "a es menor que b";
}
else
{
echo "a no es menor que b";
}
?>
</body>
</html>

En este ejemplo la condicin no es verdadera por lo que se ejecuta la parte de


cdigo correspondiente al else.

Sentencia switch ... case


<!-- Manual de PHP de WebEstilo.com -->
<html>
<head>
<title>Ejemplo de PHP</title>
</head>
<body>
<?php
$posicion = "arriba";
switch($posicion) {
case "arriba": // Bloque 1
echo "La variable contiene";
echo " el valor arriba";
break;
case "abajo": // Bloque 2
echo "La variable contiene";
echo " el valor abajo";
break;
default: // Bloque 3
echo "La variable contiene otro valor";
echo " distinto de arriba y abajo";
}
?>
</body>
</html>
Con la sentencia switch podemos ejecutar unas u otras instrucciones
dependiendo del valor de una variable, en el ejemplo anterior, dependiendo del
valor de la variable $posicion se ejecuta el bloque 1 cuando el valor es "arriba",
el bloque 2 cuando el valor es "abajo" y el bloque 3 si no es ninguno de los
valores anteriores.

Bucles
Los bucles nos permiten iterar conjuntos de instrucciones, es decir repetir la
ejecucin de un conjunto de instrucciones mientras se cumpla una condicin.
Sentencia while
<?php
while (condicin)
{
intrucciones a ejecutar.
}
?>
Mientras la condicin sea cierta se reiterar la ejecucin de las instrucciones
que estn dentro del while.
<!-- Manual de PHP de WebEstilo.com -->
<html>
<head>
<title>Ejemplo de PHP</title>
</head>
<body>
Inicio<BR>
<?php
$i=0;
while ($i<10)
{
echo "El valor de i es ", $i,"<br>";
$i++;
}
?>
Final<BR>
</body>
</html>
En el siguiente ejemplo, el valor de $i al comienzo es 0, durante la ejecucin
del bucle, se va sumando 1 al valor de $i de manera que cuando $i vale 10 ya
no se cumple la condicin y se termina la ejecucin del bucle.

Sentencia for
<?php
for (inicial ; condicin ; ejecutar en iteracin)
{
intrucciones a ejecutar.
}
?>

<!-- Manual de PHP de WebEstilo.com -->


<html>
<head>
<title>Ejemplo de PHP</title>
</head>
<body>
Inicio<BR>
<?php
for($i=0 ; $i<10 ; $i++)
{
echo "El valor de i es ", $i,"<br>";
}
?>
Final<BR>
</body>
</html>
La instruccin for es la instruccin de bucles ms completa. En una sola
instruccin nos permite controlar todo el funcionamiento del bucle.
El primer parmetro del for, es ejecutado la primera vez y sirve para inicializar
la variable del bucle, el segundo parmetro indica la condicin que se debe
cumplir para que el bucle siga ejecutndose y el tercer parmetro es una
instruccin que se ejecuta al final de cada iteracin y sirve para modificar el
valor de la variable de iteracin.

Salida
Hasta ahora hemos usado la instruccin echo para realizar salida a pantalla,
esta instruccin es bastante limitada ya que no nos permite formatear la salida.
En esta pgina veremos la instruccin printf que nos da mucha ms potencia.
Sentencia printf
<?php
printf(cadena formato, variable1, variable2...);
?>
La cadena de formateo indica cmo se han de representar las valores que
posteriormente le indicaremos. La principal ventaja es que adems de poder
formatear los valores de salida, nos permite intercalar texto entre ellos.
<!-- Manual de PHP de WebEstilo.com -->
<html>
<head>
<title>Ejemplo de PHP</title>
</head>
<body>
<?php
printf("El numero dos con diferentes formatos: %d %f %.2f",2,2,2);
?>
</body>
</html>
La cadena de formato puede incluir una seria de carcteres especiales que
indican como formatear las variables que se incluyen en la instruccin.
Elemento

Tipo de variable

%s

Cadena de carcteres.

%d

Nmero sin decimales.

%f

Nmero con decimales.

%c

Carcter ASCII.

Aunque existen otros tipos, estos son los ms importantes.


<!-- Manual de PHP de WebEstilo.com -->
<html>
<head>
<title>Ejemplo de PHP</title>
</head>
<body>

<?php
$var="texto";
$num=3;
printf("Puede fcimente intercalar <b>%s</b> con nmeros <b>%d</b>
<br>",$var,$num);
printf("<TABLE BORDER=1 CELLPADDING=20>");
for ($i=0;$i<10;$i++)
{
printf("<tr><td>%10.d</td></tr>",$i);
}
printf("</table>");
?>
</body>
</html>

Manejo de cadenas
Dado el uso del lenguaje PHP el tratamiento de cadenas es muy importante,
existen bastantes funciones para el manejo de cadenas, a continuacin
explicaremos las ms usadas.

strlen(cadena). Nos devuelve el nmero de carcteres de una cadena.


split(separador,cadena). Divide una cadena en varias usando un
carcter separador.
sprintf(cadena de formato, var1, var2...). Formatea una cadena de texto
al igual que printf pero el resultado es devuelto como una cadena.
substr(cadena, inicio, longitud). Devuelve una subcadena de otra,
empezando por inicio y de longitud longitud.
chop(cadena). Elimina los saltos de lnea y los espacios finales de una
cadena.
strpos(cadena1, cadena2). Busca la cadena2 dentro de cadena1
indicndonos la posicin en la que se encuentra.
str_replace(cadena1, cadena2, texto). Reemplaza la cadena1 por la
cadena2 en el texto.

<!-- Manual de PHP de WebEstilo.com -->


<html>
<head>
<title>Ejemplo de PHP</title>
</head>
<body>
<?php
echo strlen("12345"),"<br>";
$palabras=split(" ","Esto es una prueba");
for($i=0;$palabras[$i];$i++)
echo $palabras[$i],"<br>";
$resultado=sprintf("8x5 = %d <br>",8*5);
echo $resultado,"<br>";
echo substr("Devuelve una subcadena de otra",9,3),"<br><br>";
if (chop("Cadena \n\n ") == "Cadena")
echo "Iguales<br><br>";
echo strpos("Busca la palabra dentro de la frase", "palabra"),"<br><br>";
echo str_replace("verde","rojo","Un pez de color verde, como verde es la
hierba."),"<br>";
?>
</body>
</html>

Funciones

Funciones
El uso de funciones nos da la capacidad de agrupar varias instrucciones bajo
un solo nombre y poder llamarlas a estas varias veces desde diferentes sitios,
ahorrndonos la necesidad de escribirlas de nuevo.
<?php
function Nombre(parametro1, parametro2...)
{
instruccin1;
instruccin2;
instruccin3;
instruccin4;
return valor_de_retorno;
}
?>
Opcionalmente podemos pasarle parmetros a las funciones que se trataran
como variable locales y as mismo podemos devolver un resultado con la
instruccin return valor; Esto produce la terminacin de la funcin retornando
un valor.
<!-- Manual de PHP de WebEstilo.com -->
<html>
<head>
<title>Ejemplo de PHP</title>
</head>
<body>
<?php
function media_aritmetica($a, $b)
{
$media=($a+$b)/2;
return $media;
}
echo media_aritmetica(4,6),"<br>";
echo media_aritmetica(3242,524543),"<br>";
?>
</body>
</html>

Librera
El uso de libreras es tremendamente til, nos permiten agrupar varias
funciones y variables en un mismo fichero, de manera que luego podemos
incluir esta librera en distintas pginas y disponer de esas funciones
fcilmente.
<!-- Manual de PHP de WebEstilo.com -->
<?php
function CabeceraPagina()
{
?>
<FONT SIZE="+1">Esta cabecera estar en todas sus
pginas.</FONT><BR>
<hr>
<?
}
function PiePagina()
{
?>
<hr>
<FONT SIZE="-1">Este es el pie de pgina.</FONT><BR>
Autor: Joaquin Gracia
<?
}
?>
Ahora vamos a crear 2 pginas que usan la librera definida anteriormente para
conseguir que las dos paginas tengan la misma cabecera y pie de pagina.
La instruccin para incluir una librera en nuestra pgina es include("nombre de
librera")
<!-- Manual de PHP de WebEstilo.com -->
<html>
<head>
<title>Ejemplo de PHP</title>
</head>
<body>
<?php include("libreria01.phtml") ?>
<?php CabeceraPagina(); ?>
Pgina 1
<BR><BR><BR><BR><BR>
Contenido blalbl blalb alb<BR><BR>

ms cosas...<BR><BR>
fin<BR><BR>
<?php PiePagina(); ?>
</body>
</html>
<!-- Manual de PHP de WebEstilo.com -->
<html>
<head>
<title>Ejemplo de PHP</title>
</head>
<body>
<?php include("libreria01.phtml") ?>
<?php CabeceraPagina(); ?>
Esta es otra pgina<BR><BR>
completamente distinta<BR><BR>
pero comparte el pie y la cabecera con la otra.<BR><BR>
<?php PiePagina(); ?>
</body>
</html>

Procesado de Formularios

Envo y recepcin de datos


El lenguaje PHP nos proporciona una manera sencilla de manejar formularios,
permitindonos de esta manera procesar la informacin que el usuario ha
introducido.
Al disear un formulario debemos indicar la pgina PHP que procesar el
formulario, as como en mtodo por el que se le pasar la informacin a la
pgina.
<!-- Manual de PHP de WebEstilo.com -->
<html>
<head>
<title>Ejemplo de PHP</title>
</head>
<body>
<H1>Ejemplo de procesado de formularios</H1>
Introduzca su nombre:
<FORM ACTION="procesa.phtml" METHOD="GET">
<INPUT TYPE="text" NAME="nombre"><BR>
<INPUT TYPE="submit" VALUE="Enviar">
</FORM>
</body>
</html>
Al pulsar el botn Enviar el contenido de cuadro de texto es enviado a la pgina
que indicamos en el atributo ACTION de la etiqueta FORM.
En versiones anteriores a 4.2.0 PHP creaba una variable por cada elemento del
FORM, esta variable creada tena el mismo nombre que el cuadro de texto de
la pgina anterior y el valor que habamos introducido. Pero por razones de
seguridad a partir de entonces para acceder a las variables del formulario hay
que usar el array de parmetros $_POST[] o $_GET[] dependiendo del mtodo
usado para enviar los parmetros.
En este ejemplo se ha creado una entrada en el array $_GET[] con el ndice
'nombre' y con el valor que haya introducido el navegante.
<!-- Manual de PHP de WebEstilo.com -->
<html>
<head>
<title>Ejemplo de PHP</title>
</head>
<body>
<H1>Ejemplo de procesado de formularios</H1>
El nombre que ha introducido es: <?php echo $_GET['nombre'] ?>
<br>

</body>
</html>

Method GET y POST


En la pgina anterior hemos comentado que los datos de un formulario se
enva mediante el mtodo indicado en el atributo METHOD de la etiqueta
FORM, los dos mtodos posibles son GET y POST.
La diferencia entre estos dos mtodos radica en la forma de enviar los datos a
la pgina, mientras que el mtodo GET enva los datos usando la URL, el
mtodo POST los enva por la entrada estndar STDIO.
<!-- Manual de PHP de WebEstilo.com -->
<html>
<head>
<title>Ejemplo de PHP</title>
</head>
<body>
<H1>Ejemplo de procesado de formularios</H1>
<FORM ACTION="procesa2.phtml" METHOD="GET">
Introduzca su nombre:<INPUT TYPE="text" NAME="nombre"><BR>
Introduzca sus apellidos:<INPUT TYPE="text" NAME="apellidos"><BR>
<INPUT TYPE="submit" VALUE="Enviar">
</FORM>
</body>
</html>
<!-- Manual de PHP de WebEstilo.com -->
<html>
<head>
<title>Ejemplo de PHP</title>
</head>
<body>
<H1>Ejemplo de procesado de formularios</H1>
<FORM ACTION="procesa2.phtml" METHOD="POST">
Introduzca su nombre:<INPUT TYPE="text" NAME="nombre"><BR>
Introduzca sus apellidos:<INPUT TYPE="text" NAME="apellidos"><BR>
<INPUT TYPE="submit" VALUE="Enviar">
</FORM>
</body>
</html>
procesa2.phtml
<!-- Manual de PHP de WebEstilo.com -->
<html>
<head>
<title>Ejemplo de PHP</title>
</head>
<body>
<H1>Ejemplo de procesado de formularios</H1>
El nombre que ha introducido por GET es: <?php echo $_GET['nombre']," ",

$_GET['apellidos'] ?><br>
El nombre que ha introducido por POST es: <?php echo $_POST['nombre']," ",
$_POST['apellidos'] ?>
<br>
</body>
</html>
El resultado final es el mismo, solo que con el mtodo GET podemos ver los
parmetros pasados ya que estn codificados en la URL.

Envio de emails
PHP nos ofrece la posibilidad de enviar emails de una manera sencilla y fcil,
para ello el lenguaje nos proporciona la instruccin mail( )
<?php
mail(destinatario, tema, texto del mensaje);
?>
En el parmetro destinatario pondremos la direccin de email a donde se
enviar el mensaje, en el parmetro tema el tema o subject del mensaje y el
parmetro texto del mensaje el cuerpo del mensaje en formato texto plano.
Existe una sintaxis extendida de la instruccin mail( ) que nos permite aadir
informacin adicional a la cabecera del mensaje.
<?php
mail(destinatario, tema, texto del mensaje, informacin adicional de
cabecera);
?>
En la informacin de cabecera podremos incluir parmetros adicionales al
mensaje como Reply-To:, From:, Content-type:... que nos permiten tener un
mayor control sobre el mensaje.
<!-- Manual de PHP de WebEstilo.com -->
<html>
<head>
<title>Ejemplo de PHP</title>
</head>
<body>
<H1>Ejemplo de envio de email</H1>
Introduzca su direccion de email:
<FORM ACTION="email.phtml" METHOD="GET">
<INPUT TYPE="text" NAME="direccion"><BR><BR>
Formato: <BR>
<INPUT TYPE="radio" NAME="tipo" VALUE="plano" CHECKED> Texto
plano<BR>
<INPUT TYPE="radio" NAME="tipo" VALUE="html"> HTML<BR><BR>
<INPUT TYPE="submit" VALUE="Enviar">
</FORM>
</body>
</html>

email.phtml

<!-- Manual de PHP de WebEstilo.com -->


<html>
<head>
<title>Ejemplo de PHP</title>
</head>
<body>
<H1>Ejemplo de envio de email</H1>
<?
$direccion=$_GET['direccion'];
$tipo=$_GET['tipo'];
if ($direccion!=""){
if ($tipo=="plano"){
// Envio en formato texto plano
mail($direccion,"Ejemplo de envio de email","Ejemplo de envio de email de
texto plano\n\nWebEstilo.\nhttp://www.webestilo.com/\n Manuales para
desarrolladores web.\n","FROM: Pruebas <webmaster@hotmail.com>\n");
} else {
// Envio en formato HTML
mail($direccion,"Ejemplo de envio de
email","<html><head><title>WebEstilo. Manual de
PHP</title></head><body>Ejemplo de envio de email de
HTML<br><br>WebEstilo.<br>http://www.webestilo.com/<br>
<u>Manuales</u> para <b>desarrolladores</b> web.</body></html>","Contenttype: text/html\n", "FROM: Pruebas <webmaster@hotmail.com>\n");
}
echo "Se ha enviado un email a la direccion: ",$direccion," en formato <b>",
$tipo,"</b>.";
}
?>
<br>
</FORM>
</body>
</html>

Bases de Datos

Crear la base de datos


Para la realizacin de este curso sobre PHP con acceso a base de datos
hemos elegido la base de datos MySQL por ser gratuita y por ser tambin la
mas empleada en entornos UNIX, para lo cual el servidor donde tenemos
alojadas las pginas nos tiene que proporcionar herramientas para crearla o
acceso al Telnet para que la creemos por nosotros mismos.
El comando para crear una base de datos MySQL es el siguiente:
mysqladmin -u root create base_datos
Con este comando conseguimos crear la una base de datos en el servidor de
bases de datos de nuestro servidor.
Una vez conseguido esto debemos crear las tablas en la base de datos, la
descripcin de las tablas contienen la estructura de la informacin que
almacenaremos en ellas. Para lo cual usaremos en lenguaje de consultas SQL
comn para todas las bases de datos relacionales.
En este ejemplo creamos una tabla llamada prueba con 3 campos: un campo
identificador, que nos servir para identificar unvocamente una fila con el valor
de dicho campo, otro campo con el nombre de una persona y por ltimo un
campo con el apellido de la persona.
Para crear la tabla puede usar la herramienta de administracin de MySQL de
su servidor web o puede escribir un fichero de texto con el contenido de la
sentencia SQL equivalente y luego decirle al motor de base de datos que la
ejecute con la siguiente instruccin:
mysql -u root base_datos <prueba.sql
prueba.sql
CREATE TABLE prueba (
ID_Prueba int(11) DEFAULT '0' NOT NULL auto_increment,
Nombre varchar(100),
Apellidos varchar(100),
PRIMARY KEY (ID_Prueba),
UNIQUE ID_Prueba (ID_Prueba)
);

Conexin a la base de datos


Una vez que tenemos creada la base de datos en nuestro servidor, el siguiente
paso es conectarnos a la misma desde una pgina PHP. Para ello PHP nos
proporciona una serie de instrucciones para acceder a bases de datos MySQL.
<!-- Manual de PHP de WebEstilo.com -->
<html>
<head>
<title>Ejemplo de PHP</title>
</head>
<body>
<?php
function Conectarse()
{
if (!($link=mysql_connect("localhost","usuario","Password")))
{
echo "Error conectando a la base de datos.";
exit();
}
if (!mysql_select_db("base_datos",$link))
{
echo "Error seleccionando la base de datos.";
exit();
}
return $link;
}
$link=Conectarse();
echo "Conexin con la base de datos conseguida.<br>";
mysql_close($link); //cierra la conexion
?>
</body>
</html>
Al ejecutar la instruccin mysql_connect creamos un vnculo entre la base de
datos y la pagina PHP, este vnculo ser usado posteriormente en las consultas
que hagamos a la base de datos.
Finalmente, una vez que hemos terminado de usar el vnculo con la base de
datos, lo liberaremos con la instruccin mysql_close para que la conexin no
quede ocupada.

Consultas a la base de datos


Una vez que nos hemos conectado con el servidor de bases de datos, ya
podemos realizar consultas a las tablas de la base de datos.
Para facilitar la programacin hemos separado la funcin de conexin en una
librera a parte, de tal manera que la incluiremos en todas las pginas que
accedan a la base de datos.
conex.phtml
<!-- Manual de PHP de WebEstilo.com -->
<?php
function Conectarse()
{
if (!($link=mysql_connect("localhost","usuario","Password")))
{
echo "Error conectando a la base de datos.";
exit();
}
if (!mysql_select_db("base_datos",$link))
{
echo "Error seleccionando la base de datos.";
exit();
}
return $link;
}
?>
<!-- Manual de PHP de WebEstilo.com -->
<html>
<head>
<title>Ejemplo de PHP</title>
</head>
<body>
<H1>Ejemplo de uso de bases de datos con PHP y MySQL</H1>
<?php
include("conex.phtml");
$link=Conectarse();
$result=mysql_query("select * from prueba",$link);
?>
<TABLE BORDER=1 CELLSPACING=1 CELLPADDING=1>
<TR><TD>&nbsp;Nombre</TD><TD>&nbsp;Apellidos&nbsp;</TD></TR>
<?php
while($row = mysql_fetch_array($result)) {
printf("<tr><td>&nbsp;%s</td><td>&nbsp;%s&nbsp;</td></tr>",
$row["Nombre"],$row["Apellidos"]);
}
mysql_free_result($result);
mysql_close($link);

?>
</table>
</body>
</html>
En este ejemplo hemos utilizado 3 instrucciones nuevas: mysql_query,
mysql_fetch_array y mysql_free_result. Con la instruccin mysql_query hemos
hecho una consulta a la base de datos en el lenguaje de consultas SQL, con la
instruccin mysql_fetch_array extraemos los datos de la consulta a un array y
con mysql_free_result liberamos la memoria usada en la consulta.

Insertar registros
Hasta ahora nos hemos conectado a una base de datos y hemos hecho
consultas a la misma, ahora presentaremos como introducir nuevo registros en
la base de datos.
Para ello usaremos un formulario y en el ACTION del FORM <FORM
ACTION="programaPHP"> indicaremos que debe ser procesado una pagina
PHP, esta pgina lo que har ser introducir los datos del formulario en la base
de datos.
ejem07d.phtml
<!-- Manual de PHP de WebEstilo.com -->
<html>
<head>
<title>Ejemplo de PHP</title>
</head>
<body>
<H1>Ejemplo de uso de bases de datos con PHP y MySQL</H1>
<FORM ACTION="procesar.phtml">
<TABLE>
<TR>
<TD>Nombre:</TD>
<TD><INPUT TYPE="text" NAME="nombre" SIZE="20"
MAXLENGTH="30"></TD>
</TR>
<TR>
<TD>Apellidos:</TD>
<TD><INPUT TYPE="text" NAME="apellidos" SIZE="20"
MAXLENGTH="30"></TD>
</TR>
</TABLE>
<INPUT TYPE="submit" NAME="accion" VALUE="Grabar">
</FORM>
<hr>
<?php
include("conex.phtml");
$link=Conectarse();
$result=mysql_query("select * from prueba",$link);
?>
<TABLE BORDER=1 CELLSPACING=1 CELLPADDING=1>
<TR><TD>&nbsp;<B>Nombre</B></TD>
<TD>&nbsp;<B>Apellidos</B>&nbsp;</TD></TR>
<?php
while($row = mysql_fetch_array($result)) {
printf("<tr><td>&nbsp;%s</td> <td>&nbsp;%s&nbsp;</td></tr>",
$row["Nombre"], $row["Apellidos"]);
}

mysql_free_result($result);
mysql_close($link);
?>
</table>
</body>
</html>
procesar.phtml
<?php
include("conex.phtml");
$link=Conectarse();
$nombre=$_GET['nombre'];
$apellidos=$_GET['apellidos'];
mysql_query("insert into prueba (Nombre,Apellidos) values
('$nombre','$apellidos')",$link);
header("Location: ejem07d.phtml");
?>
La primera pgina PHP ejem07d.phtml es un formulario que nos permite
introducir nombre y apellido para aadirlo a la base de datos, seguido de una
consulta que nos muestra el contenido de la tabla prueba. El formulario llama a
la pagina procesar.phtml que aadir los datos a la tabla.
La segunda pgina procesar.phtml se conecta a la base de datos y aade un
nuevo registro con la instruccin insert del lenguaje de base de datos SQL. Una
vez el registro se ha aadido se vuelve a cargar la pgina ejem07d.phtml

Borrar registros
Y finalmente, para cerrar el ciclo, nos queda el borrado de registros. El borrado
de registros el uno de los procesos ms sencillos.
Para indicar que elemento vamos a borrar hemos usado un enlace a la pgina
borra.phtml pasndole el ID_Prueba de cada registro, de esta manera la pgina
borra.phtml sabe que elemento de la tabla ha de borrar.
ejem07e.phtml
<!-- Manual de PHP de WebEstilo.com -->
<html>
<head>
<title>Ejemplo de PHP</title>
</head>
<body>
<H1>Ejemplo de uso de bases de datos con PHP y MySQL</H1>
<?php
include("conex.phtml");
$link=Conectarse();
$result=mysql_query("select * from prueba",$link);
?>
<TABLE BORDER=1 CELLSPACING=1 CELLPADDING=1>
<TR><TD>&nbsp;<B>Nombre</B></TD>
<TD>&nbsp;<B>Apellidos</B>&nbsp;</TD>
<TD>&nbsp;<B>Borrar</B>&nbsp;</TD></TR>
<?php
while($row = mysql_fetch_array($result)) {
printf("<tr><td>&nbsp;%s</td><td>&nbsp;%s&nbsp;</td><td><a
href=\"borra.phtml?id=%d\">Borra</a></td></tr>", $row["Nombre"],
$row["Apellidos"],$row["ID_Prueba"]);
}
mysql_free_result($result);
mysql_close($link);
?>
</table>
</body>
</html>
borra.phtml
<?php
include("conex.phtml");
$link=Conectarse();
$id=$_GET['id'];
mysql_query("delete from prueba where ID_Prueba = $id",$link);

header("Location: ejem07e.phtml");
?>
La pgina borra.phtml se conecta a la base de datos y borra el registro indicado
en la variable $id que ha sido pasado desde la pgina ejem07e.phtml. Una vez
el registro se ha borrado se vuelve a cargar la pgina ejem07e.phtml

Seguridad

Restringir el acceso
En esta seccin vamos a explicar cmo podemos restringir el acceso a segn
qu pginas, para que solo las personas autorizadas puedan acceder a ciertas
partes del nuestro sitio web.
Atencin: El acceso restringido a pginas usando las variables globales
$PHP_AUTH_USER, $PHP_AUTH_PW y $PHP_AUTH_TYPE solo funciona si
PHP ha sido instalado como un mdulo de Apache, si ha sido instalado como
un CGI los ejemplos de sta seccin no funcionarn.
Para conseguir la autentificacin en las pginas usaremos el sistema de
autentificacin del protocolo HTTP, este sistema se basa en las variables
globales $PHP_AUTH_USER y $PHP_AUTH_PW.

$PHP_AUTH_USER. Nombre de usuario introducido.


$PHP_AUTH_PW. Contrasea introducida.

Para que el navegador nos muestre la ventana de peticin de nombre de


usuario y contrasea basta con enviar la siguiente cabecera:
<?php // Manual de PHP de WebEstilo.com
if (!isset($PHP_AUTH_USER)) {
header('WWW-Authenticate: Basic realm="Acceso restringido"');
header('HTTP/1.0 401 Unauthorized');
echo 'Authorization Required.';
exit;
}
else {
echo "Ha introducido el nombre de usuario: $PHP_AUTH_USER<br>";
echo "Ha introducido la contrasea: $PHP_AUTH_PW<br>";
}
?>
Esto provoca que se muestre la ventana de nombre de usuario y contrasea y
los datos introducidos se asignen a las variables $PHP_AUTH_USER y
$PHP_AUTH_PW.
A partir de aqu realizaremos las comprobaciones necesarias para asegurarnos
que los datos introducidos son los correctos.
En el siguiente ejemplo pediremos autorizacin y comprobaremos si el nombre
de usuario es Joe y la contrasea 123, si es as tendremos acceso al resto de
la pgina.
<?php // Manual de PHP de WebEstilo.com
if (($PHP_AUTH_USER!="Joe") || ($PHP_AUTH_PW!="123")) {
header('WWW-Authenticate: Basic realm="Acceso restringido"');

header('HTTP/1.0 401 Unauthorized');


echo 'Authorization Required.';
exit;
}
?>
<!-- Manual de PHP de WebEstilo.com -->
<html>
<head>
<title>Ejemplo de PHP</title>
</head>
<body>
Ha conseguido el acceso a la <B>zona restringida</B>.
</body>
</html>

Distincin de usuarios
En la anterior pgina todo el mundo que tena acceso a la parte restringida
entraba con el mismo nombre de usuario y contrasea, esto evidentemente no
es una buena solucin, es mejor que cada persona tenga un nombre de
usuario y contrasea, ya que de esta forma podemos inhabilitar a un usuario
sin ver comprometida la seguridad de nuestro sitio.
En esta pgina veremos la forma de realizar esto, teniendo un fichero separado
con los nombres de usuario y las contraseas vlidas. Dicho fichero podra
tener el siguiente formato: nombre_de_usuario|contrasea. Por ejemplo:
passwords.txt
Joe|1235
Pedro|qwer
Noe|Gty45e
kermit|rwe4v
En este ejemplo se pide la autorizacin al comienzo de la pgina si no se ha
establecido con anterioridad y se comprueba con el fichero de contraseas que
hemos llamado passwords.txt, si el nombre de usuario y contrasea coincide
con alguna entrada del fichero se nos permite ver el resto de la pgina.
<?php // Manual de PHP de WebEstilo.com
if (!isset($PHP_AUTH_USER)) {
header('WWW-Authenticate: Basic realm="Acceso restringido"');
header('HTTP/1.0 401 Unauthorized');
echo 'Authorization Required.';
exit;
}
$fich = file("passwords.txt");
$i=0; $validado=false;
while ($fich[$i] && !$validado) {
$campo = explode("|",$fich[$i]);
if (($PHP_AUTH_USER==$campo[0]) &&
($PHP_AUTH_PW==chop($campo[1]))) $validado=true;
$i++;
}
if (!$validado) {
header('WWW-Authenticate: Basic realm="Acceso restringido"');
header('HTTP/1.0 401 Unauthorized');
echo 'Authorization Required.';
exit;
}
?>
<!-- Manual de PHP de WebEstilo.com -->
<html>

<head>
<title>Ejemplo de PHP</title>
</head>
<body>
Ha conseguido el acceso a la <B>zona restringida</B> con el usuario <?php
echo $PHP_AUTH_USER?>.
</body>
</html>

Sesiones

Qu son las sesiones?


Por: Jose Valle
Si existe una consulta repetida en las listas de PHP, es la relativa al uso de las
sesiones. El uso de sesiones es un mtodo ampliamente extendido en
cualquier aplicacin de cierta entidad. Bsicamente una sesin es la secuencia
de pginas que un usuario visita en un sitio web. Desde que entra en nuestro
sitio, hasta que lo abandona.
El trmino sesin en PHP, session en ingls, se aplica a esta secuencia de
navegacin, para ello crearemos un identificador nico que asignamos a cada
una de estas sesiones de navegacin. A este identificador de sesin se le
denomina, comnmente, como la sesin.
El proceso en cualquier lenguaje de programacin podra ser algo as:
Existe una sesin?
Si existe la retomamos
Si no existe creamos una nueva
Generar un identificador nico
Y para que no perdamos el hilo de la navegacin del usuario deberemos
asociar esta sesin a todas las URLs y acciones de formulario. Podemos
tambin crear un cookie que incluya el identificador de sesin, pero es
conveniente recordar que la disponibilidad o no de las cookies depende del
usuario, y no es conveniente fiarse de lo que un usuario pueda o no tener
habilitado.
Lo contado hasta ahora es teora pura y es aplicable a cualquier lenguaje de
programacin C, Perl, etc. Los que programamos en PHP4 tenemos la suerte
de que toda la gestin de sesiones la hace el mismo PHP.
Por lo tanto lo comentado a partir de aqu es solo aplicable a PHP4. Si an
desarrollas PHP3, tendrs que crear tus propias libreras de gestin de
sesiones o recurrir a alguna de las existentes, como la de PHPLIB .

Inicializacin de la sesin
Por: Jose Valle
Para utilizar sesiones en PHP lo primero es inicializarlas. Podemos hacerlo
explcitamente, mediante la funcin session_start(), o al registrar una variable
en una sesin mediante session_register('miVariable'). En ambos casos se crea
una nueva sesin, si no existe, o se retoma la sesin actual. Veamos un
sencillo ejemplo:
<?php // Manual de PHP de WebEstilo.com
session_start();
echo "He inicializado la sesin";
?>
Esta es la forma ms bsica, si el usuario tiene los cookies activados, PHP
habr insertado de forma automtica la sesin y sta ser pasada de una
pgina a otra sin hacer nada ms. Desde un punto de vista prctico la sesin
es operativa, pero no vemos nada. Podemos obtener la sesin en cualquier
momento mediante la funcin session_id(). Inserta en las sucesivas pginas la
siguiente lnea para ver si la sesin est disponible:
<?php // Manual de PHP de WebEstilo.com
session_start();
echo 'La sesin actual es: '.session_id();
?>
En este caso session_start() comprueba en los cookies que existe una sesin y
continua con ella, session_id() devuelve el identificador actual.

Ejemplo prctico
Por: Jose Valle
Veamos otro ejemplo que, tal vez, te lo aclare un poco ms:
<?php // Manual de PHP de WebEstilo.com
session_register('contador');
echo '<a href="'.$PHP_SELF.'?'.$SID.'">Contador vale: '.++
$_SESSION['contador']. '</a>';
?>
Como dije anteriormente la sesin se crea o recoge mediante session_start(), o
tambin cuando se registra una variable de sesin mediante session_register().
Si no has utilizado nunca las sesiones, el concepto de variable de sesin,
puede resultar un poco abstracto. Bsicamente es una variable, como
cualquiera de las que gestiona PHP4, pero que reside en un espacio especfico
en el servidor, junto con el identificador de sesin, y que pertenece nicamente
a un usuario.
En nuestro ejemplo anterior, registramos la variable $contador en la primera
lnea del script. En la segunda lnea, entre otras cosas, cada vez que
recarguemos la pgina o hagamos click sobre el enlace, el valor de $contador
se incrementar en 1.
En esta lnea hacemos uso de la variable reservada $PHP_SELF, que hace
referencia al propio script en ejecucin y una constante propia de PHP4, $SID,
que contiene el nombre de la sesin y el identificador de la misma.
Podemos averiguar tambin el nombre de la sesin, o modificarlo, mediante la
funcin session_name(). Veamos una prueba prctica:
<?php // Manual de PHP de WebEstilo.com
session_name('misesion');
session_register('contador');
echo '<a href="'.$PHP_SELF.'?'.SID.'">Contador vale: '.++
$_SESSION['contador'].'</a><br>';
echo 'Ahora el nombre es '.session_name().' y la sesin '.$misesion.'<br>';
?>
La asignacin del nombre de sesin debe realizarse antes que ninguna otra
funcin con sesiones, antes que session_start() o session_register().

Error comn
Por: Jose Valle
Uno de los errores ms comunes cuando se utilizan sesiones es dejar lneas en
blanco antes de la inicializacin de PHP o enviar alguna salida a la pantalla.
Para probarlo crea una lnea en blanco o con cualquier cosa antes de <?php.
Si tienes los cookies activados, te encontrars un error de este tipo:
Warning: Cannot send session cookie - headers already sent by (output started
at /home/session.php:2) in /home/session.php on line 4
PHP est informando de que no puede activar los cookies en el navegador del
usuario, porque las cabeceras ya han sido enviadas. Simplemente por la
existencia de una lnea en blanco. Como medida prctica, no dejes espacios ni
antes del inicio del script, ni despus de la finalizacin.
Te ahorrar muchos disgustos.
Si despus de todo lo comentado an no entiendes para que sirven las
sesiones, veamos un ejemplo prctico. Imagina que quisieras crear un sistema
de cesta de la compra...

Carrito de compra
Por: Jose Valle
Si despus de todo lo comentado an no entiendes para que sirven las
sesiones, veamos un ejemplo prctico. Imagina que quisieras crear un sistema
de cesta de la compra, en su forma bsica podra ser algo as:
<?php // Manual de PHP de WebEstilo.com
session_start();
session_register('itemsEnCesta');
$item=$_POST['item'];
$cantidad=$_POST['cantidad'];
$itemsEnCesta=$_SESSION['itemsEnCesta'];
if ($item){
if (!isset($itemsEnCesta)){
$itemsEnCesta[$item]=$cantidad;
}else{
foreach($itemsEnCesta as $k => $v){
if ($item==$k){
$itemsEnCesta[$k]+=$cantidad;
$encontrado=1;
}
}
if (!$encontrado) $itemsEnCesta[$item]=$cantidad;
}
}
$_SESSION['itemsEnCesta']=$itemsEnCesta;
?>
<html>
<body>
<tt>
<form action="<?=$PHP_SELF."?".$SID?>" method="post">
Dime el producto <input type="text" name="item" size="20"><br>
Cuantas unidades <input type="text" name="cantidad" size="20"><br>
<input type="submit" value="Aadir a la cesta"><br>
</form>
<?
if (isset($itemsEnCesta)){
echo'El contenido de la cesta de la compra es:<br>';
foreach($itemsEnCesta as $k => $v){
echo 'Artculo: '.$k.' ud: '.$v.'<br>';
}
}
?>
</tt>
</body>
</html>

Una breve explicacin. En la lnea 4 comprobamos si el usuario ha pasado


algn artculo, desde el formulario. En la 5 si el array itemsEnCesta no existe,
lo creamos con el nuevo producto y la cantidad indicada. Si el array existe
recorremos su contenido, entre las lneas 8 y 13, y si encontramos un artculo
igual, aadimos la cantidad en la lnea 10. Si no lo encontramos, es un nuevo
artculo, por lo tanto, aadimos el nuevo producto con la correspondiente
cantidad a itemsEnCesta en la lnea 14.
Y a continuacin imprimimos el formulario y los resultados, si los hubiera, a
partir de la lnea 18, donde empieza el HTML.
Te imaginas las posibilidades de un sistema de almacenamiento de
informacin de estas caractersticas?. No necesitas ficheros, ni bases de datos,
ni tienes que andar pasando valores de una pgina a otra. PHP va gestionando
estos datos por nosotros, hasta el momento en que decidamos almacenar la
informacin donde ms nos interese.
Estas son las funcionalidades bsicas de las sesiones, espero que te haya
resultado ilustrativo y no olvides consultar el resto de funciones asociadas al
uso de sesiones en el manual de PHP.

Cookies

Qu son las cookies?


Por: Carlos Galls Lahoz y Joaquin Gracia.
La principal utilidad de las cookies (galletas) es la de solventar el problema de
la falta de estado en la navegacin a travs de las paginas web.
Con las cookies, pequeas porciones de informacin se quedan registradas en
el navegador permitiendo identificar a este a travs de diferentes pginas de un
mismo sitio e incluso durante visitas entre distintos das.
Realmente las cookies no son mas que cadenas de texto que son enviadas
desde el servidor al cliente (navegador) y almacenadas en este, luego el
navegador enva estas cookies al servidor permitiendo as la identificacin del
cliente en el servidor.

Funcionamiento
La cookie es enviada al navegador desde el servidor y si este la acepta
permanece en l.

Las pginas piden la cookie al navegador...

El navegador las enva, permitiendo la identificacin del usuario por parte del
servidor.

A continuacin vamos a ver como usar las cookies para nuestro beneficio.

Cmo usar las cookies


Por: Carlos Galls Lahoz y Joaquin Gracia.
El manejo de cookies en PHP se realiza mediante el uso de la funcin
setcookie, esta funcin esta disponible a partir de la versin 3 de PHP.
int setcookie (string Nombre [, string Valor [, int Expire [, string Path [, string
Dominio [, int Secure]]]]])
Setcookie() define una cookie que es enviada junto con el resto de la
informacin de la cabecera(header). Las cookies deben ser enviadas antes de
cualquier tag de html, por lo tanto deberemos realizar la llamada a estas
funciones antes de cualquier tag <HTML> o <HEAD>. Esta es una restriccin
de las cookies no de PHP.
Todos los argumentos excepto el nombre son opcionales.
Nombre. Nombre de la cookie. Si creamos una cookie solamente con el
nombre, en el cliente se eliminara la cookie que exista con ese nombre.
Tambin podemos reemplazar cualquier argumento con una cadena
vaca ("").
Value. Valor que almacenar la cookie en el cliente.
Expire. El argumento expire es un argumento entero que indica la hora
en que se eliminara la cookie en el formato de hora que devuelven las
funciones UNIX time() y mktime(). Normalmente se usa time() + N.
segundos de duracin, para especificar la duracin de una cookie.
Path. Subdirectorio en donde tiene valor la cookie.
Dominio. Dominio en donde tiene valor la cookie. Si ponemos como
dominio www.domain.com la cookie no se transmite para domain.com,
mientras que si ponemos domain.com la cookie se transmite tanto para
domain.com como para www.domain.com
Secure. El argumento secure indica que la cookie solo se transmitir a
travs de una conexin segura HTTPS.
Ejemplo
setcookie("usuario", "Luis", time()+3600,"/","webestilo.com");
En este ejemplo establecemos una cookie de nombre usuario que contiene el
valor Luis, que dura 1 hora (3600 segundos) vlida para todo el dominio
webestilo.com

Ejemplo de uso de cookies


Por: Carlos Galls Lahoz y Joaquin Gracia.
En este ejemplo vamos a ver como establecer una cookie y cmo se recupera
el valor establecido. Para ello pediremos al usuario que introduzca su nombre,
que guardaremos en una cookie.
Primero pedimos al usuario que introduzca el valor de su nombre, usamos un
formulario que procesar la pgina procesar_cookie.phtml.
<!-- Manual de PHP de WebEstilo.com -->
<html>
<head>
<title>Ejemplo de PHP</title>
</head>
<body>
<H1>Ejemplo de uso de cookie</H1>
Introduzca su nombre:
<FORM ACTION="procesar_cookie.phtml" METHOD="GET">
<INPUT TYPE="text" NAME="nombre"><BR>
<INPUT TYPE="submit" VALUE="Enviar">
</FORM>
</body>
</html>
Se establece la cookie ejemusuario con el valor introducido anteriormente, y
cuya duracin es una hora.
<?php // Manual de PHP de WebEstilo.com
setcookie("ejemusuario", $_GET['nombre'], time()+3600,"/","");
?>
<html>
<head>
<title>Ejemplo de PHP</title>
</head>
<body>
<H1>Ejemplo de uso de cookie</H1>
Se ha establecido una cookie de nombre <b>ejemusuario</b> con el valor:
<b><? print $_GET['nombre']; ?></b> que ser vlida durante 1 hora.
</body>
</html>
En este ejemplo vemos lo fcil que es recuperar el valor de la cookie
establecida anteriormente.
<!-- Manual de PHP de WebEstilo.com -->
<html>

<head>
<title>Ejemplo de PHP</title>
</head>
<body>
<H1>Ejemplo de uso de cookie</H1>
Se ha establecido la cookie de nombre <b>ejemusuario</b> vale: <b><? print
$_COOKIE['ejemusuario']; ?></b>
</body>
</html>

PHP Instalacin PHP MySQL Instalacin y Configuracin

Instalacin de Apache + PHP +


MySQL 1/3
Por: Carlos Galls Lahoz.
C.E.S. Fundacin San Valero.

Instalacin del servidor Apache


A continuacin vamos a explicar la instalacin de un servidor Apache en un
sistema operativo Windows 98. Debemos tener en cuenta que esta versin es
una versin beta de calidad. Esto significa que no ofrece la estabilidad y
seguridad que la versin de unix, de hecho existen numerosos errores e
inconsistencias, aun as es suficiente para realizar pruebas en nuestro
ordenador.
Comencemos con la instalacin:
El archivo de instalacin para Windows est en
http://www.apache.org/dist/httpd/binaries/win32/ , una vez que lo tengamos lo
podemos copiar en nuestro escritorio y lo ejecutamos haciendo doble click
sobre l.
Entraremos en un programa de instalacin standard de aplicaciones win32, as
que nos limitaremos a elegir las opciones que nos muestre el programa de
instalacin, es muy sencillo ya que solo pide rutas de instalacin de los
archivos y se pueden dejar las que vienen por defecto.
Si no elegimos un directorio distinto Apache se instalar en:
C:\Archivos de programa\Apache Group\Apache
Una vez terminada la instalacin vamos al directorio donde tenemos instalado
el servidor, en el directorio "\conf\" es donde se alojan los archivos de
configuracin del servidor. Dentro de este directorio se encuentra el archivo
"httpd.conf" este es el archivo de configuracin que Apache utiliza al ejecutarse.
Para que Apache funcione correctamente deberemos modificar el archivo
anterior, para realizar esto deberemos abrirlo con un editor de texto (por
ejemplo WordPad), y guardarlo como archivo de texto plano. Una vez abierto el
archivo deberemos buscar la lnea que ponga "ServerName". Lo ms probable
es que encontremos la siguiente lnea:
#ServerName "nombre de servidor por defecto"
La debemos sustituir por la siguiente:
ServerName http://

Para poner en marcha el servidor deberemos ir al escritorio de Windows, el


servidor se encontrar en la siguiente ubicacin del men de inicio "Inicio|
Apache Web Server|star Apache", o por el contrario en la ubicacin que
hayamos indicado durante la instalacin. Al ejecutarlo se nos quedar abierta
una ventana MS-DOS en la cual estar corriendo el servidor.
Con el servidor en funcionamiento, comprobaremos si funciona correctamente,
para ello abriremos un explorador como puede ser Netscape Communicator o
Internet Explorer y en la barra de direcciones teclearemos:
http://127.0.0.1 o http://localhost o http://"nombre de nuestro PC"
Si tenemos instalado correctamente Apache deberamos ver la pgina que
aparece en la fotografa inferior. Esta es la pgina de chequeo que por defecto
incluye Apache. En caso de no verla es que no hemos realizado correctamente
algn paso anterior.

Por defecto las pginas estarn alojadas en la siguiente direccin de nuestra


mquina:
C:\Directorio de instalacin de Apache\htdocs\
Por defecto tenemos configurado Apache para que abra el archivo index.html
que se encuentre en el directorio que indiquemos. Por lo tanto cuando en el
navegador pongamos la direccin "http://127.0.0.1" el explorador cargar la
pgina index.html del directorio C:\Directorio de instalacin de Apache\htdocs\.
Si tenis alguna duda sobre todo lo dicho o queris saber algo ms sobre
Apache, en el directorio htdocs\manual existe informacin mucho ms extensa
sobre el funcionamiento, configuracin e instalacin de Apache

Instalacin de Apache + PHP +


MySQL 2/3
Por: Carlos Galls Lahoz.
C.E.S. Fundacin San Valero.

Instalacin de PHP4
Descargamos y descomprimimos el archivo de PHP. Podemos descomprimirlo
por ejemplo en el directorio "C:\PHP4\". Una vez descomprimido, vamos a ese
directorio y editamos el archivo php.ini-dist.
Dentro de l buscamos la seccin Rutas y Directorios. Comprobamos que el
apartado "extension_dir" tenga el valor "./" esto indica el directorio actual de
PHP y donde se encontrarn las extensiones de PHP.
En la siguiente seccin tenemos las extensiones de PHP, que nos proporcionan
funciones extra a nuestro interprete de PHP (muchas de estas extensiones no
funcionarn correctamente bajo Windows98).
Seleccionamos las que necesitemos, esto lo hacemos quitando el ";" al
principio de la lnea. Debemos comprobar que el archivo al que se hace
referencia esta en nuestro directorio de PHP ("C:\PHP4\").
En este archivo podemos configurar muchas ms opciones, como por ejemplo
opciones para el soporte de distintos sistemas gestores de bases de datos,
pero por el momento no modificaremos nada, solamente en caso de
necesitarlo. Una vez que tengamos modificado lo anterior, guardamos el
archivo con el siguiente nombre "php.ini".
A continuacin vamos al directorio donde tenamos instalado Apache y en el
directorio "/config/" editamos el archivo "httpd.conf" donde deberemos introducir
las siguientes directivas de configuracin.
Vamos a la seccin "ScriptAlias". En esta seccin indicamos el alias que tendr
la ruta donde se encuentra nuestro intrprete de PHP. Debemos tener la
siguiente lnea.
ScriptAlias /cgi-bin/ "C:/Archivos de programa/Apache Group/Apache/cgi-bin/"
La lnea anterior es un directorio que Apache tiene por defecto para ejecutar
scripts. Debajo de esta lnea debemos introducir:
ScriptAlias /PHP4/ "C:\PHP4\"
En la seccin Addtype, se encuentra la configuracin que indica al intrprete
que archivos debe procesar. Aadimos:

Addtype application/x-httpd-php .php4


Addtype application/x-httpd-php .phtml
En la seccin Action, indicamos cual es el archivo que sirve de intrprete de
PHP. Aadiremos:
Action application/x-httpd-php "/PHP4/php.exe"
Una vez echo esto guardamos el archivo y creamos una pgina de prueba.
Guardaremos el archivo en formato de texto plano. Abrimos un archivo nuevo y
escribimos el cdigo inferior:
<?php
echo "Hola, mi primera pgina PHP";
phpinfo();
?>
Una vez escrito el cdigo anterior lo guardamos en el directorio "/htdocs/" del
directorio Apache con el nombre "info.php4". Ejecutamos de nuevo un
explorador web e introducimos la siguiente direccin:
"http://127.0.0.1/info.php4". El resultado es una pantalla con informacin sobre
la versin de PHP que utilizamos, adems de informacin sobre el valor de las
variables que PHP maneja. Si no vemos esa pantalla deberemos comprobar
los pasos anteriores y comprobar que hemos hecho todo correctamente. No
obstante, podemos encontrar ms informacin en el manual de referencia de
PHP
.

Instalacin de Apache + PHP +


MySQL 3/3
Por: Carlos Galls Lahoz.
C.E.S. Fundacin San Valero.

Instalacin de MySQL
MySQL es un sistema gestor de bases de datos, este nos permite guardar
informacin y poder realizar pginas ms dinmicas, por ejemplo, podemos
guardar contraseas, direcciones de correo, realizar foros de discusin,
contadores, aparte de guardar cualquier tipo de informacin que nos sea de
inters. Para poder manejarnos con l deberemos tener unos conocimientos
mnimos del lenguaje SQL.
Una vez que tengamos el archivo de instalacin mysql-shareware_3_22_34win.zip debemos descomprimirlo, por ejemplo, podemos ubicarlo en el
directorio "C:\mysqlinst\". Una vez descomprimido vamos a ese directorio y
ejecutamos el programa de instalacin "Setup.exe" donde indicaremos las rutas
que queremos para su instalacin.
Una vez terminada la instalacin los archivos ejecutables se encuentra en el
directorio "\bin\". MySQL se comporta como un servidor, por tanto para poder
tener acceso al SGBD (sistema gestor de bases de datos) deberemos tenerlo
en funcionamiento, para hacer esto deberemos ejecutar el archivo "\bin\mysqldshareware.exe". Para acceder al sistema debemos hacerlo con el programa
cliente, que es "/bin/mysql.exe".
Para comprobar que funciona correctamente, abrimos una ventana MS-DOS y
vamos al directorio donde est instalado MySQL (por defecto "C:\mysql\" y
dentro del directorio "\bin\" ejecutamos "mysql.exe". Si todo va bien habremos
entrado en el SGBD. Nos aparecer el siguiente mensaje:
Welcome to the MySQL monitor. Commands en with; or \g.
Your MySQL connection id is 2 to server version: 3.22.34-shareware-debug
Type 'help for help'
mysql>
Podemos ver las bases de datos que tenemos en el sistema escribiendo lo
siguiente:
show databases;
Para salir de la sesin deberemos escribir "exit;". No voy ha explicar en este
artculo el funcionamiento de MySQL, porque no es su cometido, para ello
existen otras secciones donde se explican estos temas. Pero si queremos ms
informacin sobre la configuracin y manejo de MySQL en el directorio "/Docs/"
esta el archivo "manual.html", es un tutorial bastante extenso y bueno.

Con todo esto ya tenemos instalado en nuestro equipo todo lo necesario para
poder empezar a desarrollar un pequeo web-site. Debo insistir que todos
estos programas estn pensados inicialmente para funcionar bajo S.O. UNIX y
que las versiones Windows, tienen muchas limitaciones, as que no podremos
sacar toda la potencia que tienen estos programas. Pero para un comienzo es
suficiente.

Instalacin de PHP sobre PWS4.0


Por: Fernando Arias.
Estos sencillos pasos nos explican cmo instalar felizmente el PHP4 sobre una
mquina basada en Windows 95 o 98. Es relativamente sencillo, y no debera
dar muchos problemas, si se siguen cuidadosamente. La documentacin que
viene con el programa es bastante buena, aunque a veces parece que est an
pensada para las versiones 3 del PHP, por lo que deberamos consultarla si
nos atascamos. Si de todos modos, lo tuyo no es el ingls, mndame un mail y
ver qu puedo hacer.
1. Descomprimir el archivo php-4.0.2-Win32.zip (o ms reciente) desde
es.php.net
2. Meter todos los archivos en una carpeta, como por ejemplo "c:\php"
3. Copiar las .dlls necesarias (bsicamente msvcrt.dll y php4ts.dll) en la
carpeta c:\Windows\System (dejar, sobretodo php4isapi.dll en la carpeta
c:\php4)
4. Abrir el archivo PWS-php4.reg (no hacer doble clic, sino con el botn
derecho seleccionar "Edicin") y modificar el Path.
Por defecto, pone algo como:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\
w3svc\parameters\Script Map]
".php"="[PUT PATH HERE]\\php4isapi.dll"
Y hay que sustituirlo por:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\
w3svc\parameters\Script Map]
".php"="c:\\php\\php4isapi.dll"
Ojo a las barras, fijarse que hay dos para separar los directorios en el
path.
5. Ejecutar el archivo PWS-php4.reg . Esto lo que hace es insertarlo en el
registro de Windows)
6. Desde la consola de PWS, seleccionar un directorio donde vamos a
publicar las pginas, y darle privilegios de Ejecucin.
Explico esto: Hacer doble clic en el icono del PWS en la esquina inferior
derecha de vuestra pantalla, aparece la consola de PWS, ir a la pestaa
"Avanzada" (es la ltima). Agregar un directorio virtual (o editar uno
existente), y en sus propiedades, marcar la casilla de "Ejecucin" (la del
centro).
7. Coger el archivo php-dist.ini, renombrarlo a php.ini y ponerlo en la
carpeta c:\Windows (o en c:\ , directamente)

8. Hacer una pgina de prueba y acceder a ella. Por ejemplo, abrimos un


archivo nuevo con el Notepad y escribimos en l lo siguiente:
<HTML>
<HEAD>
<TITLE>Pgina de prueba de instalacin de PHP</TITLE>
</HEAD>
<BODY>
<?
phpinfo();
?>
</BODY>
</HTML>
Guardarlo como prueba.php en la carpeta de publicacin. Para probarla
abrimos un navegador y en la barra de URL escribimos (suponiendo que
nuestro directorio virtual se llama phphome :
http://localhost/phphome/prueba.php
9. Maldecirme si no funciona.
Nota: Una vez instal el PHP y tuve un problema: a pesar de seguir todos los
pasos de instalacin cuidadosamente, a pesar de que todo debera funcionar, a
pesar de los pesares... no funcionaba. Sin embargo, si utilizaba cualquier otra
extensin (por ejemplo, .phtml) y la registraba en
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
\w3svc\parameters\Script Map esa extensin s me funcionaba, pero no la
extensin .php, a pesar de que en todo el registro de Windows no se haca
mencin a ella. El problema estaba en el PWS, y no tuve ms remedio que
desinstalarlo y volverlo a instalar, entonces todo funcion perfectamente.

Instalacin de PHP sobre IIS


Por: Fernando Arias.
La instalacin sobre NT y 2000 puede variar ligeramente entre diferentes
versiones, pero siguiendo estas lneas seguramente conseguiremos hacer
funcionar el PHP. Este documento est basado en el archivo ReadMe que se
incluye con el PHP, pero que con frecuencia nos olvidamos de que existe o nos
parece demasiado complicado, o sencillamente, qu diablos!... si est en
castellano...
1. Descomprimir el archivo php-4.0.2-Win32.zip (o ms reciente) desde
es.php.net
2. Meter todos los archivos en una carpeta, como por ejemplo "c:php"
3. Copiar las .dlls necesarias (bsicamente msvcrt.dll y php4ts.dll) en la
carpeta c:\Windows\System (dejar, sobretodo php4isapi.dll en la carpeta
c:\php)
4. Ir al Administrador de Servicios de Internet. Puede estar en alguno de
estos sitios
Inicio -> Configuracin -> Paneles de control
Inicio -> Programas -> Windows NT 4.0 Option Pack -> Personal Web
Server

5.
6.
7.
8.

9.

Inicio -> Configuracin -> Paneles de control -> Herramientas


Administrativas (en Windows 2000)
Buscamos el item de nuestro servidor Web (suele aparecer como "Sitio
Web Predeterminado")
Con el botn derecho, seleccionar en el men emergente Propiedades
Ir a la pestaa "ISAPI filters", y Aadir un nuevo filtro. Como nombre le
pondremos "PHP" y como ejecutable, "C:\php\php4isapi.dll" (o
dondequiera que hayamos instalado dicha dll.
Ir a la pestaa "Home Directory". En la seccin de "Application Settings",
pulsar el botn "Configuration...". Aadir un nuevo "Application Mapping":
el ejecutable es el mismo de antes: "C:\php\php4isapi.dll". La extensin
es ".php" (ojo, con un punto delante). Marcar "All verbs" (esto creo que
puede variar segn la versin del IIS, pero si no es esto, dejarlo como
est). Verificar que est marcado "Script Engine".
Aceptar los cambios y reinciar el servidor Web. Puede que no sea
suficiente con hacerlo desde la consola, poniendo Detener y luego
Iniciar. Lo mejor es ir directamente al panel de configuracin "Servicios"
y desde all detener completamente el servicio de publicacin en
Internet, y luego reiniciarlo.
Una forma de hacer este ltimo paso es desde la consola de Windows,
escribiendo:
C:\>net stop iisadmin

para detener el servicio


C:\>net start w3svc
para volverlo a iniciar
10. Hacer una pgina de prueba y acceder a ella. Por ejemplo, abrimos un
archivo nuevo con el Notepad y escribimos en l lo siguiente:
<HTML>
<HEAD>
<TITLE>Pgina de prueba de instalacin de PHP</TITLE>
</HEAD>
<BODY>
<?
phpinfo();
?>
</BODY>
</HTML>
Guardarlo como prueba.php en la carpeta de publicacin. Para probarla
abrimos un navegador y en la barra de URL escribimos (suponiendo que
nuestro directorio virtual se llama phphome :
http://localhost/phphome/prueba.php
11. Maldecirme si no funciona
Nota: Si no queremos utilizar autentificacin de usuarios HTTP (HTTP-Auth)
deberamos saltarnos el paso 7 (instalacin de filtros ISAPI)

PHP Artculos sobre PHP PHP Perfect Form Items v1.0 (Formularios sin
errores)

PHP Perfect Form Items v1.0


(Formularios sin errores)
Por Jose Carlos Garca
Cuntas veces que hemos necesitado integrar
cdigo PHP con elementos de formularios,
Artculos publicados: 1
hemos conseguido una mezcla de HTML y
Valoracin media: 3.6/5
etiquetas <?php ?> disminuyendo la legibilidad del
Usuario desde: 11/12/2004
cdigo o haciendo que tengamos que escribir ms
lineas de la cuenta?
Con estas sencillas pero tiles funciones podremos sin problemas emplazar
campos a los formularios que diseemos sin tantos quebraderos de cabeza.
Las funciones que se explican en este artculo se encuentran en la siguiente
direccin http://www.distintiva.com/jose/_perf_form/perf_form.zip. El cdigo
puede ser cambiado, mejorado y distribuido libremente. Ha sido programado
totalmente por Jose Carlos Garca de Distintiva Solutions (www.distintiva.com).
Empecemos con el ejemplo ms difcil y el causante de que tuviera que
programar estas funciones.

<SELECT>
Crear elementos de seleccin <select></select>
Con php es muy habitual trabajar con arrays, ya sea con datos que nos
proporcione una consulta SQL o simples valores.
Veamos un ejemplo en el que queremos mostrar un <select> para que el
usuario seleccione su rango de edad:
<select name="edad">
<option value=0>Seleccione</option>
<option value=1>Entre 0-18</option>
<option value=2>Entre 19-30</option>
<option value=3>Entre 31-50</option>
<option value=4>Ms de 50</option>
<select/>

Esto se complica cuando hay que hacerlo de forma dinmica ya que esta lista
puede variar, para evitar tener que cambiar el HTML a pelo ya que
necesitamos construir este fragmento de HTML con un bucle, etc.
Se complica an ms cuando una opcin debe estar preseleccionada.
La funcin que nos salvar la vida es:
frm_select($name, $arr_txt, $arr_vals, $default='', $extra_tag='')

$name = Nombre del elemento del formulario


$arr_txt = Array con los textos a mostrar
$arr_vals = Array con los valores asociados a cada texto
$default= [opcional] si se indica el valor aparecer preseleccionado dicha
opcin
$extra_tag= [opcional] por si necesitamos incluir informacin adicional al
select, como por ejemplo $extra_tag= class=cssazul o $extra_tag=
onChange=alert()
Ejemplo:
$arr_txt=array(espaa, portugal, francia);
$arr_vals=array(ES, PT, FR);
<?=frm_select (paises, $arr_txt, $arr_vals) ?>
De esta forma cualquier modificacin slo hay que hacerla en los arrays sin
alterar la parte visual.
A veces es conveniente conservar el valor de un campo del formulario entre
llamadas o posts del mismo por ejemplo cuando estamos validando entradas y
hay que volver al formulario para que rellene algn campo requerido. Para
hacer esto de forma sencilla tan solo tenemos que usar el parmetro $default
de la siguiente forma:
<?=frm_select (paises, $arr_txt, $arr_vals, $_POST[paises]) ?>
(o $_GET dependiendo el mtodo que usemos en nuestro formulario)

<SELECT> (tipo lista con varios elementos visibles)


Funciona exactamente igual que el anterior pero en este caso tenemos la tpica
lista de seleccin con scroll mostrando X elementos.
La funcin es:
frm_list($name,$size, $arr_txt, $arr_vals, $default='', $extra_tag='')
En este caso el nuevo parmetro es $size que indica cuntos elementos sern
mostrados visiblemente en la lista.

<SELECT> (tipo lista con varios elementos visibles y con


multiseleccin)
Igual que el ejemplo anterior pero permitimos que el usuario seleccione uno o
varios elementos de la lista con el CTRL+Click o SHIFT+Click
La funcin es:
frm_list_multi($name, $size, $arr_txt, $arr_vals, $default='', $extra_tag='')
... Y tambin tenemos funciones correspondientes para los dems elementos
de formulario aprovechando la capacidad de mantener el valor entre posts.

<CHECKBOX>
No hace falta decir para que sirven estos elementos. La funcin es:
frm_check($name, $ck_val, $var_in='', $extra_tag='')
$name= Nombre del campo
$ck_val= Valor que se enviar cuando est seleccionado
$var_in=[opcional] Funciona como el $default y permitir que se muestre
checkeado
Ejemplo:
Se muestra un checkbox que se mantiene seleccionado entre posts del
formulario
<?= frm_check(fumador, SI, $_POST[fumador])?>

<RADIO>
En este caso para mostrar radiobuttons se hace exactamente como el caso
anterior pero con la siguiente funcin:
frm_radio($name, $val, $var_in='', $extra_tag='')

<INPUT>
Permite mostrar cuadros de texto con las ventajas que voy ofreciendo en todas
las funciones y para ello hay que usar:
frm_text($name, $val, $size, $max_length, $extra_tag='')
$name = Nombre del campo
$val = Valor o texto que se mostrar (funciona como el $default de las otras
funciones)
$size = Tamao del campo de texto
$max_length = Longitud mxima permitida

<PASSWORD>
El caso es exactamente como el anterior pero esta vez oculta el texto con
asteriscos.
frm_password($name, $val, $size, $max_length, $extra_tag='')

La directiva register_globals en PHP


Por Joaquin Gracia
4.2.0
A partir de la versin de PHP 4.2.0 el valor por
defecto de la directiva register_globals es off. El
por qu de este cambio viene motivado por un
aumento del nivel de seguridad en la configuracin
Artculos publicados: 7
del PHP por defecto. Pero esto puede provocar
Valoracin media: 3.72/5
que nuestras pginas dejen de funcionar.
Usuario desde: 20/06/1998
La directiva register_globals cuando esta activada (estado que estaba por
defecto antes de la versin 4.2.0 de PHP), provoca que automticamente se
generen variables globales para cookies y valores enviados por get y post entre
otros.
Por ejemplo:
Si llambamos a una pgina con http://www.internet.com/prueba.php?var1=4,
esto provocaba que en la pgina prueba.php automticamente se generase la
variable $var1 con el valor 4.
Por razones de seguridad este comportamiento automtico se ha cambiado,
estableciendo el valor por defecto de register_globals a off.
Este cambio puede producir que nuestras antiguas pginas dejen de funcionar,
ante esto tenemos dos opciones:

Activar el register_globals a on.


Dejar register_globals a off y cambiar nuestras pginas por las
referencias adecuadas a cada caso. Esta es la opcin ms
recomendable.

Cmo debemos hacer este cambio?


Debemos buscar todas aquellas variables que son definidas automticamente,
variables del servidor, que provienen de get o post, cookies, files, variables de
entorno o sesin.
Reemplazar esas variables por las referencias adecuadas en cada caso, en
PHP se han definido unos arrays diferentes con valores, dependiendo del lugar
de procedencia. As tenemos los arrays $_SERVER, $_GET, $_POST,
$_COOKIE, $_FILES, $_ENV, $REQUEST y $_SESSION.
Si por ejemplo tenamos el siguiente script:
print "Su edad: ".$edad; //cookie
print "Navegador: ".$HTTP_USER_AGENT;
print "Variable: ".$var; //variable de get

Deberamos reemplazarlas por:

print "Su edad: ".$_COOKIE['edad']; //cookie


print "Navegador: ".$_SERVER['HTTP_USER_AGENT'];
print "Variable: ".$_GET['var']; //variable de get

PHP orientado a
objetos. Parte I

Por Carlos Galls

Artculos publicados: 3
La mayora de los lenguajes de programacin
Valoracin media: 3.72/5
modernos son orientados a objetos ( abreviado
Usuario desde: 01/08/2002
OO ) o en su defecto se aproximan mucho a stos
permitiendo algunas de sus caractersticas como es el caso de PHP.
La programacin OO principalmente hace uso de clases, objetos, relaciones,
instancias, propiedades y mtodos.

Objetos y clases
Cuando hablamos de software OO los objetos casi siempre son elementos
fsicos, como puede ser un cliente, proveedor, etc. o elementos conceptuales
que existen en el entorno software, por ejemplo un objeto encargado del
mantenimiento de archivos. El objetivo es representar a stos elementos de la
vida real y a los conceptuales como unidades de software.
La programacin OO esta pensada para construir objetos que contienen
atributos y operaciones de manera que cubran nuestras necesidades. Los
atributos son variables que contienen informacin del estado de un objeto. Y
las operaciones tambin conocidas como mtodos, funciones y acciones
realizan modificaciones del propio objeto o realizan alguna accin externa a
ste.
Una de las principales ventajas de la programacin OO es el concepto de
encapsulacin, conocido tambin como proteccin de datos, mediante el cual
solo se pueden modificar los datos de un objeto accediendo a travs de sus
mtodos u operaciones (interfaz del objeto). Nunca se pueden modificar
directamente desde la aplicacin principal.
La funcionalidad de un objeto esta sujeta a los datos que este maneja, una
ventaja de usar objetos es que podemos modificar la funcionalidad de ste,
aadir mejoras o corregir errores sin necesidad de cambiar su interfaz. Ya que
en caso contrario un proyecto estara sujeto a un mayor nmero de fallos y los
cambios seran ms costosos.
En algunas reas de la programacin de aplicaciones Web el uso de la
programacin OO est desestimada, usndose una metodologa estructurada
basada en funciones, esto es debido a que determinados proyectos no son lo
suficientemente extensos como para aplicarles una metodologa OO.
En la programacin OO los objetos son nicos y son instancias a una clase
determinada. En principio se define la clase con los atributos y mtodos
correspondientes y luego se crea el objeto que esta basado en una
determinada clase (esto se conoce como instancia). Se puede comparar a un
objeto con una variable y la clase sera un tipo de dato definido por nosotros.

Cmo crear clases, atributos y operaciones en PHP


Hasta ahora hemos hablado de las clases de una forma conceptual, a
continuacin veremos como se crean, para crear una clase en PHP usaremos
la palabra reservada class.
La estructura mnima de una clase es la siguiente:
class NombreClase {
}

Para que una clase sea til, necesita atributos y operaciones. Podemos crear
atributos como si de variables se trataran, con la palabra reservada var
class NombreClase {
var $atributo1;
var $atributo2;
}

Podemos crear mtodos declarando funciones dentro de la definicin de la


clase, el siguiente cdigo crea una clase llamada NombreClase con dos
operaciones que no hacen nada. A metodo1 no le pasamos ningn parmetro y
a metodo2 le pasamos dos parmetros.
class NombreClase {
function metodo1() {
}
function metodo2($param1, $param2) {
}
}

PHP orientado a
objetos. Parte II
Qu es el constructor de una clase

Por Carlos Galls


Artculos publicados: 3
Valoracin media: 3.72/5
Usuario desde: 01/08/2002

Las clases soportan un tipo de funcin especial que se conoce como


constructor. El constructor es llamado cuando se crea el objeto. Normalmente
utiliza para inicializar tareas como: asignacin de valores a determinados
atributos, crear nuevos objetos necesarios para el correcto funcionamiento de
el objeto, etc.
El constructor se declara de la misma forma que los mtodos, lo nico que
debemos tener en cuenta es que debe tener el mismo nombre que la clase. A
pesar de que nosotros podemos llamar a el constructor, su principal propsito
es ser llamado automticamente cuando un objeto es creado. A continuacin
veremos como se declara el constructor de una clase:
class NombreClase {
function NombreClase($param) {
echo "Constructor llamado con el parmetro $param";
}
}

Cmo usar objetos, instanciar una clase


Despus de haber declarado una clase, ya podemos usarla creando un objeto
que es una instancia a esa clase como ya se ha mencionado anteriormente. Es
muy importante que esto quede claro, los objetos son instancias a una clase,
por lo tanto cada objeto es nico.
En php creamos un objeto usando la palabra reservada new. Tambin
debemos indicar a que clase va a instanciar el objeto que creemos y pasarle
los parmetros (si los requiere) al constructor, en el siguiente cdigo vamos a
ver un ejemplo de esto, para ello tomamos como referencia la clase anterior
NombreClase:
$a = new NombreClase("Primero");
$b = new NombreClase("Segundo");
$c = new NombreClase();

Como resultado de este cdigo vemos que el constructor es llamado cada vez
que se crea el objeto, y vemos que los objetos son nicos aunque sean
instancias de la misma clase, el resultado es el siguiente:
Constructor llamado con el parmetro Primero
Constructor llamado con el parmetro Segundo
Constructor llamado con el parmetro

Cmo usar los atributos de una clase


Una clase, tiene un puntero especial al que podemos referenciar como $this. Si
nuestra clase tiene un atributo llamado $atributo, podemos hacer referencia a
este desde nuestra clase (mtodos) de la siguiente forma $this->atributo, a
continuacin podemos ver el cdigo de ejemplo del acceso a un atributo de
clase desde un mtodo de la propia clase.
class NombreClase {
var $atributo;
function metodo($param) {
$this->atributo = $param;
echo $this->atributo;
}
}

Algunos lenguajes permiten limitar el acceso desde fuera a los atributos de una
clase declarndolos como privados o protegidos ("private", "protected"). PHP
no soporta esta caracterstica y todos atributos y mtodos pueden ser vistos
desde fuera de la clase, lo que quiere decir que siempre son pblicos.
Podemos realizar la misma accin que anteriormente desde fuera de la clase,
usando esta sintaxis.
NombreClase {
var $atributo;
}
$a = new NombreClase();
$a->atributo = "valor";
echo $a->atributo;

Las sentencias anteriores estn permitidas en PHP, pero no es una prctica


recomendable acceder directamente a los atributos de una clase desde fuera
de sta. Como se ha comentado anteriormente una de las ventajas de la POO
es que permite realizar encapsulacin por esta razn aunque PHP no permita
ocultar los atributos o mtodos de una clase, nosotros deberamos no acceder
directamente a ellos, para diferenciarlos de los pblicos es conveniente
tambin poner "m_" (de miembro lo cual significa que solo sern usados dentro
de la clase) delante de los nombres de mtodos y atributos a los cuales no se
quiera acceder directamente desde fuera de la clase.
Para los atributos que queramos acceder directamente desde fuera de la clase,
deberamos escribir funciones de acceso, tanto para establecer como para
coger valores. Deberamos tener un cdigo como el siguiente:
class NombreClase {
var $atributo;
function get_atributo() { //devuelve el valor de atributo
return $this->atributo;
}
function set_atributo($valor_nuevo) { //establece el valor de atributo
$this->atributo = $valor_nuevo;
}

La finalidad de hacer esto, es clarificar el cdigo y tener una seccin de cdigo


encargada de acceder a los atributos para mantener la encapsulacin, y que no
sean accedidos directamente. Adems si seguimos estas prcticas aumentar
la calidad de nuestro software ya que podremos introducir comprobaciones de
datos, como rangos, valores permitidos, etc. Veamos un ejemplo de validacin
de datos a la hora de asignar un valor a atributo mediante el mtodo
set_atributo:
function set_atributo($valor_nuevo) {
if ($valor_nuevo > 100) {
$this->atributo = $valor_nuevo;
}
}

En el cdigo superior vemos que cuando queremos asignar a atributo valores


inferiores a 100 no nos deja, y atributo seguir manteniendo su valor.

Cmo usar los mtodos de una clase


Los mtodos de una clase se pueden llamar de la misma forma que se llaman
a los atributos, supongamos que tenemos la siguiente clase:
class nombreClase {
function metodoa() {
return "Has llamado al mtodo A";
}
function metodob($parametro1) {
return "Mtodo B llamado con parmetro: ".$paramtro1;
}
}

Creamos un objeto de la case nombreClase con el nombre $obj de la siguiente


forma:
$obj = new nombreClase();

Los mtodos de un objeto, son llamados de la misma forma que se llaman a


funciones normales, pasndoles como es el caso de metodob el parmetro que
necesiten. Como los mtodos son funciones que pertenecen a un objeto,
deberemos indicar en la llamada el objeto que los incluye, la forma de llamar a
un mtodo es idntica a como llamamos a los atributos de un objeto.
$obj->metodoa();
$obj->metodob("parmetro que pasamos");

Si nuestras operaciones, devuelven algn valor, lo capturamos asignndoselo a


una variable, podemos ver el siguiente ejemplo
$txt_retorno = $obj->metodob("Hola");

$txt_retorno contendr la cadena de texto:

"Metodo B llamado con parmetro: Hola"

PHP orientado a
objetos. Parte y III
Qu es la Herencia en PHP y como
implementarla

Por Carlos Galls


Artculos publicados: 3
Valoracin media: 3.72/5
Usuario desde: 01/08/2002

Como su nombre indica el concepto de herencia se aplica cuando creamos una


clase, que va a heredar los mtodos y atributos de una ya definida, entonces la
clase que hemos creado es una subclase. Para que una clase sea subclase de
otra ya creada deberemos usar la palabra reservada extends en el siguiente
cdigo podremos ver como creamos una clase llamada SubClaseA que
heredar los mtodos y atributos de una clase definida con anterioridad
llamada ClaseA.
class SubClaseA extends ClaseA {
var $atributo2;
function operacion2() {
}
}

Tenemos la clase ClaseA que es definida de la siguiente forma:


Class ClaseA {
var $atributo1;
function operacion1(){
}
}

Si creamos un objeto de la clase SubClaseA este heredar todos los mtodos


de la clase ClaseA, por lo tanto el siguiente cdigo es vlido:
$x = new SubClaseA();
$x->operacion1();
$x->atributo1 = 100;
$x->operacion2();
$x->atributo2 = 200;

Como podemos observar aunque declaremos un objeto de la clase SubClaseA,


al ser una clase extendida de ClaseA podemos hacer uso de todos los mtodos
y atributos definidos en ClaseA como si estuvieran contenidos en SubClaseA.
Debemos tener en cuenta que la herencia solo trabaja en una direccin, la
subclase o clase hija hereda las caractersticas de su clase padre o superclase,
pero la clase padre no posee las caractersticas de la hija. Para el caso anterior
ClaseA no tendra atributo2 ni metodo2();

Como sobrescribir mtodos y atributos


Como hemos visto anteriormente, una subclase declara atributos nuevos y
operaciones sobre una superclase. Es posible y en muchos casos til

sobrescribir las mismas operaciones o atributos declarados en la superclase.


Esto se hace para dar a un atributo un valor diferente en la subclase que el que
tiene en la superclase o en el caso de las operaciones para cambiar la
funcionalidad de estas. Veamos un ejemplo, por ejemplo si tenemos la clase A:
class A {
var $atributo = 'valor inicial'
function operacin() {
echo 'Clase A:<br>';
echo 'El valor de \$atributo es $this->atributo<br>';
}
}

Queremos crear una subclase B y alterar el valor de atributo y la funcionalidad


de operacin de la clase A, entonces escribimos:
Class B extends A {
var $atributo = 'valor cambiado';
function operacin() {
echo 'Clase B:<br>';
echo 'El valor de \$atributo ahora es $this->atributo<br>';
}
}

Como podemos observar hemos definido una variable y una operacin en B


con el mismo nombre que tenan en A.
Como se ha comentado anteriormente aunque declaremos B no afecta a la
definicin de A, y si creamos un objeto de la superclase A est mantendr sus
valores originales. Solo sobrescribiremos los valores y funcionalidad de A
cuando creemos un objeto de la clase B.
A diferencia de otros lenguajes OO, PHP no nos permitir sobrescribir una
funcin o atributo y poder llamar a los valores de la clase padre.
La herencia puede tener muchas capas de profundidad, por ejemplo podemos
tener una clase C que es subclase de B y est ltima ser subclase de A, la
subclase C heredar y sobrescribir aquellos atributos y mtodos de sus clases
padres, en este caso A y B.

Soporta PHP la herencia mltiple?


Algunos lenguajes OO soportan herencia mltiple, esto significa que una
subclase puede heredar de varias clases padres. PHP no permite esto y una
subclase solo puede heredar de una clase padre, sin embargo en PHP no hay
ningn tipo de restriccin en cuanto a el nmero de subclases que pueden
heredar de una misma clase padre o superclase.

Qu es el polimorfismo y como implementarlo


Cualquier lenguaje de programacin orientado a objetos debe soportar el
polimorfismo, esto significa que clases diferentes tendrn un comportamiento
distinto para la misma operacin. Esto lo veremos ms claro con el siguiente
ejemplo.

Supongamos que tenemos dos clases distintas coche y ciclomotor. Ambas


tienen sus propios mtodos de movimiento, stos tienen diferentes
comportamientos, pero su nombre es el mismo
class coche {
function avanza() {
}
function para() {
}
function girar_derecha() {
}
}
class ciclomotor {
function avanza() {
}
function para() {
}
function girar_derecha() {
}
}

Como podemos observar, ambas clases tienen los mismos mtodos,


supongamos ahora que tenemos otra clase que controla el movimiento de
todos los vehculos, es aqu donde entra en juego el polimorfismo, que
dependiendo del objeto que tratemos actuar de una forma u otra el mtodo al
que llamamos.
class movimiento {
function mover_adelante($obj) {
$obj->avanza();
}
}

Supongamos que queremos mover cualquier vehculo hacia adelante entonces


haramos:
$obj_coche = new coche();
$obj_ciclomotor = new ciclomotor();
$obj_movimiento = new movimiento();
// con esta sentencia el coche avanzaria hacia adelante.
$obj_movimiento->mover_adelante($obj_coche);
// con esta sentencia el ciclomotor avanzara hacia adelante.
$obj_movimiento->mover_adelante($obj_ciclomotor);

Como podemos ver el mismo mtodo del objeto movimiento acta de dos
formas diferentes dependiendo del objeto que le pasamos como parmetro.

Conexin a SQL Server


A continuacin voy a explicar como configurar el
PHP bajo windows para conectarse con una base
de datos MS SQL Server.

Conseguir las DLLs

Por Joaquin Gracia

Artculos publicados: 7
Valoracin media: 3.72/5
Usuario desde: 20/06/1998

Lo primero que nos hace falta es conseguir las DLLs para conectarnos a un
SQL Server, por defecto estas DLLs no van en el paquete de instalacin
automtica, as que tendrs que bajar, si no lo tienes ya, el paquete con la
instalacin completa.
Descomprime el paquete con la distribucin completa y busca el fichero
"php_mssql.dll" que est dentro del directorio "extensions", copia este fichero al
directorio "dlls" en donde tengas instalado el PHP.

Editar el PHP.ini
Ahora hay que decirle al PHP que tiene una librera nueva y que la debe usar.
As que editaremos el PHP.ini con el Notepad, normalmente el PHP.ini est en
el directorio C:\WINNT.
Busca la lnea en la que pone "extension_dir = " y modifcala para que apunte
al directorio donde hemos copiado la DLL. Con esto le indicamos al PHP donde
estn las DLL de extensin.
Ahora busca la lnea ";extension=php_mssql.dll" y modifcala quitndole el ";"
del principio.
Graba el fichero PHP.ini y ya est.

Ejemplo de conexin
Solo nos queda probar que funciona la conexin con el servidor SQL Server,
para ello vamos a conectarnos con la base de datos Northwind que viene
como ejemplo en la instalacin de SQL Server. Listaremos el nombre del
producto y el precio de la tabla productos.
$conectID = mssql_connect("NombreServidor","SA","");
mssql_select_db("Northwind");
$result=mssql_query("select * from products",$numero );
while ($row=mssql_fetch_array($result)) {
$counter++; $c1=$row["ProductName"];
$c2=$row["UnitPrice"];
echo ("$counter c1: $c1 c2: $c2\n");
}
mssql_close($conectID);

Formateado, conversiones y fechas


Calendario pequeo
Cdigo
<?PHP
##InstaCalendar
##Written by Marcos Ojeda 11.July.2000
#Fill in default,today values accordingly as well as font...
#$month can be changed, but not $textmonth
## "Remember who loves you, baby!" --Kojack
$fontfamily = isset($fontfamily) ? $fontfamily : "Tahoma, Geneva, sans-serif";
$defaultfontcolor = isset($defaultfontcolor) ? $defaultfontcolor : "#000000";
$defaultbgcolor = isset($defaultbgcolor) ? $defaultbgcolor : "#FFFFFF";
$todayfontcolor = isset($todayfontcolor) ? $todayfontcolor : "#FFFFFF";
$todaybgcolor = isset($todaybgcolor) ? $todaybgcolor : "#CC0000";
$monthcolor = isset($monthcolor) ? $monthcolor : "#333399";
$relfontsize = isset($relfontsize) ? $relfontsize : "1";
$cssfontsize = isset($cssfontsize) ? $cssfontsize : "8pt";
$month = (isset($month)) ? $month : date("n",time());
$monthnames = array("January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December");
$textmonth = $monthnames[$month - 1];
$year = (isset($year)) ? $year : date("Y",time());
$today = (isset($today))? $today : date("j", time()); ## Make $today really big to
avoid hilite
$today = ($month == date("n",time())) ? $today : 32;
if ( (($month < 8) && ($month % 2 == 1)) || (($month > 7) && ($month % 2 ==
0)) )
$days = 31;
if ( (($month < 8) && ($month % 2 == 0)) || (($month > 7) && ($month % 2 ==
1)) )
$days = 30;
if ($month == 2)
$days = (date("L",time())) ? 29 : 28;
$dayone = date("w",mktime(1,1,1,$month,1,$year));
$daylast = date("w",mktime(1,1,1,$month,$days,$year));
?>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td bgcolor="<?PHP echo $defaultbgcolor ?>" colspan="7" valign="middle"
align="center"><font color="<?php echo $monthcolor ?>" face="Arial, Helvetica,
sans-serif" size="3"><b><?PHP echo $textmonth ?></b></font></td>
</tr>
<tr>

<td bgcolor="<?PHP echo $defaultbgcolor ?>" valign="middle" align="center"


width="15%"><font face="<?PHP echo $fontfamily ?>"
size="1"><b>Sun</b></font></td>
<td bgcolor="<?PHP echo $defaultbgcolor ?>" valign="middle" align="center"
width="14%"><font face="<?PHP echo $fontfamily ?>"
size="1"><b>Mon</b></font></td>
<td bgcolor="<?PHP echo $defaultbgcolor ?>" valign="middle" align="center"
width="14%"><font face="<?PHP echo $fontfamily ?>"
size="1"><b>Tue</b></font></td>
<td bgcolor="<?PHP echo $defaultbgcolor ?>" valign="middle" align="center"
width="14%"><font face="<?PHP echo $fontfamily ?>"
size="1"><b>Wed</b></font></td>
<td bgcolor="<?PHP echo $defaultbgcolor ?>" valign="middle" align="center"
width="14%"><font face="<?PHP echo $fontfamily ?>"
size="1"><b>Thu</b></font></td>
<td bgcolor="<?PHP echo $defaultbgcolor ?>" valign="middle" align="center"
width="14%"><font face="<?PHP echo $fontfamily ?>"
size="1"><b>Fri</b></font></td>
<td bgcolor="<?PHP echo $defaultbgcolor ?>" valign="middle" align="center"
width="15%"><font face="<?PHP echo $fontfamily ?>"
size="1"><b>Sat</b></font></td>
</tr>
<?PHP
if($dayone != 0)
$span1 = $dayone;
if(6 - $daylast != 0)
$span2 = 6 - $daylast;
for($i = 1; $i <= $days; $i++):
$dayofweek = date("w",mktime(1,1,1,$month,$i,$year));
$width = "14%";
if($dayofweek == 0 || $dayofweek == 6)
$width = "15%";
if($i == $today):
$fontcolor = $todayfontcolor;
$bgcellcolor = $todaybgcolor;
endif;
if($i != $today):
$fontcolor = $defaultfontcolor;
$bgcellcolor = $defaultbgcolor;
endif;
# if($i == putdayhere): #use this for *special* days of the month, can be set
ahead as well w/ &&...
# $fontcolor = puthexcolorhere;
# $bgcellcolor = puthexcolorhere;
# endif;
if($i == 1 || $dayofweek == 0):
echo " <tr bgcolor="$defaultbgcolor">

";
if($span1 > 0 && $i == 1)
echo " <td align="left" bgcolor="$defaultbgcolor" colspan="$span1"><font
face="null" size="1">&nbsp;</font></td>
";
endif;
/*Save this until supported
<td valign="middle" align="center" width="<?PHP echo $width ?>"
style="background:<?PHP echo $bgcellcolor ?>;font-family:<?PHP echo
$fontfamily ?>;color:<?PHP echo $fontcolor ?>;font-size:7pt"><?PHP echo $i ?
></td>
*/
?>
<td bgcolor="<?PHP echo $bgcellcolor ?>" valign="middle" align="center"
width="<?PHP echo $width ?>"><font color="<?PHP echo $fontcolor ?>"
face="<?PHP echo $fontfamily ?>" size="1"><?PHP echo $i ?></font></td>
<?PHP
if($i == $days):
if($span2 > 0)
echo " <td align="left" bgcolor="$defaultbgcolor" colspan="$span2"><font
face="null" size="1">&nbsp;</font></td>
";
endif;
if($dayofweek == 6 || $i == $days):
echo " </tr>
";
endif;
endfor;
?>
</table>

Calendario [Espaol]
Estuvo originalmente escrito para funcionar en una pagina en la que
se llegaba a reservar tiempo de maquina, en un local de
estudiantes.
Asi se hacia importante que el la distribucion de un dia estuviera
disponible, por eso el script se llama a si mismo con una fecha como
parametro,
el script al que llama esta declarado en una variable: $_PHP_LINK
y la fecha se pasa en el url como $Day.
Se basa en emplear la funcion de linux 'cal', y luego se
saca de alli lo que nos interesa para llenar el calendario.

Cdigo
<?
$_PHP_LINK = $PHP_SELF;
$meses = array(1=>"Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio",
"Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre");
$WeekDays = array ( 0=> "Do", "Lu", "Ma", "Mi", "Ju", "Vi", "Sa");
$fontb = "<font color=#FFFFFF>" ;
$fonte = "</font>";
if (!isset($Day))
{
$month = date ("n");
$year = date ("Y");
$Day = time();
}
else
{
$month = date ("n", $Day);
$year = date ("Y", $Day);
}
$output = `cal $month $year`;
$starter = date ("w", mktime (0, 0, 0, $month,1, $year));
$strings = split ("n", $output);
?>
<html>
<style type="text/css">
<!--

a:hover { color: #FF0000; text-decoration: none}


a:link { text-decoration: none}
a:visited { text-decoration: none}
.small_letter { font-size: xx-small; color: #FFFFFF}
-->
</style>
<title>Pequeo Calendario</title>
<body>
<table border="0" cellspacing="0" cellpadding="0">
<tr bgcolor="#3366CC">
<td bgcolor="#3366CC">&nbsp;&nbsp;</td>
<td align=center class="small_letter" valign="top">
<?
$NextMonth = mktime (0,0,0, date("n", $Day) + 1, date("j",$Day), date ("Y",
$Day));
$PreviousMonth = mktime(0,0,0 , date("n",$Day)-1, date("j",$Day), date ("Y",
$Day));
print("<a href="$_PHP_LINK?Day=$PreviousMonth">$fontb <<
$fonte</a>&nbsp;".$meses[date ("n", $Day)].
"&nbsp; <a href="$_PHP_LINK?Day=$NextMonth"> $fontb >>$fonte</a>");
?>
<?
print("<table bgcolor="#FFFFFF" class="small_letter" >n
<tr bgcolor="#3366CC" class="small_letter">");
$splited = split(" ", $strings[1]);
$i=0;
while (list ($k, $v) = each ($splited) )
{
if ($v!='')
print (" <td>&nbsp;".$WeekDays[$i]."&nbsp;</td>n");
$i++;
}
print ("</tr>n"); // Aqui termino de imprimir la primera fila con los dias de la
semana
print ("<tr>n");
for ($i=0; $i < $starter; $i++)
{
print (" <td bgcolor="#FFF6C0" align="center">&nbsp;</td>n");
}
$splited = split(" ",trim ($strings[2]));
while (list ($k, $v) = each ( $splited))
{
$color =($v==date('j', $Day))?"#E0E0E0":"#FFF6C0";
$DayForLink = mktime ( 0, 0, 0, $month, $v, $year );
$link = "$_PHP_LINK?Day=$DayForLink";
if ($v!='')
print ("<td bgcolor="$color" align="center"><a href="$link">".$v."</a></td>n");

}
print ("</tr>n"); /*Aqui termino de imprimir la primera fila con los Numeros*/
$i=0;
while (list ($k, $v ) = each ($strings))
{
if ( $i++ > 2)
{
//print ("<tr>");
$lisbet = split (" ", $v);
while (list ($k1, $v1) = each ($lisbet))
{
$DayForLink = mktime ( 0, 0, 0, $month, $v1, $year );
$link = "$_PHP_LINK?Day=$DayForLink";
$color =($v1==date('j', $Day))?"#E0E0E0":"#FFF6C0";
if ($v1!='')
print (" <td bgcolor="$color" align="center"><a href="$link">".$v1."</a></td>n");
}
print ("</tr>n");
}
} /* Fin de la impresion de los dias del mes */
print ("</table>");
?>
<?
print ("<table class="small_letter" width="100%"> ");
print ("<tr><td align="center" class="small_letter">"); // bgcolor=e0e0e0
$next= mktime ( 0, 0, 0, date("n",$Day), date ('j', $Day), $year+1 );
$back=mktime ( 0, 0, 0, date("n",$Day), date ('j', $Day), $year -1 );
print ("<a href="$_PHP_LINK?Day=$back"> $fontb << $fonte</a>&nbsp;
$year&nbsp;<a href="$_PHP_LINK?Day=$next">$fontb >> $fonte</a>");
print ("</td></tr></table>");
?>
</td>
<td bgcolor="#3366CC">&nbsp;&nbsp;
</td>
</tr>
</table>
</body>
</html>

PHP Manual de PHP Ejemplos Prcticos

Formateo de pgina
En este ejemplo vamos a usar el PHP y la capacidad de definir libreras para
conseguir que todas nuestras pginas tengan el mismo formato de pgina,
incluyendo las partes comunes en libreras. As mismo modificando la librera
modificaramos tambien todas las pginas de una manera muy rpida.
libpagina.phtml
<!-- Manual de PHP de WebEstilo.com -->
<?php
function CabeceraPagina()
{
?> <FONT SIZE="+1">Esta cabecera estar en todas sus
pginas.</FONT><BR>
<hr>
<? }
function PiePagina()
{
?>
<hr>
<FONT SIZE="-1">Este es el pie de pgina.</FONT><BR>
Autor: Joaquin Gracia
<? }
function Indice()
{
?> <A HREF="ejem06a.phtml">Pagina 1</A><BR>
<A HREF="ejem06a2.phtml">Pagina 2</A><BR>
<? } ?>

ejem06a.phtml
<!-- Manual de PHP de WebEstilo.com -->
<html>
<head>
<title>Ejemplo de PHP</title>
</head>
<body>
<?php include("libpagina.phtml") ?>
<?php CabeceraPagina(); ?>
<TABLE>
<TR>
<TD><?php Indice() ?></TD>
<TD>
Esta es otra pgina<BR><BR>
completamente distinta<BR><BR>
pero comparte el pie y la cabecera con la otra.<BR><BR>

</TD>
</TR>
</TABLE>
<?php PiePagina(); ?>
</body>
</html>
ejem06a2.phtml
<!-- Manual de PHP de WebEstilo.com -->
<html>
<head>
<title>Ejemplo de PHP</title>
</head>
<body>
<?php include("libpagina.phtml") ?>
<?php CabeceraPagina(); ?>
<TABLE>
<TR>
<TD><?php Indice() ?></TD>
<TD>
Pgina 1
<BR><BR><BR><BR><BR>
Contenido blalbl blalb alb<BR><BR>
ms cosas...<BR><BR>
fin<BR><BR>
</TD>
</TR>
</TABLE>
<?php PiePagina(); ?>
</body>
</html>

Enlace externo con frame


Con este ejemplo damos solucin al problema de los enlaces externos y de
forma que la web externa queda en la parte inferior del frame y as no se sale
de nuestra web.
ejem06b.html
<!-- Manual de PHP de WebEstilo.com -->
<html>
<head>
<title>Ejemplo de PHP</title>
</head>
<body>
<A HREF="ejem06b2.phtml?
dire=http://www.webestilo.com">www.webestilo.com</A><BR><BR>
<A HREF="ejem06b2.phtml?dire=http://www.terra.es">www.terra.es</A>
</body>
</html>
ejem06a2.phtml
<!-- Manual de PHP de WebEstilo.com -->
<!-- frames -->
<FRAMESET ROWS="100,*">
<FRAME NAME="arriba" SRC="ejem06b3.html" MARGINWIDTH="10"
MARGINHEIGHT="10" SCROLLING="auto" FRAMEBORDER="0">
<FRAME NAME="abajo" SRC="<?php echo $dire ?>" MARGINWIDTH="10"
MARGINHEIGHT="10" SCROLLING="auto" FRAMEBORDER="0">
</FRAMESET>

Das könnte Ihnen auch gefallen