Modificando las cabeceras HTTP con PHP

Algunos ejemplos de uso para la función header():

PHP:
  1. // Use this header instruction to fix 404 headers
  2. // produced by url rewriting...
  3. header('HTTP/1.1 200 OK');
  4.  
  5. // Page was not found:
  6. header('HTTP/1.1 404 Not Found');
  7.  
  8. // Access forbidden:
  9. header('HTTP/1.1 403 Forbidden');
  10.  
  11. // The page moved permanently should be used for
  12. // all redrictions, because search engines know
  13. // what's going on and can easily update their urls.
  14. header('HTTP/1.1 301 Moved Permanently');
  15.  
  16. // Server error
  17. header('HTTP/1.1 500 Internal Server Error');
  18.  
  19. // Redirect to a new location:
  20. header('Location: http://www.example.org/');
  21.  
  22. // Redriect with a delay:
  23. header('Refresh: 10; url=http://www.example.org/');
  24. print 'You will be redirected in 10 seconds';
  25.  
  26. // you can also use the HTML syntax:
  27. // <meta http-equiv="refresh" content="10;http://www.example.org/ />
  28.  
  29. // override X-Powered-By value
  30. header('X-Powered-By: PHP/4.4.0');
  31. header('X-Powered-By: Brain/0.6b');
  32.  
  33. // content language (en = English)
  34. header('Content-language: en');
  35.  
  36. // last modified (good for caching)
  37. $time = time() - 60; // or filemtime($fn), etc
  38. header('Last-Modified: '.gmdate('D, d M Y H:i:s', $time).' GMT');
  39.  
  40. // header for telling the browser that the content
  41. // did not get changed
  42. header('HTTP/1.1 304 Not Modified');
  43.  
  44. // set content length (good for caching):
  45. header('Content-Length: 1234');
  46.  
  47. // Headers for an download:
  48. header('Content-Type: application/octet-stream');
  49. header('Content-Disposition: attachment; filename="example.zip"');
  50. header('Content-Transfer-Encoding: binary');
  51. // load the file to send:
  52. readfile('example.zip');
  53.  
  54. // Disable caching of the current document:
  55. header('Cache-Control: no-cache, no-store, max-age=0, must-revalidate');
  56. header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past
  57. header('Pragma: no-cache');
  58.  
  59. // set content type:
  60. header('Content-Type: text/html; charset=iso-8859-1');
  61. header('Content-Type: text/html; charset=utf-8');
  62. header('Content-Type: text/plain'); // plain text file
  63. header('Content-Type: image/jpeg'); // JPG picture
  64. header('Content-Type: application/zip'); // ZIP file
  65. header('Content-Type: application/pdf'); // PDF file
  66. header('Content-Type: audio/mpeg'); // Audio MPEG (MP3,...) file
  67. header('Content-Type: application/x-shockwave-flash'); // Flash animation
  68.  
  69. // show sign in box
  70. header('HTTP/1.1 401 Unauthorized');
  71. header('WWW-Authenticate: Basic realm="Top Secret"');
  72. print 'Text that will be displayed if the user hits cancel or ';
  73. print 'enters wrong login data';

fuente: jonasjohn.de

Escrito el 03.07 | No hay comentarios | Guardado en: PHP

Cargar extensión mcrypt de php en IIS

Hoy he tenido que cargar la extensión mcrypt de php en nuestro servidor porque no venía cargada por defecto.

Me ha dado algo más de guerra porque el servidor le gestionamos con Plesk y este crea varios php.ini, pero en principio no daría muchos problemas.

Lo primero que tenemos que saber es cual es el archivo php.ini que usa nuestro servidor, para ello podemos crear un archivo php en el que ejecutemos la función:

PHP:
  1. <?php
  2. ?>

La séptima fila nos dirá donde se encuentra el php.ini en el server "Loaded Configuration File". También lo que podemos comprobar es que la extensión que queremos cargar no esté en este archivo (a ver si la vas a tener instalada sin saberlo :P ). Buscaremos también la ruta de las extensiones configuradas en el php.ini (Configuration -> PHP Core -> extension_dir).

Localizamos el php.ini y abrimos la carpeta de las extensiones, dentro de esta buscamos el archivo php_mcrypt.dll, si le tenemos buscamos el archivo libmcrypt.dll en esa carpeta o en la anterior, ya que esa librería es necesaría para mcrypt, pero se debe copiar en la carpeta WINDOWS/System32 ya que es externa.

Una vez que tenemos los archivos bien colocados abrimos el php.ini y buscamos una línea donde aparezca esto:

CODE:
  1. ;extension=php_mcrypt.dll

El punto y coma ';' significa que esa línea está comentada, lo quitamos y reiniciamos el IIS: Inicio -> Ejecutar y escribímos: iisreset

Esperamos a que termine el reset y volvemos a cargar la página de info de php, buscamos mcrypt y debemos encontrar la extensión ya instalada.

