sábado, 12 de septiembre de 2015

Crear un comment box

Crear un Comment Box con HTML y PHP


Esta es una nueva entrada de mi diario sobre Desarrollo Web. En esta ocasión estás leyendo apuntes y anotaciones para mejorar mi web (AQuemarropa.es). Aquí encontrarás anotaciones que no garantizo que estén bien, ya que las utilizo simplemente para guiarme, para guardar enlaces o para cuando necesite revisarlo. Vamos, apuntes de los de toda la vida, un poco redactados por si de casualidad entra aquí alguien.

Quiero implementar un Comment Box para aportar valor a la web, y de paso mejorar mi porcentaje de rebote. Pero de HTML sé más bien poco, ya que utilizo un WYSIWYG que me alcanza para lo que necesito, y tengo que retocar poca cosa del código, y sólo muy de vez en cuando. De PHP acabo de saber hace nada aún lo qué es, y que es necesario para crear formularios.

Me estuve informando y tengo varias posibilidades:
  1. Programarlo yo mismo. Una solución bastante obvia, que será la que intente.
  2. Utilizar un código de alguna web que ofrezca un comment box gratis. 
Empezaré por la segunda:

Comentarios introduciendo un comment box gratis


Encontré tres páginas con buena pinta que te ofrecen el trabajo hecho:
  • HTML comment box - Página en inglés que permite obtener el código gratis. Si te registras, te permite configurar más opciones de esta utilidad que te regalan para implementar comentarios en tus páginas. No estoy muy seguro de cómo funciona, soy principiante en estas lides, pero creo que va así: introduces su código HTML en tu página, y los comentarios los guardan ellos en sus servidores. Cuando alguien accede a la web, el código que insertaste llama a los comentarios y se muestran en tu página. Pero realmente, no los tienes tú, están en su plataforma.
  • Free Comment Script - Éste es otro que he mirado. Añades tu email, e instantáneamente te generan un javascript que puedes introducir en tu website para tener el dichoso comment box. Resulta fácil de crear, puedes modificar colores, ancho y tipo y tamaño de letra. Al igual que en el caso anterior, los comentarios quedan bien guardados al recaudo de esa empresa.
  • Otro es Disqus - Es bastante famoso. Ya comienza a ser una especie de red social, y empresas importantes utilizan este servicio. ABC News, por ejemplo. Te registras, e introduces el código en tu página. Los comentarios los guarda Disqus en sus servidores y los muestra en una red social bastante currada. Puedes entrar como usuario y ver la red porque permite apuntarte a conversaciones. Pero es más de lo mismo, si no me equivoco, esos comentarios no enriquecen tu página, ya que afectan al SEO. De todos modos, cuando tenga algo de tiempo miraré mejor cómo va esto, por si acaso.


Vamos, que esta opción es fácil de implementar en la página, pero realmente no me gusta nada. Los comentarios que ha generado mi página, deberían guardarse en mi página. Así que, al menos que encuentre algo que me convenza, me toca aprender a programarlo.


¿Cómo crear un Comment Box con HTML y PHP?


Empezar esto de cero parece complicado, pero después de ver un vídeo de Youtube y leer los comentarios, de primeras, parece bastante sencillo crear un comment box propio.



En mis primeros años de universidad di programación en C++ y alguna cosa aún me suena, así que es el momento de saber si valió para algo...

Para que no tengas que ir parando el vídeo, te transcribiré el código que muestra el autor.

Si quieres programar este sencillo cajón para comentarios, sólo tienes que añadir el siguiente código:

<html>
<form action="" method="post">
<label> Nombre : <br/><input type="text" name="name"><br/></label>
<label> Deja tu comentario : <br/><textarea cols="120" rows="5" name="mes"></textarea><br/></label>
<input type="submit" name="post" value="post">
</form>
</html>

<?php

$post = $_POST("post");
$name = $_POST("name");
$mes = $_POST("mes");

if($post){

     #Escribir los comentarios#

    $write = fopen("coment.txt", "a+");
    fwrite($write, "<b><u>$name</u></b><br>$mes<br>");
    fclose($write);

     #Mostrar Comentarios#

    $read = fopen("coment.txt", "r+t");

    echo "Todos los comentarios:";

    while(!feof($read)){
        echo fread($read, 1024);
    }

    fclose($read);

}

