Mostrando entradas con la etiqueta libreria. Mostrar todas las entradas
Mostrando entradas con la etiqueta libreria. Mostrar todas las entradas

viernes, 13 de marzo de 2015

Paginar resultados de mysql con zebra paginator

Buenas, hoy recorde despues de mucho tiempo esta libreria simple, ya que un amigo por skype se le dificultaba un poco la paginacion y con esta libreria simple y precisa podemos realizar este proceso rapidamente. 

Anteriormente habia hecho una entrada en este mismo blog sobre como realizar la paginacion de manera estructurada. 

Hoy vengo a presentarles la libreria Zebra Paginator la cual nos generará los links de paginacion casi de manera automatica, solo necesitaremos el archivo siguiente: https://raw.githubusercontent.com/stefangabos/Zebra_Pagination/master/Zebra_Pagination.php


Aqui algunas de las propiedades, metodos que tendremos que configurar, ademas sobre algunas funciones de MySQL no muy conocidas.

get_page() - Este metodo retorna el numero de paginas actuales

records() - Establece el numero total de registros que deben ser paginados.

records_per_page() - Establece el numero de registros que se muestran en una sola pagina.

render() - Genera la salida. 

SQL_CALC_FOUND_ROWS - Calcula el numero de resultados de una consulta sin LIMIT.

FOUND_ROWS() - obtiene el resultado del ultimo SQL_CALC_FOUND_ROWS ejecutado.

Hay cuatro propiedades que se cambian muy usualmente en la libreria las cuales son:

* next - esta muestra el texto a salida. Ejemplo: Siguiente
* previous - esta muestra el texto a salida. Ejemplo: Anterior
* variable_name - Es la variable que sera usada. Ejemplo: pagina
* method - Es el metodo por el cual se enviara GET o POST

Un ejemplo basico de paginacion seria el siguiente, el cual es algo generico ya que usamos la base de datos information_schema para que no tengas que crear una base de datos en este ejemplo:



 <title>Paginacion</title>
<style type="text/css">
    .Zebra_Pagination li {
        list-style-type: none;
        display: inline;
        padding-right: 5px;
    }

</style>
<?php
$con = mysqli_connect('localhost','root','','information_schema') or die(mysqli_error());
// cuanto registros seran mostrados por pagina
$records_per_page = 10;

// incluimos la clase
require 'Zebra_Pagination.php';

// instanciamos el objeto zebra paginator
$pagination = new Zebra_Pagination();

// la declaracion mysql para devolver registros
// nota como creamos el limit
// tambien, nota el  "SQL_CALC_FOUND_ROWS"
// esto es para obtener el número de filas que han sido devueltos si no había LIMIT
// mira mas http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_found-rows
$MySQL = '
    SELECT
        SQL_CALC_FOUND_ROWS
        *
    FROM
        tables
    LIMIT
        ' . (($pagination->get_page() - 1) * $records_per_page) . ', ' . $records_per_page . '
';

// si la consulta no se pudo ejecutar
if (!($result = @mysqli_query($con,$MySQL))) {

    // dejamos un mensaje de error
    die(mysqli_error($con));

}

// arrojamos el numero de registros totales de la tabla
$rows = mysqli_fetch_assoc(mysqli_query($con,'SELECT FOUND_ROWS() AS rows'));

// pasamos el numero total de registros a la clase pagination
$pagination->records($rows['rows']);

// registros por pagina
$pagination->records_per_page($records_per_page);

?>

<table class="countries" border="1">

    <tr><th>Prueba</th></tr>


    <?php while ($row = mysqli_fetch_assoc($result)):?>

    <tr>
        <td><?php echo $row['TABLE_NAME']; ?></td>
    </tr>

    <?php endwhile?>

</table>

<?php

// Da salida a los enlaces de paginacion
$pagination->render();

?>







 

Hay cosas que no tomo muy en cuenta a explicar como son la instancia del objeto Zebra Paginator, incluir la libreria, mostrar estilos de salida, o reaizar las peticiones en la db, lo que les recomendaria es checar la libreria desde Github obteniendo muchos ejemplos, es una libreria muy limpia, y contiene muchos ejemplos, esto es todo saludos!

lunes, 1 de septiembre de 2014

Resumen reCaptcha

¿Que es reCaptcha?


reCaptcha te ayuda a prevenir a que abusen de tu sitio (que metan spam o que registren cuentas falsas) el captcha asegura que un humano esta realizando la accion.

 

API Keys



Para obtener una clave es necesario registrar nuestro dominio:

https://www.google.com/recaptcha/admin#whyrecaptcha

