PHP - Discover. Share. Present

Anuncio
PHP » Manual de PHP » Iniciación a PHP
Conceptos básicos
El lenguaje PHP es un lenguaje de programación de estilo clásico, con esto
quiero decir que es un lenguaje de programación con variables, sentencias
condicionales, bucles, funciones.... No es un lenguaje de marcas como podría
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 podría ser una base de datos. El programa PHP
es ejecutado en el servidor y el resultado enviado al navegador. El resultado es
normalmente una página HTML pero igualmente podría 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 páginas PHP funcionen, el servidor donde están alojadas debe
soportar PHP.
Nuestro primer PHP
La ventaja que tiene PHP sobre otros lenguajes de programación que se
ejecutan en el servidor (como podrían 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
código HTML y en rojo el código 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 código 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 línea, la variable $i contiene el número de línea que se
está escribiendo.
No importa si no entiende muy bien el programa este ejemplo solo es para
ilustrar como se intercala el código HTML y el código PHP.
Variables
Una variable es un contenedor de información, en el que podemos meter
números enteros, números decimales, carácteres... el contenido de las
variables se puede leer y se puede cambiar durante la ejecución de una página
PHP.
En PHP todas las variables comienzan con el símbolo del dólar $ y no es
necesario definir una variable antes de usarla. Tampoco tienen tipos, es decir
que una misma variable puede contener un número y luego puede contener
carácteres.
<!-- 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 instrucción
echo hemos impreso el valor que contenían, insertando un salto de línea 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 función
con la instrucción global nombre_variable;
Operadores
Aritméticos
Los operadores de PHP son muy parecidos a los de C y JavaScript, si usted
conoce estos lenguajes le resultaran familiares y fáciles de reconocer.
Estos son los operadores que se pueden aplicar a las variables y constantes
numéricas.
Operador Nombre
Ejemplo Descripción
+
Suma
5+6
Suma dos números
-
Resta
7-9
Resta dos números
*
Multiplicación
6*3
Multiplica dos números
/
División
4/8
Divide dos números
%
Módulo
7%2
Devuelve el resto de dividir ambos
números, 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>
Comparación
Los operadores de comparación 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>
Lógicos
Los operadores lógicos son usados para evaluar varias comparaciones,
combinando los posibles valores de estas.
Operador Nombre Ejemplo
Devuelve cierto cuando:
&&
Y
(7>2) && (2<4)
Devuelve verdadero cuando ambas
condiciones son verdaderas.
and
Y
(7>2) and (2<4)
Devuelve verdadero cuando ambas
condiciones son verdaderas.
||
O
(7>2) || (2<4)
Devuelve verdadero cuando al menos
una de las dos es verdadera.
or
O
(7>2) or (2<4)
Devuelve verdadero cuando al menos
una de las dos es verdadera.
!
No
! (7>2)
Niega el valor de la expresión.
<!-- 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 Programación
Condicionales
Las sentencias condicionales nos permiten ejecutar o no unas ciertas
instrucciones dependiendo del resultado de evaluar una condición. Las más
frecuentes son la instrucción if y la instrucción switch.
Sentencia if ... else
<?php
if (condición)
{
Sentencias a ejecutar cuando la
condición es cierta.
}
else
{
Sentecias a ejecutar cuando la
condición es falsa.
}
?>
La sentencia if ejecuta una serie de instrucciones u otras dependiendo de la
condición que le pongamos. Probablemente sea la instrucción más importante
en cualquier lenguaje de programación.
<!-- 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 condición no es verdadera por lo que se ejecuta la parte de
código 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
ejecución de un conjunto de instrucciones mientras se cumpla una condición.
Sentencia while
<?php
while (condición)
{
intrucciones a ejecutar.
}
?>
Mientras la condición sea cierta se reiterará la ejecución de las instrucciones
que están 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 ejecución
del bucle, se va sumando 1 al valor de $i de manera que cuando $i vale 10 ya
no se cumple la condición y se termina la ejecución del bucle.
Sentencia for
<?php
for (inicial ; condición ; ejecutar en iteración)
{
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 instrucción for es la instrucción de bucles más completa. En una sola
instrucción nos permite controlar todo el funcionamiento del bucle.
El primer parámetro del for, es ejecutado la primera vez y sirve para inicializar
la variable del bucle, el segundo parámetro indica la condición que se debe
cumplir para que el bucle siga ejecutándose y el tercer parámetro es una
instrucción que se ejecuta al final de cada iteración y sirve para modificar el
valor de la variable de iteración.
Salida
Hasta ahora hemos usado la instrucción echo para realizar salida a pantalla,
esta instrucción es bastante limitada ya que no nos permite formatear la salida.
En esta página veremos la instrucción printf que nos da mucha más potencia.
Sentencia printf
<?php
printf(cadena formato, variable1, variable2...);
?>
La cadena de formateo indica cómo se han de representar las valores que
posteriormente le indicaremos. La principal ventaja es que además 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 carácteres especiales que
indican como formatear las variables que se incluyen en la instrucción.
Elemento
Tipo de variable
%s
Cadena de carácteres.
%d
Número sin decimales.
%f
Número con decimales.
%c
Carácter ASCII.
Aunque existen otros tipos, estos son los más importantes.
<!-- Manual de PHP de WebEstilo.com -->
<html>
<head>
<title>Ejemplo de PHP</title>
</head>
<body>
<?php
$var="texto";
$num=3;
printf("Puede fácimente intercalar <b>%s</b> con números <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 continuación
explicaremos las más usadas.







strlen(cadena). Nos devuelve el número de carácteres de una cadena.
split(separador,cadena). Divide una cadena en varias usando un
carácter 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 línea y los espacios finales de una
cadena.
strpos(cadena1, cadena2). Busca la cadena2 dentro de cadena1
indicándonos la posición 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,
ahorrándonos la necesidad de escribirlas de nuevo.
<?php
function Nombre(parametro1, parametro2...)
{
instrucción1;
instrucción2;
instrucción3;
instrucción4;
return valor_de_retorno;
}
?>
Opcionalmente podemos pasarle parámetros a las funciones que se trataran
como variable locales y así mismo podemos devolver un resultado con la
instrucción return valor; Esto produce la terminación de la función 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>
Librería
El uso de librerías es tremendamente útil, nos permiten agrupar varias
funciones y variables en un mismo fichero, de manera que luego podemos
incluir esta librería en distintas páginas y disponer de esas funciones
fácilmente.
<!-- Manual de PHP de WebEstilo.com -->
<?php
function CabeceraPagina()
{
?>
<FONT SIZE="+1">Esta cabecera estará en todas sus
páginas.</FONT><BR>
<hr>
<?
}
function PiePagina()
{
?>
<hr>
<FONT SIZE="-1">Este es el pie de página.</FONT><BR>
Autor: Joaquin Gracia
<?
}
?>
Ahora vamos a crear 2 páginas que usan la librería definida anteriormente para
conseguir que las dos paginas tengan la misma cabecera y pie de pagina.
La instrucción para incluir una librería en nuestra página es include("nombre de
librería")
<!-- Manual de PHP de WebEstilo.com -->
<html>
<head>
<title>Ejemplo de PHP</title>
</head>
<body>
<?php include("libreria01.phtml") ?>
<?php CabeceraPagina(); ?>
Página 1
<BR><BR><BR><BR><BR>
Contenido blalbl blalb alb<BR><BR>
más 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 página<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
Envío y recepción de datos
El lenguaje PHP nos proporciona una manera sencilla de manejar formularios,
permitiéndonos de esta manera procesar la información que el usuario ha
introducido.
Al diseñar un formulario debemos indicar la página PHP que procesará el
formulario, así como en método por el que se le pasará la información a la
página.
<!-- 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 botón Enviar el contenido de cuadro de texto es enviado a la página
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 tenía el mismo nombre que el cuadro de texto de
la página anterior y el valor que habíamos introducido. Pero por razones de
seguridad a partir de entonces para acceder a las variables del formulario hay
que usar el array de parámetros $_POST[] o $_GET[] dependiendo del método
usado para enviar los parámetros.
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 página anterior hemos comentado que los datos de un formulario se
envía mediante el método indicado en el atributo METHOD de la etiqueta
FORM, los dos métodos posibles son GET y POST.
La diferencia entre estos dos métodos radica en la forma de enviar los datos a
la página, mientras que el método GET envía los datos usando la URL, el
método POST los envía por la entrada estándar 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 método GET podemos ver los
parámetros pasados ya que están codificados en la URL.
Envio de emails
PHP nos ofrece la posibilidad de enviar emails de una manera sencilla y fácil,
para ello el lenguaje nos proporciona la instrucción mail( )
<?php
mail(destinatario, tema, texto del mensaje);
?>
En el parámetro destinatario pondremos la dirección de email a donde se
enviará el mensaje, en el parámetro tema el tema o subject del mensaje y el
parámetro texto del mensaje el cuerpo del mensaje en formato texto plano.
Existe una sintaxis extendida de la instrucción mail( ) que nos permite añadir
información adicional a la cabecera del mensaje.
<?php
mail(destinatario, tema, texto del mensaje, información adicional de
cabecera);
?>
En la información de cabecera podremos incluir parámetros 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 <[email protected]>\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 <[email protected]>\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 realización de este curso sobre PHP con acceso a base de datos
hemos elegido la base de datos MySQL por ser gratuita y por ser también la
mas empleada en entornos UNIX, para lo cual el servidor donde tenemos
alojadas las páginas 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
descripción de las tablas contienen la estructura de la información que
almacenaremos en ellas. Para lo cual usaremos en lenguaje de consultas SQL
común 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 unívocamente 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 administración 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 instrucción:
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)
);
Conexión 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 página 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 "Conexión con la base de datos conseguida.<br>";
mysql_close($link); //cierra la conexion
?>
</body>
</html>
Al ejecutar la instrucción mysql_connect creamos un vínculo entre la base de
datos y la pagina PHP, este vínculo será usado posteriormente en las consultas
que hagamos a la base de datos.
Finalmente, una vez que hemos terminado de usar el vínculo con la base de
datos, lo liberaremos con la instrucción mysql_close para que la conexión 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 programación hemos separado la función de conexión en una
librería a parte, de tal manera que la incluiremos en todas las páginas 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> Nombre</TD><TD> Apellidos </TD></TR>
<?php
while($row = mysql_fetch_array($result)) {
printf("<tr><td> %s</td><td> %s </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 instrucción mysql_query hemos
hecho una consulta a la base de datos en el lenguaje de consultas SQL, con la
instrucción 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 página 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> <B>Nombre</B></TD>
<TD> <B>Apellidos</B> </TD></TR>
<?php
while($row = mysql_fetch_array($result)) {
printf("<tr><td> %s</td> <td> %s </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 página PHP ejem07d.phtml es un formulario que nos permite
introducir nombre y apellido para añadirlo 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 añadirá los datos a la tabla.
La segunda página procesar.phtml se conecta a la base de datos y añade un
nuevo registro con la instrucción insert del lenguaje de base de datos SQL. Una
vez el registro se ha añadido se vuelve a cargar la página 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 más sencillos.
Para indicar que elemento vamos a borrar hemos usado un enlace a la página
borra.phtml pasándole el ID_Prueba de cada registro, de esta manera la página
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> <B>Nombre</B></TD>
<TD> <B>Apellidos</B> </TD>
<TD> <B>Borrar</B> </TD></TR>
<?php
while($row = mysql_fetch_array($result)) {
printf("<tr><td> %s</td><td> %s </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 página borra.phtml se conecta a la base de datos y borra el registro indicado
en la variable $id que ha sido pasado desde la página ejem07e.phtml. Una vez
el registro se ha borrado se vuelve a cargar la página ejem07e.phtml
Seguridad
Restringir el acceso
En esta sección vamos a explicar cómo podemos restringir el acceso a según
qué páginas, para que solo las personas autorizadas puedan acceder a ciertas
partes del nuestro sitio web.
Atención: El acceso restringido a páginas usando las variables globales
$PHP_AUTH_USER, $PHP_AUTH_PW y $PHP_AUTH_TYPE solo funciona si
PHP ha sido instalado como un módulo de Apache, si ha sido instalado como
un CGI los ejemplos de ésta sección no funcionarán.
Para conseguir la autentificación en las páginas usaremos el sistema de
autentificación 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. Contraseña introducida.
Para que el navegador nos muestre la ventana de petición de nombre de
usuario y contraseña 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 contraseña: $PHP_AUTH_PW<br>";
}
?>
Esto provoca que se muestre la ventana de nombre de usuario y contraseña 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 autorización y comprobaremos si el nombre
de usuario es Joe y la contraseña 123, si es así tendremos acceso al resto de
la página.
<?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>
Distinción de usuarios
En la anterior página todo el mundo que tenía acceso a la parte restringida
entraba con el mismo nombre de usuario y contraseña, esto evidentemente no
es una buena solución, es mejor que cada persona tenga un nombre de
usuario y contraseña, ya que de esta forma podemos inhabilitar a un usuario
sin ver comprometida la seguridad de nuestro sitio.
En esta página veremos la forma de realizar esto, teniendo un fichero separado
con los nombres de usuario y las contraseñas válidas. Dicho fichero podría
tener el siguiente formato: nombre_de_usuario|contraseña. Por ejemplo:
passwords.txt
Joe|1235
Pedro|qwer
Noe|Gty45e
kermit|rwe4v
En este ejemplo se pide la autorización al comienzo de la página si no se ha
establecido con anterioridad y se comprueba con el fichero de contraseñas que
hemos llamado passwords.txt, si el nombre de usuario y contraseña coincide
con alguna entrada del fichero se nos permite ver el resto de la página.
<?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 método ampliamente extendido en
cualquier aplicación de cierta entidad. Básicamente una sesión es la secuencia
de páginas que un usuario visita en un sitio web. Desde que entra en nuestro
sitio, hasta que lo abandona.
El término sesión en PHP, session en inglés, se aplica a esta secuencia de
navegación, para ello crearemos un identificador único que asignamos a cada
una de estas sesiones de navegación. A este identificador de sesión se le
denomina, comúnmente, como la sesión.
El proceso en cualquier lenguaje de programación podría ser algo así:
Existe una sesión?
Si existe la retomamos
Si no existe creamos una nueva
Generar un identificador único
Y para que no perdamos el hilo de la navegación del usuario deberemos
asociar esta sesión a todas las URLs y acciones de formulario. Podemos
también crear un cookie que incluya el identificador de sesión, 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 teoría pura y es aplicable a cualquier lenguaje de
programación C, Perl, etc. Los que programamos en PHP4 tenemos la suerte
de que toda la gestión de sesiones la hace el mismo PHP.
Por lo tanto lo comentado a partir de aquí es solo aplicable a PHP4. Si aún
desarrollas PHP3, tendrás que crear tus propias librerías de gestión de
sesiones o recurrir a alguna de las existentes, como la de PHPLIB .
Inicialización de la sesión
Por: Jose Valle
Para utilizar sesiones en PHP lo primero es inicializarlas. Podemos hacerlo
explícitamente, mediante la función session_start(), o al registrar una variable
en una sesión mediante session_register('miVariable'). En ambos casos se crea
una nueva sesión, si no existe, o se retoma la sesión actual. Veamos un
sencillo ejemplo:
<?php // Manual de PHP de WebEstilo.com
session_start();
echo "He inicializado la sesión";
?>
Esta es la forma más básica, si el usuario tiene los cookies activados, PHP
habrá insertado de forma automática la sesión y ésta será pasada de una
página a otra sin hacer nada más. Desde un punto de vista práctico la sesión
es operativa, pero no vemos nada. Podemos obtener la sesión en cualquier
momento mediante la función session_id(). Inserta en las sucesivas páginas la
siguiente línea para ver si la sesión está disponible:
<?php // Manual de PHP de WebEstilo.com
session_start();
echo 'La sesión actual es: '.session_id();
?>
En este caso session_start() comprueba en los cookies que existe una sesión y
continua con ella, session_id() devuelve el identificador actual.
Ejemplo práctico
Por: Jose Valle
Veamos otro ejemplo que, tal vez, te lo aclare un poco más:
<?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 sesión se crea o recoge mediante session_start(), o
también cuando se registra una variable de sesión mediante session_register().
Si no has utilizado nunca las sesiones, el concepto de variable de sesión,
puede resultar un poco abstracto. Básicamente es una variable, como
cualquiera de las que gestiona PHP4, pero que reside en un espacio específico
en el servidor, junto con el identificador de sesión, y que pertenece únicamente
a un usuario.
En nuestro ejemplo anterior, registramos la variable $contador en la primera
línea del script. En la segunda línea, entre otras cosas, cada vez que
recarguemos la página o hagamos click sobre el enlace, el valor de $contador
se incrementará en 1.
En esta línea hacemos uso de la variable reservada $PHP_SELF, que hace
referencia al propio script en ejecución y una constante propia de PHP4, $SID,
que contiene el nombre de la sesión y el identificador de la misma.
Podemos averiguar también el nombre de la sesión, o modificarlo, mediante la
función session_name(). Veamos una prueba práctica:
<?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 sesión '.$misesion.'<br>';
?>
La asignación del nombre de sesión debe realizarse antes que ninguna otra
función con sesiones, antes que session_start() o session_register().
Error común
Por: Jose Valle
Uno de los errores más comunes cuando se utilizan sesiones es dejar líneas en
blanco antes de la inicialización de PHP o enviar alguna salida a la pantalla.
Para probarlo crea una línea en blanco o con cualquier cosa antes de <?php.
Si tienes los cookies activados, te encontrarás 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 línea en blanco. Como medida práctica, no dejes espacios ni
antes del inicio del script, ni después de la finalización.
Te ahorrará muchos disgustos.
Si después de todo lo comentado aún no entiendes para que sirven las
sesiones, veamos un ejemplo práctico. Imagina que quisieras crear un sistema
de cesta de la compra...
Carrito de compra
Por: Jose Valle
Si después de todo lo comentado aún no entiendes para que sirven las
sesiones, veamos un ejemplo práctico. Imagina que quisieras crear un sistema
de cesta de la compra, en su forma básica podría 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="Añadir 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 'Artículo: '.$k.' ud: '.$v.'<br>';
}
}
?>
</tt>
</body>
</html>
Una breve explicación. En la línea 4 comprobamos si el usuario ha pasado
algún artículo, 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 líneas 8 y 13, y si encontramos un artículo
igual, añadimos la cantidad en la línea 10. Si no lo encontramos, es un nuevo
artículo, por lo tanto, añadimos el nuevo producto con la correspondiente
cantidad a itemsEnCesta en la línea 14.
Y a continuación imprimimos el formulario y los resultados, si los hubiera, a
partir de la línea 18, donde empieza el HTML.
¿Te imaginas las posibilidades de un sistema de almacenamiento de
información de estas características?. No necesitas ficheros, ni bases de datos,
ni tienes que andar pasando valores de una página a otra. PHP va gestionando
estos datos por nosotros, hasta el momento en que decidamos almacenar la
información donde más nos interese.
Estas son las funcionalidades básicas 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 Gallús Lahoz y Joaquin Gracia.
La principal utilidad de las cookies (galletas) es la de solventar el problema de
la falta de estado en la navegación a través de las paginas web.
Con las cookies, pequeñas porciones de información se quedan registradas en
el navegador permitiendo identificar a este a través de diferentes páginas de un
mismo sitio e incluso durante visitas entre distintos días.
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 envía estas cookies al servidor permitiendo así la identificación del
cliente en el servidor.
Funcionamiento
La cookie es enviada al navegador desde el servidor y si este la acepta
permanece en él.
Las páginas piden la cookie al navegador...
El navegador las envía, permitiendo la identificación del usuario por parte del
servidor.
A continuación vamos a ver como usar las cookies para nuestro beneficio.
Cómo usar las cookies
Por: Carlos Gallús Lahoz y Joaquin Gracia.
El manejo de cookies en PHP se realiza mediante el uso de la función
setcookie, esta función esta disponible a partir de la versión 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
información 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 restricción
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.
También podemos reemplazar cualquier argumento con una cadena
vacía ("").
 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 duración, para especificar la duración 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
través de una conexión 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) válida para todo el dominio
webestilo.com
Ejemplo de uso de cookies
Por: Carlos Gallús Lahoz y Joaquin Gracia.
En este ejemplo vamos a ver como establecer una cookie y cómo 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 página 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 duración 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á válida durante 1 hora.
</body>
</html>
En este ejemplo vemos lo fácil 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 » Instalación PHP MySQL » Instalación y Configuración
Instalación de Apache + PHP +
MySQL 1/3
Por: Carlos Gallús Lahoz.
C.E.S. Fundación San Valero.
Instalación del servidor Apache
A continuación vamos a explicar la instalación de un servidor Apache en un
sistema operativo Windows 98. Debemos tener en cuenta que esta versión es
una versión beta de calidad. Esto significa que no ofrece la estabilidad y
seguridad que la versión de unix, de hecho existen numerosos errores e
inconsistencias, aun así es suficiente para realizar pruebas en nuestro
ordenador.
Comencemos con la instalación:
El archivo de instalación 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 instalación standard de aplicaciones win32, así
que nos limitaremos a elegir las opciones que nos muestre el programa de
instalación, es muy sencillo ya que solo pide rutas de instalación 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 instalación vamos al directorio donde tenemos instalado
el servidor, en el directorio "\conf\" es donde se alojan los archivos de
configuración del servidor. Dentro de este directorio se encuentra el archivo
"httpd.conf" este es el archivo de configuración 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 línea que ponga "ServerName". Lo más probable
es que encontremos la siguiente línea:
#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 ubicación del menú de inicio "Inicio|
Apache Web Server|star Apache", o por el contrario en la ubicación que
hayamos indicado durante la instalación. 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 deberíamos ver la página que
aparece en la fotografía inferior. Esta es la página de chequeo que por defecto
incluye Apache. En caso de no verla es que no hemos realizado correctamente
algún paso anterior.
Por defecto las páginas estarán alojadas en la siguiente dirección de nuestra
máquina:
C:\Directorio de instalación 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 dirección "http://127.0.0.1" el explorador cargará la
página index.html del directorio C:\Directorio de instalación de Apache\htdocs\.
Si tenéis alguna duda sobre todo lo dicho o queréis saber algo más sobre
Apache, en el directorio htdocs\manual existe información mucho más extensa
sobre el funcionamiento, configuración e instalación de Apache
Instalación de Apache + PHP +
MySQL 2/3
Por: Carlos Gallús Lahoz.
C.E.S. Fundación San Valero.
Instalación 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 sección Rutas y Directorios. Comprobamos que el
apartado "extension_dir" tenga el valor "./" esto indica el directorio actual de
PHP y donde se encontrarán las extensiones de PHP.
En la siguiente sección tenemos las extensiones de PHP, que nos proporcionan
funciones extra a nuestro interprete de PHP (muchas de estas extensiones no
funcionarán correctamente bajo Windows98).
Seleccionamos las que necesitemos, esto lo hacemos quitando el ";" al
principio de la línea. Debemos comprobar que el archivo al que se hace
referencia esta en nuestro directorio de PHP ("C:\PHP4\").
En este archivo podemos configurar muchas más 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 continuación vamos al directorio donde teníamos instalado Apache y en el
directorio "/config/" editamos el archivo "httpd.conf" donde deberemos introducir
las siguientes directivas de configuración.
Vamos a la sección "ScriptAlias". En esta sección indicamos el alias que tendrá
la ruta donde se encuentra nuestro intérprete de PHP. Debemos tener la
siguiente línea.
ScriptAlias /cgi-bin/ "C:/Archivos de programa/Apache Group/Apache/cgi-bin/"
La línea anterior es un directorio que Apache tiene por defecto para ejecutar
scripts. Debajo de esta línea debemos introducir:
ScriptAlias /PHP4/ "C:\PHP4\"
En la sección Addtype, se encuentra la configuración que indica al intérprete
que archivos debe procesar. Añadimos:
Addtype application/x-httpd-php .php4
Addtype application/x-httpd-php .phtml
En la sección Action, indicamos cual es el archivo que sirve de intérprete de
PHP. Añadiremos:
Action application/x-httpd-php "/PHP4/php.exe"
Una vez echo esto guardamos el archivo y creamos una página de prueba.
Guardaremos el archivo en formato de texto plano. Abrimos un archivo nuevo y
escribimos el código inferior:
<?php
echo "Hola, mi primera página PHP";
phpinfo();
?>
Una vez escrito el código 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 dirección:
"http://127.0.0.1/info.php4". El resultado es una pantalla con información sobre
la versión de PHP que utilizamos, además de información 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 más información en el manual de referencia de
PHP
.
Instalación de Apache + PHP +
MySQL 3/3
Por: Carlos Gallús Lahoz.
C.E.S. Fundación San Valero.
Instalación de MySQL
MySQL es un sistema gestor de bases de datos, este nos permite guardar
información y poder realizar páginas más dinámicas, por ejemplo, podemos
guardar contraseñas, direcciones de correo, realizar foros de discusión,
contadores, aparte de guardar cualquier tipo de información que nos sea de
interés. Para poder manejarnos con él deberemos tener unos conocimientos
mínimos del lenguaje SQL.
Una vez que tengamos el archivo de instalación 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 instalación "Setup.exe" donde indicaremos las rutas
que queremos para su instalación.
Una vez terminada la instalación 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 sesión deberemos escribir "exit;". No voy ha explicar en este
artículo el funcionamiento de MySQL, porque no es su cometido, para ello
existen otras secciones donde se explican estos temas. Pero si queremos más
información sobre la configuración 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 pequeño web-site. Debo insistir que todos
estos programas están 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.
Instalación de PHP sobre PWS4.0
Por: Fernando Arias.
Estos sencillos pasos nos explican cómo instalar felizmente el PHP4 sobre una
máquina basada en Windows 95 o 98. Es relativamente sencillo, y no debería
dar muchos problemas, si se siguen cuidadosamente. La documentación que
viene con el programa es bastante buena, aunque a veces parece que está aún
pensada para las versiones 3 del PHP, por lo que deberíamos consultarla si
nos atascamos. Si de todos modos, lo tuyo no es el inglés, mándame un mail y
veré qué puedo hacer.
1. Descomprimir el archivo php-4.0.2-Win32.zip (o más reciente) desde
es.php.net
2. Meter todos los archivos en una carpeta, como por ejemplo "c:\php"
3. Copiar las .dlls necesarias (básicamente 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 botón
derecho seleccionar "Edición") 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 páginas, y darle privilegios de Ejecución.
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 pestaña
"Avanzada" (es la última). Agregar un directorio virtual (o editar uno
existente), y en sus propiedades, marcar la casilla de "Ejecución" (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 página de prueba y acceder a ella. Por ejemplo, abrimos un
archivo nuevo con el Notepad y escribimos en él lo siguiente:
<HTML>
<HEAD>
<TITLE>Página de prueba de instalación de PHP</TITLE>
</HEAD>
<BODY>
<?
phpinfo();
?>
</BODY>
</HTML>
Guardarlo como prueba.php en la carpeta de publicación. 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 instalación cuidadosamente, a pesar de que todo debería funcionar, a
pesar de los pesares... no funcionaba. Sin embargo, si utilizaba cualquier otra
extensión (por ejemplo, .phtml) y la registraba en
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
\w3svc\parameters\Script Map esa extensión sí me funcionaba, pero no la
extensión .php, a pesar de que en todo el registro de Windows no se hacía
mención a ella. El problema estaba en el PWS, y no tuve más remedio que
desinstalarlo y volverlo a instalar, entonces todo funcionó perfectamente.
Instalación de PHP sobre IIS
Por: Fernando Arias.
La instalación sobre NT y 2000 puede variar ligeramente entre diferentes
versiones, pero siguiendo estas líneas 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 más reciente) desde
es.php.net
2. Meter todos los archivos en una carpeta, como por ejemplo "c:php"
3. Copiar las .dlls necesarias (básicamente 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 -> Configuración -> Paneles de control
Inicio -> Programas -> Windows NT 4.0 Option Pack -> Personal Web
Server
5.
6.
7.
8.
9.
Inicio -> Configuración -> Paneles de control -> Herramientas
Administrativas (en Windows 2000)
Buscamos el item de nuestro servidor Web (suele aparecer como "Sitio
Web Predeterminado")
Con el botón derecho, seleccionar en el menú emergente Propiedades
Ir a la pestaña "ISAPI filters", y Añadir 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 pestaña "Home Directory". En la sección de "Application Settings",
pulsar el botón "Configuration...". Añadir un nuevo "Application Mapping":
el ejecutable es el mismo de antes: "C:\php\php4isapi.dll". La extensión
es ".php" (ojo, con un punto delante). Marcar "All verbs" (esto creo que
puede variar según la versión 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 configuración "Servicios"
y desde allí detener completamente el servicio de publicación 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 página de prueba y acceder a ella. Por ejemplo, abrimos un
archivo nuevo con el Notepad y escribimos en él lo siguiente:
<HTML>
<HEAD>
<TITLE>Página de prueba de instalación de PHP</TITLE>
</HEAD>
<BODY>
<?
phpinfo();
?>
</BODY>
</HTML>
Guardarlo como prueba.php en la carpeta de publicación. 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 autentificación de usuarios HTTP (HTTP-Auth)
deberíamos saltarnos el paso 7 (instalación de filtros ISAPI)
PHP » Artículos sobre PHP » PHP Perfect Form Items v1.0 (Formularios sin
errores)
PHP Perfect Form Items v1.0
(Formularios sin errores)
Por Jose Carlos García
¿Cuántas veces que hemos necesitado integrar
código PHP con elementos de formularios,
Artículos publicados: 1
hemos conseguido una mezcla de HTML y
Valoración media: 3.6/5
etiquetas <?php ?> disminuyendo la legibilidad del
Usuario desde: 11/12/2004
código o haciendo que tengamos que escribir más
lineas de la cuenta?
Con estas sencillas pero útiles funciones podremos sin problemas emplazar
campos a los formularios que diseñemos sin tantos quebraderos de cabeza.
Las funciones que se explican en este artículo se encuentran en la siguiente
dirección http://www.distintiva.com/jose/_perf_form/perf_form.zip. El código
puede ser cambiado, mejorado y distribuido libremente. Ha sido programado
totalmente por Jose Carlos García de Distintiva Solutions (www.distintiva.com).
Empecemos con el ejemplo más difícil y el causante de que tuviera que
programar estas funciones.
<SELECT>
Crear elementos de selección <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>Más de 50</option>
<select/>
Esto se complica cuando hay que hacerlo de forma dinámica 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 aún más cuando una opción debe estar preseleccionada.
La función 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
opción
$extra_tag= [opcional] por si necesitamos incluir información adicional al
select, como por ejemplo $extra_tag=” class=cssazul ” o $extra_tag=”
onChange=alert()”
Ejemplo:
$arr_txt=array(‘españa’, ‘portugal’, ‘francia’);
$arr_vals=array(‘ES’, ‘PT’, FR’);
<?=frm_select (‘paises’, $arr_txt, $arr_vals) ?>
De esta forma cualquier modificación sólo 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 algún campo requerido. Para
hacer esto de forma sencilla tan solo tenemos que usar el parámetro $default
de la siguiente forma:
<?=frm_select (‘paises’, $arr_txt, $arr_vals, $_POST[‘paises’]) ?>
(o $_GET dependiendo el método que usemos en nuestro formulario)
<SELECT> (tipo lista con varios elementos visibles)
Funciona exactamente igual que el anterior pero en este caso tenemos la típica
lista de selección con scroll mostrando X elementos.
La función es:
frm_list($name,$size, $arr_txt, $arr_vals, $default='', $extra_tag='')
En este caso el nuevo parámetro es $size que indica cuántos elementos serán
mostrados visiblemente en la lista.
<SELECT> (tipo lista con varios elementos visibles y con
multiselección)
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 función es:
frm_list_multi($name, $size, $arr_txt, $arr_vals, $default='', $extra_tag='')
... Y también tenemos funciones correspondientes para los demás elementos
de formulario aprovechando la capacidad de mantener el valor entre posts.
<CHECKBOX>
No hace falta decir para que sirven estos elementos. La función 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 función:
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 = Tamaño del campo de texto
$max_length = Longitud máxima 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 versión 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 configuración
Artículos publicados: 7
del PHP por defecto. Pero esto puede provocar
Valoración media: 3.72/5
que nuestras páginas dejen de funcionar.
Usuario desde: 20/06/1998
La directiva register_globals cuando esta activada (estado que estaba por
defecto antes de la versión 4.2.0 de PHP), provoca que automáticamente se
generen variables globales para cookies y valores enviados por get y post entre
otros.
Por ejemplo:
Si llamábamos a una página con http://www.internet.com/prueba.php?var1=4,
esto provocaba que en la página prueba.php automáticamente se generase la
variable $var1 con el valor 4.
Por razones de seguridad este comportamiento automático se ha cambiado,
estableciendo el valor por defecto de register_globals a off.
Este cambio puede producir que nuestras antiguas páginas dejen de funcionar,
ante esto tenemos dos opciones:


Activar el register_globals a on.
Dejar register_globals a off y cambiar nuestras páginas por las
referencias adecuadas a cada caso. Esta es la opción más
recomendable.
¿Cómo debemos hacer este cambio?
Debemos buscar todas aquellas variables que son definidas automáticamente,
variables del servidor, que provienen de get o post, cookies, files, variables de
entorno o sesión.
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 teníamos el siguiente script:
print "Su edad: ".$edad; //cookie
print "Navegador: ".$HTTP_USER_AGENT;
print "Variable: ".$var; //variable de get
Deberíamos 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 Gallús
Artículos publicados: 3
La mayoría de los lenguajes de programación
Valoración 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 características como es el caso de PHP.
La programación OO principalmente hace uso de clases, objetos, relaciones,
instancias, propiedades y métodos.
Objetos y clases
Cuando hablamos de software OO los objetos casi siempre son elementos
físicos, 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 programación OO esta pensada para construir objetos que contienen
atributos y operaciones de manera que cubran nuestras necesidades. Los
atributos son variables que contienen información del estado de un objeto. Y
las operaciones también conocidas como métodos, funciones y acciones
realizan modificaciones del propio objeto o realizan alguna acción externa a
éste.
Una de las principales ventajas de la programación OO es el concepto de
encapsulación, conocido también como protección de datos, mediante el cual
solo se pueden modificar los datos de un objeto accediendo a través de sus
métodos u operaciones (interfaz del objeto). Nunca se pueden modificar
directamente desde la aplicación 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,
añadir mejoras o corregir errores sin necesidad de cambiar su interfaz. Ya que
en caso contrario un proyecto estaría sujeto a un mayor número de fallos y los
cambios serían más costosos.
En algunas áreas de la programación de aplicaciones Web el uso de la
programación OO está desestimada, usándose una metodología estructurada
basada en funciones, esto es debido a que determinados proyectos no son lo
suficientemente extensos como para aplicarles una metodología OO.
En la programación OO los objetos son únicos y son instancias a una clase
determinada. En principio se define la clase con los atributos y métodos
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 sería un tipo de dato definido por nosotros.
Cómo crear clases, atributos y operaciones en PHP
Hasta ahora hemos hablado de las clases de una forma conceptual, a
continuación veremos como se crean, para crear una clase en PHP usaremos
la palabra reservada class.
La estructura mínima 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 métodos declarando funciones dentro de la definición de la
clase, el siguiente código crea una clase llamada NombreClase con dos
operaciones que no hacen nada. A metodo1 no le pasamos ningún parámetro y
a metodo2 le pasamos dos parámetros.
class NombreClase {
function metodo1() {
}
function metodo2($param1, $param2) {
}
}
PHP orientado a
objetos. Parte II
Qué es el constructor de una clase
Por Carlos Gallús
Artículos publicados: 3
Valoración media: 3.72/5
Usuario desde: 01/08/2002
Las clases soportan un tipo de función especial que se conoce como
constructor. El constructor es llamado cuando se crea el objeto. Normalmente
utiliza para inicializar tareas como: asignación 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 métodos, 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 propósito
es ser llamado automáticamente cuando un objeto es creado. A continuación
veremos como se declara el constructor de una clase:
class NombreClase {
function NombreClase($param) {
echo "Constructor llamado con el parámetro $param";
}
}
Cómo usar objetos, instanciar una clase
Después 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. También
debemos indicar a que clase va a instanciar el objeto que creemos y pasarle
los parámetros (si los requiere) al constructor, en el siguiente código 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 código 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 parámetro Primero
Constructor llamado con el parámetro Segundo
Constructor llamado con el parámetro
Cómo 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 (métodos) de la siguiente forma $this->atributo, a
continuación podemos ver el código de ejemplo del acceso a un atributo de
clase desde un método 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 declarándolos como privados o protegidos ("private", "protected"). PHP
no soporta esta característica y todos atributos y métodos pueden ser vistos
desde fuera de la clase, lo que quiere decir que siempre son públicos.
Podemos realizar la misma acción 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 están permitidas en PHP, pero no es una práctica
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 encapsulación por esta razón aunque PHP no permita
ocultar los atributos o métodos de una clase, nosotros deberíamos no acceder
directamente a ellos, para diferenciarlos de los públicos es conveniente
también poner "m_" (de miembro lo cual significa que solo serán usados dentro
de la clase) delante de los nombres de métodos 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,
deberíamos escribir funciones de acceso, tanto para establecer como para
coger valores. Deberíamos tener un código 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 código y tener una sección de código
encargada de acceder a los atributos para mantener la encapsulación, y que no
sean accedidos directamente. Además si seguimos estas prácticas aumentará
la calidad de nuestro software ya que podremos introducir comprobaciones de
datos, como rangos, valores permitidos, etc. Veamos un ejemplo de validación
de datos a la hora de asignar un valor a atributo mediante el método
set_atributo:
function set_atributo($valor_nuevo) {
if ($valor_nuevo > 100) {
$this->atributo = $valor_nuevo;
}
}
En el código superior vemos que cuando queremos asignar a atributo valores
inferiores a 100 no nos deja, y atributo seguirá manteniendo su valor.
Cómo usar los métodos de una clase
Los métodos 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 método A";
}
function metodob($parametro1) {
return "Método B llamado con parámetro: ".$paramtro1;
}
}
Creamos un objeto de la case nombreClase con el nombre $obj de la siguiente
forma:
$obj = new nombreClase();
Los métodos de un objeto, son llamados de la misma forma que se llaman a
funciones normales, pasándoles como es el caso de metodob el parámetro que
necesiten. Como los métodos son funciones que pertenecen a un objeto,
deberemos indicar en la llamada el objeto que los incluye, la forma de llamar a
un método es idéntica a como llamamos a los atributos de un objeto.
$obj->metodoa();
$obj->metodob("parámetro que pasamos");
Si nuestras operaciones, devuelven algún valor, lo capturamos asignándoselo a
una variable, podemos ver el siguiente ejemplo
$txt_retorno = $obj->metodob("Hola");
$txt_retorno contendrá la cadena de texto:
"Metodo B llamado con parámetro: Hola"
PHP orientado a
objetos. Parte y III
Qué es la Herencia en PHP y como
implementarla
Por Carlos Gallús
Artículos publicados: 3
Valoración 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 métodos 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
código podremos ver como creamos una clase llamada SubClaseA que
heredará los métodos 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 métodos
de la clase ClaseA, por lo tanto el siguiente código es válido:
$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 métodos
y atributos definidos en ClaseA como si estuvieran contenidos en SubClaseA.
Debemos tener en cuenta que la herencia solo trabaja en una dirección, la
subclase o clase hija hereda las características de su clase padre o superclase,
pero la clase padre no posee las características de la hija. Para el caso anterior
ClaseA no tendría atributo2 ni metodo2();
Como sobrescribir métodos 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 operación() {
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 operación de la clase A, entonces escribimos:
Class B extends A {
var $atributo = 'valor cambiado';
function operación() {
echo 'Clase B:<br>';
echo 'El valor de \$atributo ahora es $this->atributo<br>';
}
}
Como podemos observar hemos definido una variable y una operación en B
con el mismo nombre que tenían en A.
Como se ha comentado anteriormente aunque declaremos B no afecta a la
definición 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
función 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 métodos de sus clases
padres, en este caso A y B.
¿Soporta PHP la herencia múltiple?
Algunos lenguajes OO soportan herencia múltiple, 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
ningún tipo de restricción en cuanto a el número de subclases que pueden
heredar de una misma clase padre o superclase.
Qué es el polimorfismo y como implementarlo
Cualquier lenguaje de programación orientado a objetos debe soportar el
polimorfismo, esto significa que clases diferentes tendrán un comportamiento
distinto para la misma operación. Esto lo veremos más claro con el siguiente
ejemplo.
Supongamos que tenemos dos clases distintas coche y ciclomotor. Ambas
tienen sus propios métodos 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 métodos,
supongamos ahora que tenemos otra clase que controla el movimiento de
todos los vehículos, es aquí donde entra en juego el polimorfismo, que
dependiendo del objeto que tratemos actuará de una forma u otra el método al
que llamamos.
class movimiento {
function mover_adelante($obj) {
$obj->avanza();
}
}
Supongamos que queremos mover cualquier vehículo hacia adelante entonces
haríamos:
$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 avanzaría hacia adelante.
$obj_movimiento->mover_adelante($obj_ciclomotor);
Como podemos ver el mismo método del objeto movimiento actúa de dos
formas diferentes dependiendo del objeto que le pasamos como parámetro.
Conexión a SQL Server
A continuación 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
Artículos publicados: 7
Valoración 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 instalación
automática, así que tendrás que bajar, si no lo tienes ya, el paquete con la
instalación completa.
Descomprime el paquete con la distribución 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 librería 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 línea en la que pone "extension_dir = " y modifícala para que apunte
al directorio donde hemos copiado la DLL. Con esto le indicamos al PHP donde
están las DLL de extensión.
Ahora busca la línea ";extension=php_mssql.dll" y modifícala quitándole el ";"
del principio.
Graba el fichero PHP.ini y ya está.
Ejemplo de conexión
Solo nos queda probar que funciona la conexión con el servidor SQL Server,
para ello vamos a conectarnos con la base de datos “Northwind” que viene
como ejemplo en la instalación 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 pequeño
Código
<?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"> </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"> </font></td>
";
endif;
if($dayofweek == 6 || $i == $days):
echo " </tr>
";
endif;
endfor;
?>
</table>
Calendario [Español]
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.
Código
<?
$_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>Pequeño Calendario</title>
<body>
<table border="0" cellspacing="0" cellpadding="0">
<tr bgcolor="#3366CC">
<td bgcolor="#3366CC">  </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> ".$meses[date ("n", $Day)].
"  <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> ".$WeekDays[$i]." </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"> </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> 
$year <a href="$_PHP_LINK?Day=$next">$fontb >> $fonte</a>");
print ("</td></tr></table>");
?>
</td>
<td bgcolor="#3366CC">  
</td>
</tr>
</table>
</body>
</html>
PHP » Manual de PHP » Ejemplos Prácticos
Formateo de página
En este ejemplo vamos a usar el PHP y la capacidad de definir librerías para
conseguir que todas nuestras páginas tengan el mismo formato de página,
incluyendo las partes comunes en librerías. Así mismo modificando la librería
modificaríamos tambien todas las páginas de una manera muy rápida.
libpagina.phtml
<!-- Manual de PHP de WebEstilo.com -->
<?php
function CabeceraPagina()
{
?> <FONT SIZE="+1">Esta cabecera estará en todas sus
páginas.</FONT><BR>
<hr>
<? }
function PiePagina()
{
?>
<hr>
<FONT SIZE="-1">Este es el pie de página.</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 página<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>
Página 1
<BR><BR><BR><BR><BR>
Contenido blalbl blalb alb<BR><BR>
más cosas...<BR><BR>
fin<BR><BR>
</TD>
</TR>
</TABLE>
<?php PiePagina(); ?>
</body>
</html>
Enlace externo con frame
Con este ejemplo damos solución 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>
Descargar