Librería Tokyo Tyrant para PHP
Cada día suenan más las bases de datos clave-valor, y entre ellas Tokyo Tyrant, por lo que no nos vendrá mal hacer uso de la librería PECL para ella, lástima que sea PECL.
PHP Tokyo Tyrant
Cada día suenan más las bases de datos clave-valor, y entre ellas Tokyo Tyrant, por lo que no nos vendrá mal hacer uso de la librería PECL para ella, lástima que sea PECL.
PHP Tokyo Tyrant
Una de las cuestiones que hay que tener en cuenta por temas de seguridad es controlar el tiempo en el que está activa la sesión. Por ejemplo, para evitar que una persona olvide “desconectarse” y otro aproveche su usuario cuando no esté.
Las sesiones en PHP se controlan con la variable $_SESION, que es un array que contiene las variables de sesión. En nuestro caso, comprobaremos si existe una variabla de sesión que contenga el ID de sesión, si la hay, se recupera el tiempo en el que empezó la sesión (un timestamp) y se comprueba si ha pasado el tiempo máximo de sesión activa (en nuestro ejemplo 1 minuto), si ha sobrepasado el tiempo, se borran los datos de la sesión.
Una vez comprobada si la sesión debe seguir activa, se comprueba si sigue existiendo la sesión (vamos, que si no hemos acabado con ella), miramos si se ha pedido crear la sesión, por ejemplo cuando nos hemos logueado, en este caso, nos creamos las dos variables de sesión: el id y el timestamp.
<?php
// Inciamos la sesión
session_start();
?>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"xhtml1-transitional.dtd">
<html>
<head>
<title>Sentido Web - Sessiones</title>
</head>
<body>
<p>
<?php
// Primero miramos si la sesión es válida
// Cuando el tiempo que lleva activa sea menor que 1 minuto
if (isset($_SESSION["ID_SESSION"])) {
$antes = $_SESSION["SESION_TIME"];
// Si lleva más de 1 minuto (60 segundos)
if (time()-$antes > 60) {
// Libramos la sesion
session_unset();
session_destroy();
echo 'Finalizó la sesión. <br/>';
}
}
// Si ya hay sesión lo indicamos
if (isset($_SESSION["ID_SESSION"])) {
?>
Hay SESIÓN (<?php echo $_SESSION["ID_SESSION"]; ?>)
<?php
// Si no hay sesión
} else {
// Si se ha pedido la creación de una sesion
if (isset($_GET["accion"])) {
// se quiere crear una sesion
// Se crea la variable de sesion id de sesion
// y tiempo en el que empieza la sesion
if ($_GET["accion"] == "1") {
$_SESSION["ID_SESSION"] = "ID".rand();
$_SESSION["SESION_TIME"] = time();
?>
Has creado la sesión <?php echo $_SESSION["ID_SESSION"]. " " .$_SESSION["SESION_TIME"]; ?>
<?php
// No se quiere crear la sesión
} else {
?>
No has querido crear sesión.
<?php
}
// No hay sesión, se avisa y
// se pregunta si se quiere crear una
} else {
?>
No hay SESIÓN. ¿Quiere crear una?
<input type="button" value="SI" onclick="document.location='sesion.php?accion=1'" />
<input type="button" value="NO" onclick="document.location='sesion.php?accion=0'" />
<?php
}
}
?>
</p>
</body>
</html>
Inspekt es una librería para PHP 4 y 5 que nos filtra la entrada de datos para evitar posibles ataques. Su uso es bastante sencillo y automático por lo que podemos añadir esta librería tranquilamente en nuestras aplicaciones. Basado originalmente en la librería Zend_Filter_Input del framework de Zend.
Mediante unos simples métodos podremos filtrar el contenido de las variables $_POST, $_GET, $_COOKIE, $_SERVER, $_FILES y $_ENV, o todas a la vez. Además ofrece métodos para validar los datos entrantes, por ejemplo saber si se trata de una IP, de un número, una URL y mucho más.
Uno de los aspectos más complicados para aquellos que empiezan dentro del diseño web es la realización de pestañas (tabs). Si necesitas una ayuda para generarlos, puede venirte bien esta clase PHP que con unas simples líneas de código podrás obtener unas pestañas con un resultado más que decente.
Tan solo habrá que ejecutar el siguiente código y se incluirán en tu HTML las etiquetas necesarias para mostrar los tabs, los cuales pueden ser activos, seleccionados y desactivados.
<
require_once('Static_Tabstrip.php');
$tabs = array(
array('id' => 'tab_1', 'name' => 'First tab', 'active' => empty($_GET['tab']), 'link' => 'example.php', 'mouseover' => 'Visit Google!'),
array('id' => 'tab_2', 'name' => 'Second', 'active' => !empty($_GET['tab']) && $_GET['tab'] === '2', 'link' => 'example.php?tab=2', 'mouseover' => 'Or not...'),
array('id' => 'tab_3', 'name' => 'Third (disabled)', 'active' => false)
);
PrintTabStrip($tabs);
El UTF-8 es un tipo de codificación de caracteres para Unicode que nos permite escribir nuestras páginas web y no preocuparnos por si se va a ver correctamente o van a aparecer caracteres extraños.
Las veces que he trabajado en proyectos multilenguaje es lo que hemos usado, salvo en el caso de japonés y coreano que es preferible usar el UTF-16 porque ocupa menos espacio. Eso ha hecho que me haya acostumbrado a realizar siempre los proyectos en UTF-8 y así evitar luego los problemas que puedan surgir en futuras actualizaciones o en testeos y tener luego que cambiar todo el proyecto a UTF-8.
Thomas Boutell, el desarollador de la librería GD para la generación dinámica de imágenes propuso al equipo de PHP que se hicieran cargo de la librería GD, debido a la falta de tiempo de la que disponía. PHP no ha tardado en responder (2 días) aceptando el encargo, indicando entre otras cosas que no ven necesario el cambio de liciencia de GD y que mantendrán el soporte para otros lenguajes como C.
Una buena noticia para todos.
PHP se hace cargo de GD
Vía / Menéame
Ya hace tiempo hable lo de los websockets con HTML, los cuales solo se pueden usar en Safari, Chrome y la beta de Firefox 4, pero además el servidor necesita que los soporte. Para poder usarlos en nuestras aplicaciones PHP se puede hacer un apaño con la siguiente librería:
log("Handshaking...");
list($resource,$host,$origin) = getheaders($buffer);
$upgrade = "HTTP/1.1 101 Web Socket Protocol Handshake\r\n" .
"Upgrade: WebSocket\r\n" .
"Connection: Upgrade\r\n" .
"WebSocket-Origin: " . $origin . "\r\n" .
"WebSocket-Location: ws://" . $host . $resource . "\r\n" .
"\r\n";
$handshake = true;
socket_write($socket,$upgrade.chr(0),strlen($upgrade.chr(0)));
Vía / bo! hu? co.
Comments are closed.
Hola, he dado un vistazo a la documentación de Tokyo Tyrant y no acabo de entender del todo para que sirve una base de datos clave-valor..
Me lo podÃas aclarar?
Saludos.
Hola
Normalmente las BD son relacionales, tal tabla se relaciona con tal otra, … Pero esto no siempre es necesario ya que muchas veces sólo se realizan accesos mediante el ID de la tabla. ¿Para qué usar una BD relacional si vas a tirar únicamente de ID?
Una de las caracterÃsticas más importantes de las BD clave-valor es su rapidez, son mucho más rápidas que las BD relacionales.
ImagÃnate que tienes una BD que controla el spam de una web y necesitas saber si una IP está aceptada o rechazada. En este caso no necesitarÃas una BD relacional, solo saber si span[‘ip’] es true o false.
Espero haberte despejado las dudas.
Saludos