Video tutorial: Integrar fotos de Flickr en sitios Web o Blogs (jQuery, API Flickr, PHP)
Publicado por Héctor Guedea en 5:04 PMMenú dinámico / activo con categorías y sub-categorías en PHP y CSS
Publicado por Héctor Guedea en 2:28 PM
Después del post (Menú activo con CSS y PHP), me llego una pregunta sobre cómo mantener seleccionada la categoría, tras haber dado click en una sub-categoría, es decir:
Tengo un menú horizontal, el cual tengo las categorías principales: Inicio - Servicios - Portafolio, a su vez tengo un menú vertical con las sub-categorías, ejemplo: Servicios -> Desarrollo web, quiero mantener activo el item de la categoría y además el item de la sub-categoría al entrar a ella.
¿Cómo se hace esto?
Tomaremos como ejemplo el CSS del post anterior para dar diseño a nuestros menus, de tal forma que quedará lo siguiente:
HTML
#menu, #menu-vertical{
padding: 0;
width: 100%;
background: transparent;
voice-family: "\"}\"";
voice-family: inherit;
}#menu ul{
font: bold 11px Arial;
margin:0;
margin-left: 20px;
padding: 0;
list-style: none;}
#menu li{
display: inline;
margin: 0 2px 0 0;
padding: 0;
text-transform:uppercase;
}#menu-vertical li{
display:block;
margin: 15px 0 0 0;
padding: 0;
text-transform:uppercase;
}#menu a {
float: left;
display: block;
color: white;
margin: 0 1px 0 0; /*Margenes entre el menu*/
padding: 5px 10px;
text-decoration: none;
letter-spacing: 1px;
background-color: black; /*Color por Default*/
border-bottom: 1px solid white;
}#menu-vertical a {
color: white;
margin-left:0px;
padding:5px;
text-decoration: none;
letter-spacing: 1px;
background-color: black; /*Color por Default*/
border-bottom: 1px solid white;
}#menu a:hover{
background-color: #535353; /*Menu hover bgcolor*/
}#menu #current a, #menu-vertical #current a{ /*TAB seleccionado, Página Actual*/
background-color: #80931D;
border-color: #80931D;
}
.clean {clear:both;}
<div id="menu">
<ul>
<li <?php Menu("/lab/menuactive/active-menu.php","");?> ><a href="active-menu.php" title="Inicio" class="active">INICIO</a></li>
<li <?php Menu("/lab/menuactive/active-menu2.php",""); ?> ><a href="active-menu2.php" title="segundo" class="active">SEGUNDO</a></li>
</ul></div>
<div class="clean"></div>
<div id="menu-vertical">
<ul>
<li <?php Menu("/lab/menuactive/active-menu.php","/lab/menuactive/active-menu-principal.php"); ?> ><a href="active-menu-principal.php" title="Inicio" class="active">Principal</a></li>
<li <?php Menu("/lab/menuactive/active-menu.php","/lab/menuactive/active-menu-principal2.php"); ?> ><a href="active-menu-principal2.php" title="segundo" class="active">Secundario</a></li><li <?php Menu("/lab/menuactive/active-menu2.php","/lab/menuactive/active-menu-principal3.php"); ?> ><a href="active-menu-principal3.php" title="Inicio" class="active">Principal de Segundo</a></li>
</ul></div>
PHP
function Menu ($direccion,$subdireccion) {DESCARGAR ARCHIVOS
/* El array $secciones, mantiene los enlaces de las categorías y sub-categorías,
active-menu.php es la categoría que tiene como sub-categorías a active-menu-principal.php
y active-menu-principal2.php, es ahí donde debes agregar las sub-categorías, para que
funcione el script. */
$secciones = array(
"/lab/menuactive/active-menu.php" => array (
"/lab/menuactive/active-menu-principal.php",
"/lab/menuactive/active-menu-principal2.php"
),
"/lab/menuactive/active-menu2.php" => array (
"/lab/menuactive/active-menu-principal3.php"
)
);
//Obtiene el URL actual
$url = $_SERVER['PHP_SELF'];
//Aquí es donde se hace la magía
foreach ($secciones as $llave=>&$valor)
{
if($direccion==$llave && $subdireccion==$url){
echo 'id="current"';
}
if($direccion==$llave && $subdireccion==""){
foreach ($valor as $valores){
if($url==$valores or ereg($direccion,$url))
echo 'id="current"';
}
}
}
}
Ojo: Debes cambiar la dirección URL (ruta) de tus enlaces (ejemplo: /lab/menuactive por la ruta en donde coloques tus archivos)
Ejemplo funcionando:




A lo largo de la historia ha habido distintas generaciones web, desde la web 1.0 donde el usuario de internet era meramente observador, donde los sitios casi nunca se actualizaban, y si lo eran gracias al famoso webmaster. Los tiempos han cambiado, la manera de crear y compartir información también, tras la llegada de la web 2.0, el usuario se volvió más participativo y colaborativo, el boom de los blogs como herramienta de creación y difusión de contenido, que en base al sistema de gestion (CMS) puede ser actualizados por cualquier persona sin conocimientos de programación. Tras 5 años de estar conviviendo con la web 2.0, empiezan a despuntar otras herramientas / servicios que plenamente pueden llegar a convertirse iconos de una nueva generación web, por ejemplo con Google Wave o la revolución que se esta viviendo con Twitter y la búsquedas en tiempo real.
Desde que estoy en Twitter he disminuido notablemente mis actualizaciones en el blog, esto porque comparto información de forma más rápida y con mayor impacto por sus características de ser una plataforma de comunicación. Los blogs han sido usados para distintos fines como sitios web de corporaciones, organizaciones y personales, más sin embargo no han salido de lo mismo crear y compartir contenido en la red. Por otro lado, el microblogging esta siendo utilizado como herramienta para otros objetivos desde educativos (e-learning), empresariales, y hasta político (e-government).
Conclusión:
Las nuevas aplicaciones ya no están centradas en el creación de contenido, sino en la moderación/administración y la comunicación entre usuarios. Hay que tener muy claro esto, cuando se quiere emprender en la web.
LoadingMessage, es un pequeño plugin que hice en jQuery para brindar una retroalimentación al usuario que haya dado click sobre un enlace en la aplicación, este regresa un mensaje de cargando, el cual puede ser personalizado.
jQuery Plugin:
$.fn.LoadingMessage = function (a){Cómo funciona:
var attr, loading;
$(this).click(function(){
if(a.attr=='text'){ if($(this).attr('title')!=''){ attr=$(this).attr('title'); } else { attr=$(this).text();}}
else if (a.attr=='url'){attr=$(this).attr('href');}
loading = '<div id="'+a.css+'">'+a.text+' '+attr+'<\/div>';
$('body').prepend(loading);
});
return false;
};
$('#enlaces a').LoadingMessage({Aquí estoy diciendo que especificamente los enlaces dentro del #enlaces mostrarán el mensaje de cargando, claro puedo decir que todos los enlaces en mi aplicación muestren el mensaje con: $('a').
text:'Cargando',
attr:'text',
css:'loading'
});
LoadingMessage funciona con 3 parametros:
- text: es el mensaje que se enviará, en el caso del ejemplo dira Cargando.
- attr: significa el atributo de el enlace, puede enviarse 2: url o text. Text significa que mostrará el título del enlace. Nota: Si <a title="'enlace'"> se mostrará lo que contenga el atributo title, si no lo tiene, toma el texto del enlace.
- css: se envía el nombre del id del CSS, nuestro ejemplo se llamo a #loading. OJO no hay necesidad de escribir #.
Uno de los lenguajes más usados para el desarrollo web es, sin duda, PHP, y no solo por ser fácil de aprender, si no porque hay mucha información disponible en la red desde tutoriales hasta foros donde la misma comunidad te brinda de su ayuda.PHP es uno de los pocos que no existe declaración de variables, volviendo más flexible el desarrollo, pero este beneficio, trae consigo problemas en seguridad y errores en la sintaxis.
Los errores más comunes que se cometen al usar PHP como lenguaje para creación de sitios web son:
1) Configuración básica de seguridad
Las nuevas versiones de PHP contienen en su instalación una configuración básica de seguridad (la cual es la indispensable), pero en ocaciones nuestro servidor tiene habilitado o deshabilitado opciones que podrán beneficiar o perjudicar la seguridad de nuestras aplicaciones, para conocer esta configuración, se necesita saber que opciones tiene habilitadas PHP, para ello se utiliza la función phpinfo(), la cual mostrará las configuraciones que contiene el archivo php.ini. Para ello debes realizar lo siguiente:
- Imprime la función phpinfo(); en un archivo blanco de PHP.
- Las siguientes opciones deben estar en los siguientes estados, si no es así cambialos:
- register_globals: desactivadas off.
- safe_mode: activado on
- register_globals: desactivadas off.
NOTA: register_globals y safe_mode han sido eliminados en la versión 6.0.0. de PHP.Más información en PHP Seguridad
2) Usar una versión vieja de PHP (como PHP4)
3) No convertir caracteres a su entidad HTML
No hay que confiar en los usuario!!. Algunos datos que los usuarios envian a nuestra aplicación es posible que se encuentre infectada. Infectada me refiero a que quieran realizar ciertas acciones o sentencias que pueden modificar el contenido de nuestro sitio, es por ello que debemos limpiar esos datos, para ello se realiza lo siguiente:
htmlspecialchars($_GET['comentarios'], ENT_QUOTES);
4) Inyección SQL
Puedes consultar este punto, en mi blog: "Inyección SQL: Hackeando páginas web".
5) Comillas simples o dobles
$variable="¿te apellidas O\'reilly?";
//Imprimira ¿te apellidas O'reilly? , sin \
echo stripslashes($variable);
6) Mal empleo de HTTP-headers
Cuando usamos: session_start(); , header(); , setcookie(); , en ocaciones recibimos el warning siguiente:
warning: Cannot add header information - headers already sent....Si recibe este warning, es posible que no los estas usando en la parte cabecera del sitio, para su solición realiza lo siguiente:
- output_buffering = off en php.ini.
- Agrega ob_start(); al principio de tu página, y ob_end_flush(); al final de tu página para liberar el buffer.
7) No proteger ID session
El ID es un dato muy sensible dentro de una aplicación. Por ejemplo, la contraseña de un usuario.
Si el dato no cuenta con encriptación:
if ($_SESSION['contrasena'] == $contrasena) {Si el dato tiene encriptación:
//Area protegida
}
if ($_SESSION['contrasena'] == sha1($contrasena)) {8) No usar OOP (Programación Orientada a Objetos) para creación de aplicaciones web
//Area protegida
}
Las ventajas de usar este paradigma de programación son:
- Fomenta la reutilización y extensión del código.
- Facilita el mantenimiento del software.
- Permite crear sistemas más complejos.
- Agiliza el desarrollo de software.
- Facilita la creación de programas visuales.
- Facilita el trabajo en equipo.
- Relacionar el sistema al mundo real.
9) No incluir otros lenguajes como JavaScript
10) No conocer Frameworks
En pocas palabras te facilitará la creación de la aplicación web por su caracteristica MVC (Modal View Controller), pero claro no todo es oro, si usas un framework dependerás de el.
Los 10 Top frameworks de PHP son:
Fuente: Top 10 PHP Frameworks
¿Cómo utilizar .htaccess en nuestro sitio web?, en 5 trucos básicos
Publicado por Héctor Guedea en 12:51 AM
El .htaccess es un archivo de texto, el cual contiene ciertas reglas sobre archivos y directorios del servidor web (Apache). Es normalmente usado por los desarrolladores para la optimización de sus sitios web, creando URLs amigables para ser mejor posicionadas en buscadores (como Google). Ha esta optimización se le denomina SEO (Search Engine Optimization).- Abre notepad (bloc de notas)
- Dentro de este archivo, es donde teclearas los códigos que aquí te proporcionare.
- Guarda el archivo con la extensión .txt en la carpeta raiz del servidor donde tienes tu sitio web.
- Ya que lo tengas ahí, cambia su nombre y extensión (en conjunto) a: .htaccess (si lo tienes en carpeta en tu PC, ve a Opciones de Carpeta, y selecciona, que muestra las extensiones, para que así puedas remplazar el nombre/extensión del archivo.)
Los 5 trucos básicos que debes saber sobre como usar .htaccess son los siguientes:
1) Mostrar mensaje de error 404
Donde:ErrorDocument 404 /404.html
404.html : nombre de la página a donde se re-direccionará.
2) Prohibir / Bloquear archivos re direccionando visitas a otra página.
order deny,allow
deny from all
allow from 000.000.000.000
ErrorDocument 403 /actualizando.html
<Files actualizando.html>
allow from all
</Files>
Donde:
orden deny,allow: se empieza el encabezado de bloqueo.
deny from all: Negar todos los visitantes.
allow from 000.000.000.000: permitir solo la siguiente IP (000.00…) que para este caso, pon la tuya, ya que solo a ti te interesa ver tu sitio web en totalidad.
actualizando.html: Es el archivo a donde se redireccionará.
La siguientes líneas, dicen que el archivo actualizando.html, se podrá ver por todos.
3) Renombrar o Redirigir páginas
Donde:Redirect 301 /vieja.html http://tuya.com/nueva.html
vieja.html: archivo que se quiere renombrar.
nueva.html: archivo nuevo
4) Impedir navegar en directorios
Cuando no tenemos el archivo index.html o index.php, podemos ver todos los archivos que se tienen en el servidor y carpeta, para prevenir que el visitante pueda navegar entre nuestros archivos como imagenes, javascript, css, etc. pondremos lo siguiente:Options All -Indexes
5) Crear URLs amigables
El último truco, pero uno de los más usados, es la creación de URLs amigables para los buscadores y visitantes, ya que es más fácil para Google encontrarla vea:
www.tuya.com/blog/programacion/apache.html www.tuya.com/blog.php?cat=programacion&nombre=apache
Eso se puede realizar gracias al mod_rewrite, aquí un ejemplo básico:
RewriteEngine OnRewriteRule ^blog/([a-zA-Z]+)/([a-zA-Z]+).htm$ blog.php?cat=$1&nombre=$2
Hace ya tiempo que uso Windows 7 en su versión Beta como sistema operativo principal, lo descargue justo el mismo día que Microsoft anunciará su lanzamiento. No me he podido quejar de el, es bastante eficiente y rápido (y eso que uso 1GB en RAM), por el momento no me ha dado ningún problema de instalación de algún programa o incompatibilidad de hardware.Siempre he usado Apache como servidor para correr mis sitios web, instalado desde paquetes como XAMPP o APPSERVER. Por motivo de mi Tesis (Mashup para los Servicios del SIABUC), tengo que tener instalado el IIS (Internet Information Services) para comunicarme a los servicios del SIABUC con SOAP / Web services. El problema es que no sabia que versión de IIS era la apropiada para Windows 7, ya que entraba al sitio oficial del IIS , y no me daba una versión especifica (como es el caso de Win XP).
Los pasos para instalar IIS en Windows 7 son los siguientes:
- INICIO > CONTROL PANEL > Programs and Features
- Dentro del cuadro de dialogo de Programs and Features, en la esquina superior izquierda, aparece Turn Windows features on or off.
- Click en Turn Windows features on or off, se abrirá otro cuadro de dialogo, dentro de este, aparecerá un listado de servicios.
- Selecciona (checkbox) Internet Information Services, y preciona OK.
- Se instalará el IIS, listo!
Para verificar si se ha instalado de forma correcta:
- Dentro de CONTROL PANEL, entramos a Administrative Tools.
- Aparecerá un cuadro de dialogo con los servicios del Win7, dentro de este se debe encontrar IIS Manager, si esta, pasamos al siguiente paso.
- Teclea en tu navegador (http://localhost/), si esta se abre, es la página por default de que esta corriendo de manera correcta el IIS.
OJO: Para todos aquellos que anteriormente tenian el APACHE, deben desactivarlo!, si no es asi, el IIS fallará en su inicio.