else {
     #Mostrar Comentarios#

    $read = fopen("coment.txt", "r+t");
    echo "Todos los comentarios:";
    while(!feof($read)){
        echo fread($read, 1024);
    }

    fclose($read);
}

?>



Como veis dentro de nuestra página tenemos código HTML y PHP. Este último empieza en la línea 10 o así con <?php.

Lo primero que hacemos en la parte de PHP es definir tres variables globales que guardarán los valores que la gente que quiera comentar introducirá en las casillas destinadas a "Nombre" y a "Comentarios".

Variables Globales:

$post = $_POST("post");        /guarda que el usuario pulsó el botón ENVIAR
$name = $_POST("name");    /contiene el NOMBRE
$mes = $_POST("mes");       / contiene el COMENTARIO

$post guarda que el usuario ha pulsado el botón "enviar" definido en el HTML con la instrucción <input type="submit" name="post" value="post">

Entonces el código leerá el comentario escrito en el cajón que define el HTML con las etiquetas <label>.... , y lo escribirá en el archivo coment.txt. Después leerá todos los comentarios de este archivo y los escribirá en la página web. En caso de la que la visita a la página web no escriba nigún comentario, simplemente mostrará todos los comentarios que ya hay escritos.

No olvides crear un archivo coment.txt para guardar los comentarios y ponerlos en el hosting donde guardes la página. Ah, y para que funcione el código PHP, necesitas guardar la página con extensión .php . Si la guardas como HTML, el servidor no ejecutará el código PHP, y verás el código en la página tal cual lo has escrito. Me pasó, por eso lo sé...

Una vez listo todo debería de funcionar... Pero en este punto me encontré con un problema: mi servidor Apache de Banahosting tiene desactivadas las Variables Globales.

Según las herramientas PHP Configuration de mi hosting:
You should do your best to write your scripts so that they do not require register_globals to be on; Using form variables as globals can easily lead to possible security problems, if the code is not very well thought of.
Vamos, que tienen las variables globales desactivadas como medida de seguridad. Recomiendan no usarlas.

Se me ocurrió que podría meterlas después del IF, así dejarían de ser globales -serían válidas sólo dentro del IF, (locales supongo que se llamarían entonces)-, pero no puedo porque el If comienza con una llamada a una variable global: IF($post) ...

Así que mañana -o cuando me vuelva a dar la neura de que mi web debería tener comentarios- lo solucionaré de una de estas dos formas: llamando a Banahosting y que activen las variables globales o intentando quitar ese IF y usar otra cosa. Un While o no sé...

jueves, 10 de septiembre de 2015

La Web y Tim Berners-Lee

¿Quién es Tim Berners-Lee?


Tim Berners-Lee es una de las personalidades más importantes de las últimas décadas. Le debemos un invento de lo más innovador: La Web. Puede sonar rotundo, pero así son las cosas. Las páginas web que viajan a través de Internet hasta tu dispositivo de lectura son un invento suyo.

Este londinense cimentó las bases sobre las que se asientan todas esas páginas que nos entretienen y nos informan a cualquier hora y estemos donde estemos, dos características clave que este pionero siempre tuvo en mente mientras le daba vueltas a una idea: unificar una red en pañales llamada Internet con el concepto del hipertexto. Junto con su equipo, desarrolló la programación que permitiría realizar con éxito esta unificación. Nacieron así el protocolo HTTP, el lenguaje HTML y un sistema para localizar recursos, las URLs. Los pilares estructurales de la World Wide Web. 

Después de unos cuantos meses de desarrollo, nació la primera página web de la historia. Hoy no existe, pero el CERN la creó de nuevo como merecido homenaje. 


Tim Berners-Lee en la actualidad. Más información en la Wikipedia.

La web surgió como una necesidad

En aquellos días, el CERN era un caos... Cada científico -y había muchos- estaba inmerso en uno o varios proyectos. Algunos de estos proyectos estaban relacionados entre sí. Un investigador de aquella época, necesitaba recorrerse unos cuantos pasillos para conocer los avances científicos de sus camaradas. Quizás asistir a esas interminables exposiciones, donde al final adquirías una idea de lo que el científico de turno se traía entre manos, pero una idea vaga. Al menos que fueses un crack tomando apuntes...

La necesidad de la retroalimentación en el conocimiento de los científicos del CERN era una necesidad que no pasó inadvertida a Tim Berners-Lee. Tenía que haber un modo de etiquetar la información y hacerla accesible a cualquier hora y desde cualquier sitio.