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é...

No hay comentarios:

Publicar un comentario