Escrito el 12.06 | 9 comentarios | Guardado en: PHP, Servidor

Mejorar la carga de imágenes con CSS

En los diseños de nuestras páginas suelen acompañar a los textos una pequeña imagen o nuestros menús requieren que los items sean una imagen. Todas estas posibilidades (y otras) se consiguen poniendo imágenes de fondo en esos items.

Master imágenes de fondo youtube

Estas imágenes nos pueden dar un efecto no deseado cuando deben cambiar por otra imagen en un rollover, la imagen a la que llamamos al hacer el rollover no está cargada en nuestro navegador y este tiene que pedir al servirdor que sirva la imagen, esta petición no tarda en hacerse, pero si lo suficiente para que podamos ver que hay un espacio de tiempo en que se queda el hueco de la imagen vacía.

Para solucionar este problema y conseguir que nuestras imágenes esten cargadas desde un principio, lo que vamos ha hacer es componer una gran imagen que contenga a todas las imágenes de fondo que usaremos en nuestra web y cambiaremos la posición que se debe visualizar con CSS.

Uno de los ejemplos que mejor explican esto es el de la página de youtube.com, en ella hay una imagen que contiene a todas las imágenes que se usan como iconos o fondos en la web, como podréis ver en la imagen. Esta imagen en realidad es bastante más grande,  si quieres verla entera, pincha en ella.

En este ejemplo todos los items que van a usar una de esas imagenes de fondo tienen por css la orden de que su imagen de fondo es esta. En el ejemplo que os voy a poner queremos que todos los vínculos tengan una imagen de fondo.

CSS:
  1. a {
  2. background:url(gran-imagen-fondo.gif) no-repeat;
  3. padding: 0 0 0 15px;
  4. }

Así todos nuestros vínculos van a tener la misma imagen de fondo y un hueco a su izquierda para que la imagen se vea sin que el texto aparezca encima, también dejamos una posición genérica para los vínculos. Ahora vamos a diferenciar entre vínculos.

CSS:
  1. a.media {
  2. background-position: 0 25px;
  3. }

Con esto lo que queremos ahora es que los vínculos que sean de media muestren de la imagen de fondo que les hemos dado la que está a 0px de la izquierda y 25px del top de la imagen.

Proximamente pondre un live demo :)

Espero que te sirva :)

Escrito el 11.06 | No hay comentarios | Guardado en: CSS

jQuery, escribe menos, haz más

Llevo bastante tiempo programando con javascript y probando distintas librerías.

Durante estas pruebas he usado muy amenudo dos librerías de javascript. En un principio elegí mootools, muy fácil de usar y conseguir resultados, con una página bastante sencilla de usar en la que venían muchos ejemplos de lo que se podía hacer, conocía jQuery, pero me parecía algo más complejo.

Como todo es ponerse empece a probar jQuery, la experiencia fue muy satisfactoria, hasta el punto que he dejado de lado las demás librerías y ahora utilizo siempre esta. Esto no quiere decir que mootools u otras librerías sean peores, digamos que son manías.

Por ahora trabajo jQuery, me sedujo su página de documentación, con gran variedad de ejemplos, la amplia gama de plugins que ayudan aún más en el desarrollo, una sintaxis bastante clara y muchas funciones. La frase que define a jQuery es: "Write less, do more", "Escribe menos, haz más", ¿que más se puede pedir? :)

Con esto no trato de convencer a nadie, de hecho quiero seguir manejando más librerías, lo que quiero hacer es empezar con una serie de posts donde iré explicando pequeñas cosas que podemos hacer con esta librería.

Espero que os sirva de ayuda :)

Escrito el 11.06 | No hay comentarios | Guardado en: javascript, jquery

Codificar cadenas en md5 usando VB.NET

He tenido que crear una función para codificar strings en md5.

Este es el resultado:

Visual Basic:
  1. Private Function fn_md5(ByVal strCadena As String) As String
  2. Dim md5Hasher As MD5 = MD5.Create()
  3. Dim data As Byte() = md5Hasher.ComputeHash(Encoding.Default.GetBytes(strCadena))
  4. Dim sBuilder As New StringBuilder()
  5. Dim i As Integer
  6.  
  7. For i = 0 To data.Length - 1
  8. sBuilder.Append(data(i).ToString("x2"))
  9. Next i
  10. Return sBuilder.ToString()
  11. End Function

Lo he obtenido de esta web, donde hay un ejemplo con más tipos de codificaciones: tecnolust

Escrito el 12.05 | No hay comentarios | Guardado en: Uncategorized

Sobre mi

En este blog podrás ver como yo, un programador de lenguajes de servidor, venido a desarrollador web, se mantiene al día en el aposionante mundo de Internet y lo que le relaciona y a la vez aconseja a sus iguales en técnicas, que cree, podrán servirles en su día a día.

Da una vuelta, observa, opina y disfruta.

Categorías