<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Ruta Relativa &#187; Php</title>
	<atom:link href="http://www.rutarelativa.com/category/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.rutarelativa.com</link>
	<description>Porque la web es relativa</description>
	<lastBuildDate>Wed, 04 Jan 2012 20:37:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>CodeAnywhere: Potente editor PHP online con acceso FTP</title>
		<link>http://www.rutarelativa.com/php/codeanywhere-potente-editor-php-online-acceso-ftp/</link>
		<comments>http://www.rutarelativa.com/php/codeanywhere-potente-editor-php-online-acceso-ftp/#comments</comments>
		<pubDate>Tue, 05 Jul 2011 12:05:34 +0000</pubDate>
		<dc:creator>Sergiocius</dc:creator>
				<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[Acceso FTP]]></category>
		<category><![CDATA[CodeAnywhere]]></category>
		<category><![CDATA[Codificar Android]]></category>
		<category><![CDATA[Codificar en la nube]]></category>
		<category><![CDATA[Codificar iPhone]]></category>
		<category><![CDATA[Editor CSS]]></category>
		<category><![CDATA[Editor CSS Online]]></category>
		<category><![CDATA[Editor HTML]]></category>
		<category><![CDATA[Editor HTML Online]]></category>
		<category><![CDATA[Editor Javascript]]></category>
		<category><![CDATA[Editor Javascript online]]></category>
		<category><![CDATA[Editor PHP]]></category>
		<category><![CDATA[Editor XML]]></category>
		<category><![CDATA[Editor XML Online]]></category>
		<category><![CDATA[La nube]]></category>
		<category><![CDATA[Potente editor PHP online]]></category>

		<guid isPermaLink="false">http://www.rutarelativa.com/?p=841</guid>
		<description><![CDATA[Con CodeAnywhere, como su nombre indica, tenemos la posibilidad de codificar en cualquier sitio, siendo éste un potente editor PHP online con acceso FTP. Lo he probado bastante a fondo y he de decir que ofrece muchísimas posibilidades, siendo una alternativa muy a tener en cuenta. No solo podemos codificar en PHP, también podemos hacerlo [...]]]></description>
			<content:encoded><![CDATA[<p>Con <strong>CodeAnywhere</strong>, como su nombre indica, tenemos la posibilidad de <strong>codificar en cualquier sitio</strong>, siendo éste un <strong>potente editor PHP online con acceso FTP</strong>. Lo he probado bastante a fondo y he de decir que ofrece muchísimas posibilidades, siendo una alternativa muy a tener en cuenta.</p>
<p>No solo podemos <strong>codificar en PHP</strong>, también podemos hacerlo en <strong>HTML, JavaScript, CSS, y XML</strong>; ofreciéndonos toda una gama de posibilidades de <strong>desarrollo en la nube</strong>.</p>
<p><span id="more-841"></span></p>
<p><img width="560" height="334" alt="CodeAnywhere: Potente editor PHP online con acceso FTP" src="http://www.images.rutarelativa.com/codeanywhere-potente-editor-php-online-acceso-ftp-1.gif" /></p>
<p>Para trabajar con los archivos PHP -o con los formatos antes citados- debemos hacerlo a través de un servidor FTP que deberemos de configurar previamente -asimismo deberemos de registrarnos en el sistema antes de comenzar- y a partir de entonces tendremos acceso a los ficheros con los que queremos trabajar.</p>
<p>Resulta realmente útil contar con un <strong>editor PHP online</strong>, o en la nube como se suele decir, para en cualquier caso de emergencia podamos acceder a nuestros ficheros desde cualquier equipo y modificarlos, siendo también modificables desde nuestro smartphone con <a href="https://market.android.com/details?id=net.phpanywhere" title="CodeAnywhere: Potente editor PHP online con acceso FTP en Android" rel="external nofollow">Android</a> o nuestro iPhone -actualmente en desarrollo-.</p>
<p>Os dejamos con un video de presentación de la plataforma, para que conozcáis más a fondo en qué consiste el proyecto <strong>CodeAnywhere</strong>:</p>
<p><object width="540" height="313" type="application/x-shockwave-flash" data="http://www.youtube.com/v/rnkfM-koQvM&#038;fs=1"><param value="transparent" name="wmode"/><param value="true" name="allowfullscreen"/><param name="movie" value="http://www.youtube.com/v/rnkfM-koQvM&#038;fs=1"/></object></p>
<p>Enlace: <a href="http://codeanywhere.net/" title="CodeAnywhere: Potente editor PHP online con acceso FTP" rel="external nofollow">CodeAnywhere: Potente editor PHP online con acceso FTP</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.rutarelativa.com/php/codeanywhere-potente-editor-php-online-acceso-ftp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Redimensionar imágen proporcionalmente y con tamaño fijo en PHP</title>
		<link>http://www.rutarelativa.com/php/redimensionar-imagen-proporcionalmente-tamano-fijo-php/</link>
		<comments>http://www.rutarelativa.com/php/redimensionar-imagen-proporcionalmente-tamano-fijo-php/#comments</comments>
		<pubDate>Thu, 19 May 2011 12:03:26 +0000</pubDate>
		<dc:creator>Sergiocius</dc:creator>
				<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[Código PHP para redimensionar imágenes]]></category>
		<category><![CDATA[Crear Thumbnails]]></category>
		<category><![CDATA[Crear thumbs]]></category>
		<category><![CDATA[Redimensionar imagen con marco]]></category>
		<category><![CDATA[Redimensionar imágen proporcionalmente y con tamaño fijo en PHP]]></category>
		<category><![CDATA[Redimensionar imágenes]]></category>
		<category><![CDATA[Redimensionar imágenes PHP]]></category>
		<category><![CDATA[Thumbnails]]></category>
		<category><![CDATA[Thumbs]]></category>

		<guid isPermaLink="false">http://www.rutarelativa.com/?p=830</guid>
		<description><![CDATA[El tratamiento de imágenes es algo que, tarde o temprano, los que desarrollamos páginas web tenemos que afrontar. En este caso vamos a proponeros una función que he desarrollado personalmente para redimensionar imágenes proporcionalmente y con tamaño fijo en PHP, más concretamente para crear thumbnails de imágenes de dimensiones proporcionales y pudiendo especificar un tamaño [...]]]></description>
			<content:encoded><![CDATA[<p>El tratamiento de imágenes es algo que, tarde o temprano, los que <a href="http://www.idkinformatica.com/" title="iDk Informática: Desarrollo web profesional">desarrollamos páginas web</a> tenemos que afrontar. En este caso vamos a proponeros una función que he desarrollado personalmente para <strong>redimensionar imágenes proporcionalmente y con tamaño fijo en PHP</strong>, más concretamente para <strong>crear <a href="http://es.wikipedia.org/wiki/Thumbnail" title="Thumbnail en Wikipedia" rel="external nofollow">thumbnails</a> de imágenes de dimensiones proporcionales y pudiendo especificar un tamaño fijo</strong>.</p>
<p><span id="more-830"></span></p>
<p>Antes de mostrar el <strong>código para redimensionar imágenes proporcionalmente y con tamaño fijo en PHP</strong>, vamos a intentar explicar en qué consiste: En primer lugar tenemos una imágen de unas dimensiones cualquieras, en nuestro caso de 560x560px.</p>
<p><img width="560" height="560" alt="Redimensionar imágen proporcionalmente y con tamaño fijo en PHP" src="http://www.images.rutarelativa.com/redimensionar-imagen-proporcionalmente-tamano-fijo-php-1.gif" /></p>
<p><em>Ejemplo de imágen a redimensionar.</em></p>
<p>Pongámonos en el caso de que queremos <strong>crear un thumbnail</strong> de dicha imágen con unas dimensiones fijas de 160x100px. Nos sería imposible en principio redimensionarla de forma proporcional ya que las imagen original y el thumbnail tienen proporciones diferentes, con lo que u obtendríamos una imágen a 160x160px ó a 100x100px para que sea de tamaño proporcional.</p>
<p><img width="326" height="199" alt="Redimensionar imágen proporcionalmente y con tamaño fijo en PHP" src="http://www.images.rutarelativa.com/redimensionar-imagen-proporcionalmente-tamano-fijo-php-2.gif" /></p>
<p><em>Ejemplo de dos imágenes proporcionales.</em></p>
<p>En este caso, si <strong>queremos que la imágen final tenga un tamaño fijo</strong> lo ideal sería que el tamaño restante sea rellenado por un marco de color transparente. En este caso cogeríamos la imágen de 100x100px y le añadiríamos un marco a ambos lados de 30px en cada lado.</p>
<p><img width="300" height="130" alt="Redimensionar imágen proporcionalmente y con tamaño fijo en PHP" src="http://www.images.rutarelativa.com/redimensionar-imagen-proporcionalmente-tamano-fijo-php-3.gif" /></p>
<p><em>Ejemplo de imágen proporcional con tamaño fijo.</em></p>
<p>Una vez explicado este punto, pasamos a mostraros la función y a detallarla:</p>
<h3>Redimensionar imágen proporcionalmente y con tamaño fijo en PHP</h3>
<pre><code>function createThumb($sImagen, $nWidth = false, $nHeight = false)
{
    // Variables
    $sNombre = null;
    $sPath = null;
    $sExt = null;
    $aImage = null;
    $aThumb = null;
    $aImageMarco = null;
    $ImTransparente = null;
    $aSize = null;
    $nWidthMarco = false;
    $nWidthHeight = false;
    $nX = false;
    $nY = false;

    // Obtenemos el nombre de la imagen
    $sNombre = basename( $sImagen );
    // Obtenemos la ruta especificada para buscar la imagen
    $sPath = dirname( $sImagen ) . '/';
    // Obtenemos la extension de la imagen
    $sExt = mime_content_type( $sImagen );

    // Creamos el directorio thumbs
    if( ! is_dir( $sPath . 'thumbs/' ) )
        @mkdir( $sPath . 'thumbs/', 0777, true ) or die( 'No se ha podido crear el directorio &quot;' . $sPath . 'thumbs/&quot;.' );

    // Creamos la imagen a partir del tipo
    switch( $sExt )
    {
        // Imagen JPG
        case 'image/jpeg':
            $aImage = @imageCreateFromJpeg( $sImagen );
            break;
        // Imagen GIF
        case 'image/gif':
            $aImage = @imageCreateFromGif( $sImagen );
            break;
        // Imagen PNG
        case 'image/png':
            $aImage = @imageCreateFromPng( $sImagen );
            break;
        // Imagen BMP
        case 'image/wbmp':
            $aImage = @imageCreateFromWbmp( $sImagen );
            break;
        default:
            return 'No se conoce el tipo de imagen enviado, por favor cambie el formato. S&oacute;lo se permiten im&aacute;genes *.jpg, *.gif, *.png &oacute; *.bmp.';
            break;
    }

    // Obtenemos el tama&ntilde;o de la imagen original
    $aSize = getImageSize( $sImagen );

    // Calculamos las proporciones de la imagen //

    // Obteniendo el alto (Recogiendo ancho y no alto)
    if( $nWidth !== false &amp;&amp; $nHeight === false )
        $nHeight = round( ( $aSize[1] * $nWidth ) / $aSize[0] );
    // Obteniendo el ancho (Recogiendo alto y no ancho)
    elseif( $nWidth === false &amp;&amp; $nHeight !== false )
        $nWidth = round( ( $aSize[0] * $nHeight ) / $aSize[1] );
    // Obteniendo proporciones (Recogiendo alto y ancho)
    elseif( $nWidth !== false &amp;&amp; $nHeight !== false )
    {
        // Guardamos las dimensiones del marco
        $nWidthMarco = $nWidth;
        $nHeightMarco = $nHeight;

        // Si el ancho es mayor
        if( $nWidth &lt; $nHeight )
        {
            $nHeight = round( ( $aSize[1] * $nWidth ) / $aSize[0] );
            $nX = 0;
            $nY = round( ( $nHeightMarco - $nHeight ) / 2 );
        }
        // Si el alto es mayor
        elseif( $nHeight &lt; $nWidth )
        {
            $nWidth = round( ( $aSize[0] * $nHeight ) / $aSize[1] );
            $nX = round( ( $nWidthMarco - $nWidth ) / 2 );;
            $nY = 0;
        }
    }
    // El ancho y el alto no se han enviado, informamos del error
    elseif( $nWidth === false &amp;&amp; $nHeight === false )
        return 'No se ha especificado ning&uacute;n valor para el ancho y el alto de la im&aacute;gen.';

    // La nueva imagen reescalada
    $aThumb = imageCreateTrueColor( $nWidth, $nHeight );

    // Reescalamos
    imageCopyResampled( $aThumb, $aImage, 0, 0, 0, 0, $nWidth, $nHeight, $aSize[0], $aSize[1] );

    // Si tenemos que crear el marco
    if( $nWidthMarco !== false &amp;&amp; $nHeightMarco !== false )
    {
        // El marco
        $aImageMarco = imageCreateTrueColor( $nWidthMarco, $nHeightMarco );

        // Establecemos la imagen de fondo transparente
        imageAlphaBlending( $aImageMarco, false );
        imageSaveAlpha( $aImageMarco, true );

        // Establecemos el color transparente (negro)
        $ImTransparente = imageColorAllocateAlpha( $aImageMarco, 0, 0, 0, 0xff/2 );

        // Ponemos el fondo transparente
        imageFilledRectangle( $aImageMarco, 0, 0, $nWidthMarco, $nHeightMarco, $ImTransparente );

        // Combinamos las imagenes
        imageCopyResampled( $aImageMarco, $aThumb, $nX, $nY, 0, 0, $nWidth, $nHeight, $nWidth, $nHeight );

        // Cambiamos la instancia
        $aThumb = $aImageMarco;
    }

    // Salvamos
    imagePng( $aThumb, $sPath . 'thumbs/' . $sNombre );

    // Liberamos
    imageDestroy( $aImage );
    imageDestroy( $aThumb );

    return true;
}</code></pre>
<p>La función puede recibir tres parámetros, siendo el primero la <strong>ruta de la imágen a redimensionar</strong>, el segundo sería el ancho que queremos darle y el tercero el alto. Si especificamos ambos parámetros, ancho y alto, la imágen se redimensionará a dicho tamaño fijo dándole un marco transparente. Si especificamos solo el ancho tendremos una imágen proporcional con respecto al ancho, en nuestro caso si especificamos que la imagen de 560x560px la queremos con un ancho de 160px, el resultado final tendrá unas dimensiones de 160x160px. De igual forma con el alto, si especificamos para la imágen de 560x560px un alto de 100px, el resultado final tendrá unas dimensiones de 100x100px. También cabe destacar que se creará automáticamente un directorio llamado &#8220;thumbs&#8221; y ahí se almacenarán las imágenes resultantes. Siéntete libre de cambiar el código a tu gusto.</p>
<p>Cualquier error o sugerencia en el código será bien recibida en los comentarios.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rutarelativa.com/php/redimensionar-imagen-proporcionalmente-tamano-fijo-php/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Cómo saber cuando pasa GoogleBot por mi web</title>
		<link>http://www.rutarelativa.com/php/como-saber-cuando-pasa-googlebot-mi-web/</link>
		<comments>http://www.rutarelativa.com/php/como-saber-cuando-pasa-googlebot-mi-web/#comments</comments>
		<pubDate>Wed, 12 Jan 2011 10:45:32 +0000</pubDate>
		<dc:creator>Sergiocius</dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[Trucos]]></category>
		<category><![CDATA[Código PHP]]></category>
		<category><![CDATA[Cómo saber cuando pasa GoogleBot por mi web]]></category>
		<category><![CDATA[GoogleBot]]></category>
		<category><![CDATA[Herramientas webmaster]]></category>
		<category><![CDATA[Saber cuando pasa GoogleBot]]></category>
		<category><![CDATA[Trucos Google]]></category>
		<category><![CDATA[Trucos GoogleBot]]></category>
		<category><![CDATA[Webmaster Google]]></category>
		<category><![CDATA[Webmasters]]></category>

		<guid isPermaLink="false">http://www.rutarelativa.com/?p=768</guid>
		<description><![CDATA[Googlebot es el robot de búsqueda usado por Google que rastrea e indexa las webs para almacenarlas en una base de datos que posteriormente será usada por el motor de búsqueda Google para mostrar los resultados de búsqueda. Una vez que conocemos quién es GoogleBot y qué es lo que hace nos percataremos de la [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Googlebot es el robot de búsqueda usado por Google</strong> que rastrea e indexa las webs para almacenarlas en una base de datos que posteriormente será usada por el <strong>motor de búsqueda Google</strong> para mostrar los resultados de búsqueda.</p>
<p>Una vez que conocemos quién es GoogleBot y qué es lo que hace nos percataremos de la importancia que tiene que este software se de una vuelta por nuestra página web, la rastree, indexe y todo lo que ello conlleva. La pregunta que resolveremos hoy es <strong>cómo saber cuando pasa GoogleBot por mi web</strong>, y con un sencillo <strong>código PHP</strong> podemos conocerlo.</p>
<p><span id="more-768"></span></p>
<p>En la página principal de nuestra web deberemos de colocar este pequeño código -obviamente es necesario unos conocimientos mínimos de <a href="http://www.rutarelativa.com/category/php/" title="PHP en Ruta Relativa">PHP</a>- que lo que hará es reconocer al visitante como <strong>GoogleBot</strong> y, en caso de que así sea, nos enviará un email a la dirección que queramos indicando que está visitando nuestra web. Aquí tenéis el código:</p>
<pre><code>&lt;?php

if( strpos( $_SERVER[&quot;HTTP_USER_AGENT&quot;], &quot;Googlebot&quot; ) !== false )
	mail( &quot;direccion@mail.com&quot;, &quot;Alerta de GoogleBot&quot;, &quot;P&aacute;gina visitada: &quot; . $_SERVER[&quot;REQUEST_URI&quot;] );

?&gt;</code></pre>
<p>Donde veis que indica &#8220;direccion@mail.com&#8221;, tenéis que poner vuestro correo electrónico donde queráis que se os informe. Por supuesto también podéis <strong>saber cuando pasa GoogleBot por vuestra web</strong> visitando las <strong>herramientas para webmasters de Google</strong>, pero ahí no podéis ver con exactitud la fecha, hora y páginas que ha visitado nuestro querido bot.</p>
<p>Fuente: <a href="http://www.javielinux.com/176-Como_saber_si_Google_esta_visitando_tu_web.htm" title="Cómo saber cuando pasa GoogleBot por mi web">Javielinux</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.rutarelativa.com/php/como-saber-cuando-pasa-googlebot-mi-web/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Chevereto: Script gratuito de almacenamiento de imágenes</title>
		<link>http://www.rutarelativa.com/php/chevereto-script-gratuito-almacenamiento-imagenes/</link>
		<comments>http://www.rutarelativa.com/php/chevereto-script-gratuito-almacenamiento-imagenes/#comments</comments>
		<pubDate>Fri, 13 Aug 2010 16:04:08 +0000</pubDate>
		<dc:creator>Sergiocius</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Almacenamiento de imágenes]]></category>
		<category><![CDATA[Chevereto]]></category>
		<category><![CDATA[Código Abierto]]></category>
		<category><![CDATA[Hosting]]></category>
		<category><![CDATA[Hosting de Imagenes]]></category>
		<category><![CDATA[JQuery]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Redimensionar imágenes]]></category>
		<category><![CDATA[Script almacenamiento imagenes]]></category>
		<category><![CDATA[Script gratuito]]></category>
		<category><![CDATA[Script Javascript]]></category>
		<category><![CDATA[Script PHP]]></category>

		<guid isPermaLink="false">http://www.rutarelativa.com/?p=698</guid>
		<description><![CDATA[Reinventar la rueda no es una práctica recomendable, y mucho menos en el mundo de la Informática, por eso vemos cada día mayor cantidad de scripts y gestores de contenido fácilmente adaptables a nuestras necesidades e ideas. Chevereto es un Script gratuito de almacenamiento de imágenes que está teniendo una muy buena acojida por el [...]]]></description>
			<content:encoded><![CDATA[<p>Reinventar la rueda no es una práctica recomendable, y mucho menos en el <strong>mundo de la Informática</strong>, por eso vemos cada día mayor cantidad de scripts y gestores de contenido fácilmente adaptables a nuestras necesidades e ideas.</p>
<p><strong>Chevereto es un Script gratuito de almacenamiento de imágenes</strong> que está teniendo una muy buena acojida por el numeroso grupo de usuarios que ha decidido adaptarlo para sus proyectos; pero conozcámoslo un poco más.</p>
<p><span id="more-698"></span></p>
<p><img width="560" height="632" alt="Chevereto: Script gratuito de almacenamiento de imágenes" src="http://www.images.rutarelativa.com/chevereto-script-gratuito-almacenamiento-imagenes-1.gif" /></p>
<p>Chevereto cuenta con las siguientes características:</p>
<ul>
<li><strong>Desarrollado en PHP y Javascript:</strong> Ha sido desarrollado utilizando PHP y Javascript, dos lenguajes muy extendidos.</li>
<li><strong>No necesita Base de Datos:</strong> Ya que rastrea los archivos y obtiene información necesaria a través de ellos, por lo que su instalación resulta más sencilla.</li>
<li><strong>Permite redimensionar imágenes:</strong> El <em>uploader</em> puede decidir si sus imágenes pueden tener un tamaño final al subirlas.</li>
<li><strong>Integración con acortadores de URL:</strong> Una vez subida una imágen, obtenemos un enlace para su visualización y/o descarga, pero podemos tener dicha url ya acortada.</li>
<li><strong>Soporte para jQuery:</strong> Si usas este framework para Javascript, puedes integrarlo perfectamente con Chevereto.</li>
<li><strong>Es código abierto:</strong> Con lo que puedes editar y adaptar el código para lo que quieras, además de poder ayudar en el desarrollo del script.</li>
<li><strong>Buena documentación:</strong> Cuentan con una documentación para que su instalación y su uso sea más fácil.</li>
</ul>
<p>Todas estas son las cualidades de <strong>Chevereto</strong> para que, quien quiera, pueda tener su <strong>propio hosting de imágenes</strong> gracias a su sencillo pero poderoso script.</p>
<p>
Enlace: <a href="http://chevereto.com/" title="Chevereto: Script gratuito de almacenamiento de imágenes" rel="external nofollow">Chevereto: Script gratuito de almacenamiento de imágenes</a><br />
Demo: <a href="http://demo.chevereto.com/" title="Demo de Chevereto: Script gratuito de almacenamiento de imágenes" rel="external nofollow">Demo de Chevereto</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.rutarelativa.com/php/chevereto-script-gratuito-almacenamiento-imagenes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>¿Cómo puedo hacer ping XML-RPC con PHP?</title>
		<link>http://www.rutarelativa.com/php/como-puedo-hacer-ping-xml-rpc-php/</link>
		<comments>http://www.rutarelativa.com/php/como-puedo-hacer-ping-xml-rpc-php/#comments</comments>
		<pubDate>Thu, 06 May 2010 08:47:57 +0000</pubDate>
		<dc:creator>KeLDroX</dc:creator>
				<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[Blogs]]></category>
		<category><![CDATA[Clientes]]></category>
		<category><![CDATA[Como]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Ping]]></category>
		<category><![CDATA[Servidores]]></category>
		<category><![CDATA[URL]]></category>
		<category><![CDATA[XML-RPC]]></category>

		<guid isPermaLink="false">http://www.rutarelativa.com/?p=547</guid>
		<description><![CDATA[Muchos de nosotros hemos escuchando alguna vez la palabra ping y que maravillosamente WordPress los realiza por arte de magia tan solo incluyendo una URL en el apartado de configuración Servicios de actualización. Realizar ping a través de XML-RPC por ejemplo a blogalaxia.com, bitacoras.com, o incluso a Google avisan a estos sistema de que nuestro [...]]]></description>
			<content:encoded><![CDATA[<p>Muchos de nosotros hemos escuchando alguna vez la palabra <strong>ping</strong> y que maravillosamente <strong>WordPress</strong> los realiza por arte de magia tan solo incluyendo una URL en el apartado de configuración <em>Servicios de actualización</em>. Realizar <strong>ping a través de XML-RPC</strong> por ejemplo a blogalaxia.com, bitacoras.com, o incluso a Google avisan a estos sistema de que nuestro blog se ha actualizado y que nos gustaría que pasaran a recoger la nueva información que hemos añadido.</p>
<p>Una buena práctica para que aparezcamos antes en Google es añadir a estos <strong>servicios de actualización</strong> la URL blogsearch de Google.</p>
<p><span id="more-547"></span></p>
<p>Todos los desarrolladores que no quieran utilizar <strong>WordPress</strong> y crean mejor sus propios blogs o proyectos deben de tener en cuenta los <strong>ping XML-RPC</strong> para avisar de su nuevo contenido. Así que hoy he tenido que realizar una función que realice ping de forma automática como lo hace <strong>WordPress</strong>. Para empezar buscaremos la función de <strong>WordPress</strong> que se encarga los <strong>ping XML-RPC</strong> y la extraeremos y modificaremos a nuestro gusto. Empecemos:</p>
<h3>¿Que son los ping XML-RPC?</h3>
<p>Una forma clara de poder explicar los <strong>ping XML-RPC</strong> es imaginarse dos ordenadores, uno de ellos sera un cliente, nuestro caso es donde tenemos nuestro blog, y el ordenador un servidor que se encargara de recibir el ping. El ordenador cliente mandará una petición, comunicándose mediante Internet usando el estándar XML. El servidor ejecutará esta petición examinando que clase o método debe llamar para procesar la petición. Una vez terminado de ejecutar, el servidor enviará la respuesta hacia el cliente. Para más información puedes visitar la <a href="http://es.wikipedia.org/wiki/XML-RPC" title="¿Que son los ping XML-RPC?">Wikipedia</a></p>
<h3>¿Cómo puedo hacer ping XML-RPC con PHP?</h3>
<p>Una vez extraída la función <em>weblog_ping</em> de <strong>WordPress</strong> implementarla para nuestros proyectos es realmente sencillo. Primero deberemos de descargar la librería encargada de realizar los <strong>ping XML-RPC</strong>, llamada IXR y su sitio oficial para descargar es <a href="http://scripts.incutio.com/xmlrpc/" title="Descargar IXR" rel="external nofollow">scripts.incutio</a>.</p>
<p>Cuando hayamos descargado la librería IXR la incluiremos en nuestro proyecto para poderla llamar desde nuestra propia función <em>weblog_ping</em>, que será la encargada de realizar los ping a las distintas URL. </p>
<pre class="php more"><code>function weblog_ping($server = "") 
{
	// Incluimos la clase IXR
	include_once ("class-IXR.php");

	// Realizamos la conexión con la URL
	$client = new IXR_Client($server, false);
	// Esperamos un tiempo de respuesta de 3 segundos
	$client-&gt;timeout = 3;
	// Useragent que queramos por el cual nos identifique el servidor, podeis poner cualquiera.
	$client-&gt;useragent .= " -- El useragent que queramos utilizar";

	// Deberemos decir False ya que si no nos mostrara toda la peticion desde que sale del cliente hasta la respuesta del cliente
	// Si teneis problemas habilitarla para ver que esta pasando
	$client-&gt;debug = false;

	// Ejecutamos la peticion al servidor indicando que deseamos que ejecute el procedimiento extendedPing del servidor, que sera el encargado de recorrer nuestra URL en busca de cambios
	if( $client-&gt;query("weblogUpdates.extendedPing", "El nombre de nuestro blog", "URL de nuestro blog", "URL de nuestro RSS" )
		echo "Servidor: " . $server . " OK";
	else
		echo "Servidor: " . $server . " ERROR";
}</code></pre>
<p>
<p>Finalmente para que nuestro blog llame a las distintas URL de servicios de actualización deberemos llamar a la función <em>weblog_ping</em> pasándole como argumento a que servidor queremos realizar el <strong>ping XML-RPC</strong>.</p>
<pre class="php"><code>// Ping a bitacoras
weblog_ping("http://ping.bitacoras.com");

// Ping a technorati
weblog_ping("http://rpc.technorati.com/rpc/ping");

// Ping a blogalaxia
weblog_ping("http://ping.blogalaxia.com");

// Ping a google
weblog_ping("http://blogsearch.google.com/ping/RPC2");</code></pre>
<p>
<p>Ya solo nos queda realizar por ejemplo una tabla con distintas URL de ping o un campo en una tabla opciones con varias URL y luego extraer la información de la base de datos y finalizarlo con un bucle para que llame a las distintas URL de forma dinámica. Pero ya estas pinceladas es a gusto de cada uno.</p>
<p>Más información: <a href="http://javieraroche.com/2006/07/26/ping-via-xml-rpc/" title="¿Como puedo hacer ping XML-RPC con PHP?" rel="external nofollow">Javieraroche</a> o <a href="http://www.blogterrier.com.ar/2009/02/pings-xml-rpc-con-php-y-en-castellano.html" title="Blogterrier" rel="external nofollow">blogterrier</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.rutarelativa.com/php/como-puedo-hacer-ping-xml-rpc-php/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Detectar la procedencia del usuario por la IP en PHP</title>
		<link>http://www.rutarelativa.com/php/detectar-procedencia-usuario-ip-php/</link>
		<comments>http://www.rutarelativa.com/php/detectar-procedencia-usuario-ip-php/#comments</comments>
		<pubDate>Fri, 23 Apr 2010 10:35:22 +0000</pubDate>
		<dc:creator>Sergiocius</dc:creator>
				<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[Detectar]]></category>
		<category><![CDATA[Funciones]]></category>
		<category><![CDATA[Geolocalizacion]]></category>
		<category><![CDATA[IP]]></category>
		<category><![CDATA[Pais]]></category>
		<category><![CDATA[Procedencia]]></category>
		<category><![CDATA[Usuario]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.rutarelativa.com/?p=514</guid>
		<description><![CDATA[Si queremos detectar la procedencia de un usuario que visita nuestra web por la IP en PHP, para operaciones como por ejemplo cambiar el idioma del sitio, redirigir, cambiar la divisa, o cualquier operación, lo podemos realizar de la siguiente forma con el siguiente código PHP que os vamos a comentar. Antes que nada necesitaremos [...]]]></description>
			<content:encoded><![CDATA[<p>Si queremos <strong>detectar la procedencia de un usuario que visita nuestra web por la IP en PHP</strong>, para operaciones como por ejemplo cambiar el idioma del sitio, redirigir, <strong>cambiar la divisa</strong>, o cualquier operación, lo podemos realizar de la siguiente forma con el siguiente <strong>código PHP</strong> que os vamos a comentar.</p>
<p>Antes que nada necesitaremos descargarnos dos ficheros que contendrán la información de los diferentes países y el método para detectarlos. Los ficheros se tratan de <a href="http://www.rutarelativa.com/files/detectar-procedencia-usuario-ip-php/geoip.inc" title="Descargar el fichero geoip.inc" rel="external nofollow">geoip.inc</a> y <a href="http://www.rutarelativa.com/files/detectar-procedencia-usuario-ip-php/GeoIP.dat" title="Descargar el fichero GeoIP.dat" rel="external nofollow">GeoIP.dat</a>.</p>
<p>Una vez que nos hagamos con los ficheros, vamos a crear un fichero llamado geoIP.php (por ejemplo) y colocaremos los ficheros descargados en el mismo sitio. A continuación debemos incluir el siguiente código PHP en el fichero geoIP.php que nos <strong>devolverá el País al que pertenece el usuario por la IP</strong>:</p>
<p><span id="more-514"></span></p>
<pre class="php more"><code>
function geoIP()

{
	// Incluimos la libreria
	require( 'geoip.inc' );

	// Variables

	$gIP = null;
	$sGeo = null;

	// Instanciamos la variable y le indicamos el fichero .dat y el tipo de Geolocalizacion
	$gIP = geoip_open( 'GeoIP.dat', GEOIP_STANDARD );

	// Obtenemos el Pais por la IP
	$sGeo = geoip_country_name_by_addr( $gIP, $_SERVER['REMOTE_ADDR'] );

	// Cerramos
	geoip_close( $gIP );

	return $sGeo;

}
</code></pre>
<p>Con ésta <strong>sencilla función podremos obtener la procedencia de un visitante a través de la IP</strong>, ya lo que hagamos con ésta información es cosa nuestra.</p>
<p>Fuente: <a href="http://www.manualdephp.com/codigos-php/detectar-pais-visitante.html" title="Detectar país del visitante" rel="external nofollow">ManualDePHP</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.rutarelativa.com/php/detectar-procedencia-usuario-ip-php/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>PHP: error Fatal error Allowed memory size</title>
		<link>http://www.rutarelativa.com/php/php-error-fatal-error-allowed-memory-size/</link>
		<comments>http://www.rutarelativa.com/php/php-error-fatal-error-allowed-memory-size/#comments</comments>
		<pubDate>Tue, 09 Mar 2010 11:10:15 +0000</pubDate>
		<dc:creator>KeLDroX</dc:creator>
				<category><![CDATA[Php]]></category>
		<category><![CDATA[Error]]></category>
		<category><![CDATA[error Fatal error Allowed memory size]]></category>
		<category><![CDATA[Memoria]]></category>
		<category><![CDATA[PHP.ini]]></category>
		<category><![CDATA[Solución]]></category>

		<guid isPermaLink="false">http://www.rutarelativa.com/?p=401</guid>
		<description><![CDATA[Hoy al instalar Symfony en uno de mis servidores me encontrado con el &#8220;famoso&#8221; error en PHP con el siguiente mensaje &#8220;error Fatal error Allowed memory size X&#8221; (donde X es el tamaño de la memoria). Este error es común cuando procesamos un script en PHP y éste traspasa el limite permitido dando un error [...]]]></description>
			<content:encoded><![CDATA[<p>Hoy al <strong>instalar Symfony</strong> en uno de mis servidores me encontrado con el &#8220;famoso&#8221; <strong>error en PHP</strong> con el siguiente mensaje &#8220;<strong>error Fatal error Allowed memory size X</strong>&#8221; (donde X es el tamaño de la memoria). Este error es común cuando procesamos un script en <strong>PHP y éste traspasa el limite permitido dando un error fatal.</strong></p>
<p><span id="more-401"></span></p>
<h3>Solucionar error Fatal error Allowed memory size</h3>
<p>Deberemos modificar nuestro php.ini con el editor que más nos guste, en mi caso el editor nano. En este servidor tengo instalado Xampp y editaremos el archivo php.ini de la siguiente forma:</p>
<pre class="code"><code>nano /opt/lampp/etc/php.ini</code></pre>
<p>Una vez abierto buscaremos la línea que contenga &#8220;memory_limit = XXM&#8221; en mi caso &#8220;memory_limit = 32M&#8221; y lo sustituimos por &#8220;memory_limit = 64M&#8221;. De esta forma reservaremos memoria suficiente para poder instalar Symfony y poder ejecutar los Script que necesiten <strong>más memoria en su procesamiento</strong>.</p>
<p><img class="imge" width="560" height="93" alt="PHP: error Fatal error Allowed memory size" title="PHP: error Fatal error Allowed memory size" src="http://www.images.rutarelativa.com/php-error-fatal-error-allowed-memory-size-1.gif">
<p>Una vez editado el archivo y guardado deberemos reiniciar Apache para que los cambios realizados hagan efecto. Ahora cuando ejecutemos un Script que necesite más memoria se podrá realizar sin ningún tipo de problema. En mi caso sólo necesitaba 64M, pero si estas realizando un gran Script puedes poner el tamaño que más se amolde a tus necesidades</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rutarelativa.com/php/php-error-fatal-error-allowed-memory-size/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dibujar figuras en PHP GD</title>
		<link>http://www.rutarelativa.com/php/dibujar-figuras-php-gd/</link>
		<comments>http://www.rutarelativa.com/php/dibujar-figuras-php-gd/#comments</comments>
		<pubDate>Mon, 01 Feb 2010 15:25:08 +0000</pubDate>
		<dc:creator>KeLDroX</dc:creator>
				<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[Ejemplos]]></category>
		<category><![CDATA[GD]]></category>
		<category><![CDATA[Librerías]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.rutarelativa.com/?p=307</guid>
		<description><![CDATA[Las figuras que nos deja dibujar PHP con la librería GD son las más básicas, como puede traernos cualquier editor de imágenes básico. Vamos a ver como se crean las siguientes figuras: rectángulo, cuadrado, y círculo. Para ello necesitamos tener habilitado la librería GD para nuestro servidor PHP. Antes de empezar podéis echar un vistazo [...]]]></description>
			<content:encoded><![CDATA[<p><img height="64" width="560" src="http://www.images.rutarelativa.com/dibujar-figuras-php-gd-1.gif" title="Dibujar figuras en Php GD" alt="Dibujar figuras en Php GD" class="imge">
<p>Las figuras que nos deja <strong>dibujar PHP con la librería GD</strong> son las más básicas, como puede traernos cualquier editor de imágenes básico. Vamos a ver como se crean las siguientes figuras: rectángulo, cuadrado, y círculo. Para ello necesitamos tener habilitado la <strong>librería GD para nuestro servidor PHP</strong>. Antes de empezar podéis echar un vistazo a <strong><a href="http://www.rutarelativa.com/desarrollo/crear-imagenes-html-php-gd/" title="Como crear imágenes en Html mediante Php GD">como crear imágenes en Html mediante PHP GD</a></strong>.</p>
<p><span id="more-307"></span></p>
<p>
<h3>¿Como dibujar un rectángulo en PHP GD?</h3>
<p>Una de las figuras más simples que todos conocemos, y para crearlo utilizaremos la función &#8220;<em>imagefilledrectangle</em>&#8221; para crear un rectángulo con relleno o la función &#8220;<em>imagerectangle</em>&#8221; para dibujar solo el contorno.</p>
<pre class="php"><code>// Tamaño de la imagen
$imImage = @imagecreate( 600, 100 );
// Color de fondo en RGB
$imFondo  = imagecolorallocate( $imImage, 255, 255, 255 );
// Color de relleno en RGB
$imRelleno = imagecolorallocate( $imImage, 141, 203, 61 );

// Creamos la instancia del rectangulo
imagefilledrectangle( $imImage, 0, 0, 300, 50, $imRelleno );

// Cabecera php para mostrar imagenes
header("Content-type: image/png");
// Imprimimos la imagen en PNG
imagepng( $imImage );
// Liberamos la memoria usada para crear la imagen
imagedestroy( $imImage );</code></pre>
<p>
<h3>¿Como dibujar un cuadrado en PHP GD?</h3>
<p>Las funciones para realizar un cuadrado son exactamente iguales que realizar un rectángulo pero lógicamente añadiremos el mismo ancho y alto.</p>
<pre class="php"><code>// Tamaño de la imagen
$imImage = @imagecreate( 600, 100 );
// Color de fondo en RGB
$imFondo  = imagecolorallocate( $imImage, 255, 255, 255 );
// Color de relleno en RGB
$imRelleno = imagecolorallocate( $imImage, 141, 203, 61 );

// Creamos la instancia del cuadrado
imagefilledrectangle( $imImage, 0, 0, 50, 50, $imRelleno );

// Cabecera php para mostrar imagenes
header("Content-type: image/png");
// Imprimimos la imagen en PNG
imagepng( $imImage );
// Liberamos la memoria usada para crear la imagen
imagedestroy( $imImage );</code></pre>
<p>
<h3>¿Como dibujar un circulo en PHP GD?</h3>
<p>Para dibujar un circulo tendremos que utilizar la función &#8220;<em>imageellipse</em>&#8221; para realizar el contorno y &#8220;<em>imagefilledellipse</em>&#8221; para rellenarla de color.</p>
<pre class="php"><code>// Tamaño de la imagen
$imImage = @imagecreate( 600, 100 );
// Color de fondo en RGB
$imFondo  = imagecolorallocate( $imImage, 255, 255, 255 );
// Color de relleno en RGB
$imRelleno = imagecolorallocate( $imImage, 141, 203, 61 );
// $imImage : identificador de la imagen creado
// 25: Coordenada horizontal del centro del ciruclo
// 25: Coordenada vertical del centro del circulo
// 50: Ancho del circulo
// 50: Alto del circulo
// $imRelleno: Color del relleno
imagefilledellipse( $imImage, 25, 25, 50, 50, $imRelleno );
// Cabecera php para mostrar imagenes
header("Content-type: image/png");
// Imprimimos la imagen en PNG
imagepng( $imImage );
// Liberamos la memoria usada para crear la imagen
imagedestroy( $imImage );</code></pre>
<p>
<p>Para crear nuevas figuras, como por ejemplo un arco tenéis más funciones. Podéis pasaros por el fantástico <a href="http://php.net/manual/en/book.image.php" title="Manual de PHP GD" rel="external nofollow">manual de PHP GD</a> y ver todas las funcionalidades de la <strong>libreria GD</strong>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rutarelativa.com/php/dibujar-figuras-php-gd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fecha y hora con formato &#8220;Hace x horas, x minutos, x segundos&#8221; en PHP</title>
		<link>http://www.rutarelativa.com/php/fecha-y-hora-formato-hace-x-horas-x-minutos-x-segundos-php/</link>
		<comments>http://www.rutarelativa.com/php/fecha-y-hora-formato-hace-x-horas-x-minutos-x-segundos-php/#comments</comments>
		<pubDate>Mon, 21 Dec 2009 17:18:20 +0000</pubDate>
		<dc:creator>Sergiocius</dc:creator>
				<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[Php]]></category>

		<guid isPermaLink="false">http://www.rutarelativa.com/?p=163</guid>
		<description><![CDATA[Cuando trabajamos en PHP, el manejo de tipos de datos de fecha y hora es algo a lo que nos tenemos que enfrentar tarde o temprano. Mostrarle a un usuario la fecha y hora de cualquier registro con un formato &#8220;dd/mm/aaaa hh:mm:ss&#8221; a veces puede resultar confuso en el término de que es necesario calcular [...]]]></description>
			<content:encoded><![CDATA[<p>Cuando trabajamos en PHP, el manejo de <strong>tipos de datos de fecha y hora</strong> es algo a lo que nos tenemos que enfrentar tarde o temprano. Mostrarle a un usuario la fecha y hora de cualquier registro con un formato &#8220;dd/mm/aaaa hh:mm:ss&#8221; a veces puede resultar confuso en el término de que es necesario calcular mentalmente cuanto hace que se creó (por ejemplo) dicho registro. La función que os presento a continuación muestra la fecha y hora con un formato más amigable, es decir, más fácil de entender para un usuario. Mostraremos la <strong>fecha y hora con formato &#8220;Hace x horas, x minutos, x segundos&#8221; en nuestra web en PHP</strong>.</p>
<p><span id="more-163"></span></p>
<h3>Mostrar fecha y hora con formato &#8220;Hace x horas, x minutos, x segundos&#8221; en PHP</h3>
<p>Primero debemos de <strong>convertir el valor del campo timestamp en fecha de unix</strong> (segundos desde 1970-01-01 00:00:00 GMT), usando la función UNIX_TIMESTAMP de SQL.</p>
<pre class="code"><code>SELECT *, UNIX_TIMESTAMP( CAMPO_FECHA_HORA ) FROM TABLA</code></pre>
<p>
<p>A continuación, a la hora de mostrar dicho campo, <strong>pasaremos el resultado del campo &#8220;CAMPO_FECHA_HORA&#8221; por esta función</strong>:</p>
<pre class="php more"><code></code>
function hace($fecha_unix)
        //obtener la hora en formato unix
        $ahora=time();
        
        //obtener la diferencia de segundos
        $segundos=$ahora-$fecha_unix;
        
        //dias es la division de n segs entre 86400 segundos que representa un dia;
        $dias=floor($segundos/86400);

        //mod_hora es el sobrante, en horas, de la division de días;    
        $mod_hora=$segundos%86400;
        
        //hora es la division entre el sobrante de horas y 3600 segundos que representa una hora;
        $horas=floor($mod_hora/3600);
        
        //mod_minuto es el sobrante, en minutos, de la division de horas;       
        $mod_minuto=$mod_hora%3600;
        
        //minuto es la division entre el sobrante y 60 segundos que representa un minuto;
        $minutos=floor($mod_minuto/60);
        
        if($horas&lt;=0){
                echo $minutos." minutos";
        }elseif($dias&lt;=0){
                echo $horas." horas ".$minutos." minutos";
        }else{
                echo $dias." dias ".$horas." horas ".$minutos." minutos";
        }
</pre>
<p>De esta manera, usando esta función, tendremos el campo fecha hora en un formato mucho más amigable para el usuario. También hay que saber donde aplicar este tipo de formato y donde encaja mejor un formato clásico, pero siempre es bueno tener una alternativa útil de cara al usuario.</p>
<p>Fuente: <a href="http://www.ribosomatic.com/articulos/funcion-hace-n-dias-n-horas-n-minutos-en-php/" title="Función " hace="" n="" d="" horas="" minutos="" en="" php="" rel="external nofollow">RibosoMatic</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.rutarelativa.com/php/fecha-y-hora-formato-hace-x-horas-x-minutos-x-segundos-php/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Curl FOLLOWLOCATION and open basedir Or Safe Mode</title>
		<link>http://www.rutarelativa.com/php/curl-followlocation-and-open-basedir-or-safe-mode/</link>
		<comments>http://www.rutarelativa.com/php/curl-followlocation-and-open-basedir-or-safe-mode/#comments</comments>
		<pubDate>Sat, 19 Dec 2009 18:23:21 +0000</pubDate>
		<dc:creator>KeLDroX</dc:creator>
				<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[Php]]></category>

		<guid isPermaLink="false">http://www.rutarelativa.com/?p=156</guid>
		<description><![CDATA[¿Tienes el error &#8220;open basedir Or Safe Mode&#8221; al usar FollowLocation en curl?. Esto nos suele pasar por que las directivas Safe Mode o Open basedir de nuestro php.ini no están configuradas para realizar lo que queremos. En un servidor autogestionado o local podemos tocar el php.ini a nuestro antojo y configurar dichas directivas, pero [...]]]></description>
			<content:encoded><![CDATA[<p>¿Tienes el error <strong>&#8220;open basedir Or Safe Mode&#8221;</strong> al usar <strong>FollowLocation en curl</strong>?. Esto nos suele pasar por que las directivas <strong>Safe Mode</strong> o <strong>Open basedir</strong> de nuestro <strong>php.ini</strong> no están configuradas para realizar lo que queremos. En un servidor autogestionado o local podemos tocar el <strong>php.ini</strong> a nuestro antojo y configurar dichas directivas, pero cuando no tenemos acceso a el archivo de configuración (por ejemplo en servidores compartidos) esto ya no es posible, y debemos de buscar una alternativa.</p>
<p><span id="more-156"></span><br />
<br />
<h3>¿Que son las directivas open basedir y Safe Mode?</h3>
<p>El <strong>Modo Seguro de PHP (Safe Mode)</strong> es un intento para resolver el problemas de seguridad en un servidor compartido. Trata de resolver este problema a nivel de PHP verificando si el dueño del script actual coincide con el dueño del fichero a ser operado por una función de fichero (readfile(), mkdir(), etc). </p>
<p>Mientras que la directiva <strong>open basedir</strong> limita la interacción de los archivos con archivos fuera de la carpeta donde se está ejecutándose el script actual.</p>
<p>
<h3>¿Como &#8220;salto la protección&#8221; open basedir y Safe Mode para Curl en servidores compartidos?</h3>
<p>En servidores compartidos, como por ejemplo <strong>000webhost</strong>, tenemos este problema a la hora de ejecutar un script <strong>Curl con FollowLocation</strong>. Desde el manual oficial de <strong>PHP</strong> encuentro que el usuario <a href="http://au.php.net/manual/ro/function.curl-setopt.php#71313" title="Curl FOLLOWLOCATION and open basedir Or Safe Mode">eion</a> ha realizado una función para corregir este problema. Para entender la función y simplificar su explicación lo que realiza realmente es la primera petición <strong>curl</strong> obteniendo solo la cabecera, donde en ella podemos encontrar la redirección 301. Volverá a realizar la petición pero esta vez a la redirección y así sucesivamente. Es una buena alternativa para &#8220;saltarse&#8221; <strong>open basedir y Safe Mode para Curl</strong> en servidores como <strong>000webhost</strong>.</p>
<p>
<h3>Obtener función Curl para que PHP realize el &#8220;salto de protección&#8221; open basedir y Safe Mode</h3>
<p>El anterior post, &#8220;<a href="http://www.rutarelativa.com/php/curl-php/" title="Curl en PHP">Curl en PHP</a>&#8220;, dispone de esta función dando la posibilidad de realizar peticiones Curl en servidores como <strong>000webhost</strong> que no disponen de <strong>open basedir Or Safe Mode</strong>.</p>
<p>Enlace: <a title="Descargar Curl para PHP" href="http://www.rutarelativa.com/files/curl-php.zip">Descargar Curl para PHP</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.rutarelativa.com/php/curl-followlocation-and-open-basedir-or-safe-mode/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

