TypeKey con PHP

  • Ene
  • 05

1 comentario! 97 palabras - 1 hits

Como convertir el codigo de validacion typekey a php.

Hace unos días leí en Neil’s World este artículo, donde se explica la manera de sustituir el codigo javascript que gestiona la validación mediante el servicio TypeKey por codigo PHP.

Las ventajas que esto supone son evidentes, por un lado reducimos el tiempo de carga de la página, y por otro, dejamos de depender de si el navegador del usuario dispone de soporte javascript.

Despues de leer un par de veces el artículo, pienso que es una mejora a implementar en el sitio, con lo que os explicare como lo he realizado yo.

Todo el codigo referente a la validación TypeKey se encuentra en la plantilla de entradas individuales, hemos de buscar el siguiente bloque

  1.  
  2.     <MTIfNonEmpty tag="MTTypeKeyToken">
  3.     <div id="thanks">
  4.     <p>Thanks for signing in,
  5.     <script type="text/javascript" src="<MTCGIPath><MTCommentScript>?__mode=cmtr_name_js"></script><script>document.write(commenter_name);</script>
  6.     Now you can comment. (<a href="<$MTRemoteSignOutLink static="1"$>">sign out</a>)</p>
  7.  

y sustituirlo por:

  1.  
  2.     <MTIfNonEmpty tag="MTTypeKeyToken">
  3.     <?php
  4.     $commentername = $_COOKIE["commenter_name"];
  5.     if ($commentername)
  6.     { ;?>
  7.     <div id="thanks">
  8.     <p>Thanks for signing in, <?php
  9.     $commentername = $_COOKIE["commenter_name"];
  10.     echo "$commentername"; ?>.
  11.     Now you can comment. (<a href="<$MTRemoteSignOutLink static="1"$>">sign out</a>)</p>
  12.  

Luego hemos de buscar:

  1.  
  2.     <script language="javascript" type="text/javascript">
  3.     <!--
  4.     if (commenter_name) {
  5.     document.getElementById('thanks').style.display = 'block';
  6.     } else {
  7.     document.write('You are not signed in. You need to be registered to comment on
  8.     this site. <a href="<$MTRemoteSignInLink static="1"$>"> Sign in</a>');
  9.     document.getElementById('thanks').style.display = 'none';
  10.     }
  11.    // -->
  12.    </script>
  13.  

y lo sustituimos por:

  1.  
  2.     <?php
  3.     } else {
  4.     ?>
  5.     You are not signed in. You need to be registered to comment on this site. <a href="<$MTRemoteSignInLink static="1"$>"> Sign in</a>
  6.     <? } ?>
  7.  

El siguiente bloque que hemos de buscar, es:

  1.  
  2.     <MTIfNonEmpty tag="MTTypeKeyToken">
  3.     <script type="text/javascript" src="<MTCGIPath><MTCommentScript>?__mode=cmtr_name_js"></script>
  4.     <script language="javascript" type="text/javascript">
  5.     <!--
  6.     if (commenter_name) {
  7.     document.write('Thanks for signing in, ', commenter_name, '. Now you can comment.
  8.     (<a href="<$MTRemoteSignOutLink static="1"$>">sign out</a>)');
  9.     } else {
  10.     document.write('If you have a TypeKey identity, you can <a href="<$MTRemoteSignInLink static="1"$>"> sign in</a> to use it here.');
  11.     }
  12.     // -->
  13.     </script>
  14.     </MTIfNonEmpty>
  15.  

Y lo hemos de sustituir por,

  1.  
  2.     <MTIfNonEmpty tag="MTTypeKeyToken">
  3.     <?
  4.     $commentername = $_COOKIE["commenter_name"];
  5.     if ($commentername) {
  6.     echo('Thanks for signing in, ' . $commentername . '. Now you now can comment.
  7.    (<a href="<$MTRemoteSignOutLink static="1"$>">sign out</a>)');
  8.     } else {
  9.     echo('If you have a TypeKey identity, you can <a href="<$MTRemoteSignInLink static="1"$>"> sign in</a> to use it here.');
  10.     } ?>
  11.     </MTIfNonEmpty>
  12.  

Por último hemos de buscar,

  1.  
  2.     <div id="name_email">
  3.     <p><label for="author">Name:</label>
  4.     <input tabindex="1" id="author" name="author" /></p>
  5.     <p><label for="email">Email Address:</label>
  6.     <input tabindex="2" id="email" name="email" /></p>
  7.     </div>
  8.     <MTIfNonEmpty tag="MTTypeKeyToken">
  9.     <script language="javascript" type="text/javascript">
  10.     <!--
  11.       if (commenter_name) {
  12.       document.getElementById('name_email').style.display = 'none';
  13.       }
  14.       // -->
  15.     </script>
  16.     </MTIfNonEmpty>
  17.  

en este caso los sustituimos por,

  1.  
  2.     <?
  3.     if ($commentername) {
  4.     // Typekey signin, do not display extra fields
  5.     } else {
  6.     ?>
  7.     <div id="name_email">
  8.     <p><label for="author">Name:</label>
  9.     <input tabindex="1" id="author" name="author" /></p>
  10.     <p><label for="email">Email Address:</label>
  11.     <input tabindex="2" id="email" name="email" /></p>
  12.     </div>
  13.     <? } ?>
  14.  

Con esto, ya tendremos funcionando en nuestro sitio, un sistema de validación TypeKey, sin usar nada de javascript.

Una cosa de la que me he dado cuenta al implementar este sistema, es que no estaba funcionando bien la validación TypeKey desde que habia actualizado la instalación de Movable Type. Buscando un poco en Google di con la solución.

1 comentario

  • Mar
  • 19

# Escrito por juan Pablo hace 11 meses, 4 semanas

Hola que tal Solo quiero Felicitar al creador de esta web por el Excelente Trabajo que reliza en ella ayudando a los que apenas comenzamos en esto Sinceramente Muchas Gracias


Escribe tu comentario

Puedes utilizar este formulario para escribir tu opinion sobre esta entrada, no existe ningun tipo de limitacion a la hora de enviar opiniones, tan solo sigue unas reglas basicas de cortesia y todos estaremos mas contentos.

Puedes identificarte utilizando OpenID, solo tienes que introducir tu URL OpenID en el siguiente campo y pulsar el boton de validar.





Instrucciones para los comentarios

El simbolo * indica que se trata de un campo obligatorio.

Este sitio usa Markdown junto con Smartypants para educar los textos, tambien esta disponible para los comentarios.

A continuación os muestro algunas de las equivalencias:

  • [enlace de ejemplo](http://example.com/) resulta enlace de ejemplo.
  • **Texto en Negrita**
  • _Italica_
  • > blockquote
  • > > nested blockquote
  • * Esto es un elemento de una lista desordenada (ul)
  • 1. Esto es un elemento de una lista ordenada (ol)

MC Puedes seguir las respuestas a tus comentarios con MyComments.