Puedes poner 1 o mas dominios separarlos por comas, ejemplo:

http://www.arthusu.blogspot.com,http://www.tutorialesarthusu.comlu.com,http://www.most-security.com,http://www.underc0de.org
Por defecto todas las claves funcionan en "localhost" con la ip 127.0.0.1 para que puedas hacer pruebas en tu servidor local.

Integrarlo

Para poder integrar reCaptcha a tu sitio solo es necesario realizar los tres pasos siendo el tercero opcional:

1.- Del lado del cliente: mostrar el widget recaptcha (Requerido)
2.- Del lado del servidor: verificar la solucion (Requerido)
3.- Personalizar  (Opcional)

En la mayoria de los formularios webs tu usualmente tienes dos archivos: el formulario con los campos y el script que procesa los campos del formulario. Estos dos archivos corresponden al paso 1 y 2. Por lo tanto se tendran que modificar 2 archivos diferentes en la mayoria de los casos.

Hay dos maneras de agregar reCaptcha (a) con plugins o (b) sin plugins. Nosotros veremos la primera forma, que es con plugins utilizando PHP.


Usando reCaptcha en PHP

Para utilizar reCaptcha con PHP necesitas descargar la libreria:

https://code.google.com/p/recaptcha/downloads/list?q=label:phplib-Latest

De los archivos que vienen en el zip comprimido solo necesitas 1 archivo el que se llama recaptchalib.php los demas son ejemplos y cuestiones legales.

Despues de haberte registrado para poder usar la clave del API podemos proceder.

Del lado del cliente: como crear el captcha la imagen aparece


Si quieres utilizar la libreria reCaptcha de PHP para mostrar el widget, solo necesitas insertar la siguiente parte de codigo dentro de un elemento <form> donde el widget CAPTCHA sera colocado:


<?php
 require_once('recaptchalib.php');
 $clavepublica = "Aquivatuclavepublica"; // esta la obtienes cuando te registras
 echo recaptcha_get_html($clavepublica); 
?>

Con el codigo anterior tu formulario luciria como el siguiente:

<!DOCTYPE html>
<html>
<head>
 <title>reCaptcha</title>
</head>
<body>
<!-- El body es requerido ya que sino el captcha no se mostrara en algunos navegadores -->
<form method="post" action="verificar.php">
  <?php
   require_once('recaptchalib.php');
   $clavepublica = "Aquivatuclavepublica"; // esta la obtienes cuando te registras
   echo recaptcha_get_html($clavepublica); 
  ?>
 <input type="submit" />
</form>
</body>
</html>
 

No olvides reemplazar en la variable $clavepublica donde dice Aquivatuclavepublica por tu clave publica.

Si miras en el formulario se encuentra en el atributo action verificar.php este archivo es importante ya que aqui sera procesado el formulario, este archivo deberia de encontrarse en la misma localizacion que el archivo del formulario html.

Con la funcion require_once() llamamos al archivo requerido que es la libreria para el captcha, si este no se encuentra el script no puede continuar, recuerda colocar la ruta correctamente require_once(turuta/dondeseencuentra/recaptchalib.php)

Del lado del cliente: como probar que lo introducido por el usuario es lo correcto

El siguiente codigo deberia ser puesto al incio del archivo verificar.php:


<?php
 require_once('recaptchalib.php');
 $claveprivada = "Tuclaveprivada";
 $respuesta = recaptcha_check_answer($claveprivada,
     $_SERVER["REMOTE_ADDR"],
     $_POST["recaptcha_challenge_field"],
     $_POST["recaptcha_response_field"]);
 if (!$respuesta->is_valid) {
  // El captcha se metio incorrectamernte
  die("El captcha no se ingreso correctamente. Ve atras y vuelve a intentarlo". $respuesta->error);
 }else{
  // Tu codigo para manejar una verificacion correcta
  echo "Bien hecho";
 }
?>

En el codigo de arriba:

* recaptcha_check_answer - retorna un objeto representando cuando el reto se completo correctamente
* Si $respuesta->is_valid si es true entonces puede continuar con el procesamiento del formulario
* Si $respuesta->is_valid si es false entonces muestra de nuevo otra imagen en el captcha. En caso de que $respuesta->error ocurra un error el captcha mostrara el codigo de error.

Nota importante: No confundas la clave publica con la clave privada.

Estaté seguro de que hayas colocado el array superglobal $_POST para usar el captcha.

Hasta aqui llega nuestro pequeño resumen de reCaptcha si quieres obtener mas informacion puedes consultar: https://developers.google.com/recaptcha/docs/php