Beruflich Dokumente
Kultur Dokumente
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.
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
Resta
7-9
Multiplicacin
6*3
Divisin
4/8
Mdulo
7%2
++
Suma 1
$a++
--
Resta 1
$a--
Comparacin
Los operadores de comparacin son usados para comparar valores y as poder
tomar decisiones.
Operador Nombre
==
Igual
$a == $b $a es igual $b
!=
Distinto
$a != $b $a es distinto $b
<
Menor que
>
Mayor que
<=
>=
Lgicos
Los operadores lgicos son usados para evaluar varias comparaciones,
combinando los posibles valores de estas.
&&
and
||
(7>2) || (2<4)
or
(7>2) or (2<4)
No
! (7>2)
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.
}
?>
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.
}
?>
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
%f
%c
Carcter ASCII.
<?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.
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
</body>
</html>
$_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
Bases de Datos
?>
</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> <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 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> <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 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.
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
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>
Cookies
Funcionamiento
La cookie es enviada al navegador desde el servidor y si este la acepta
permanece en l.
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.
<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>
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:
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.
5.
6.
7.
8.
9.
PHP Artculos sobre PHP PHP Perfect Form Items v1.0 (Formularios sin
errores)
<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='')
<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='')
PHP orientado a
objetos. Parte I
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.
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;
}
PHP orientado a
objetos. Parte II
Qu es el constructor de una clase
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
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;
PHP orientado a
objetos. Parte y III
Qu es la Herencia en PHP y como
implementarla
Como podemos ver el mismo mtodo del objeto movimiento acta de dos
formas diferentes dependiendo del objeto que le pasamos como parmetro.
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);
";
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 [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">
<!--
}
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>
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>