jueves, 21 de abril de 2016

¿Nuevo caso Megaupload? Kim Dotcom pide que guardemos lo que tengamos en Mega

Crece el temor a que se repita un caso similar al que sacudió a todo el mundo con el cierre del servicio de alojamiento online Megaupload. El responsable de ese servicio lanzó años más tarde Mega y ahora teme por su futuro. Por ello, ha comenzado a pedir a los usuarios de esta plataforma que empiecen a descargar sus archivos alojados en la misma por lo que pueda llegar a ocurrir con ellos.
En 2012 se terminó con Megaupload, un monstruo de Internet que utilizaban a diario millones de personas para compartir archivos. Varias redadas coordinas entre Estados Unidos y Nueva Zelanda pusieron en jaque a su responsable, Kim Dotcom, en un caso que todavía no se ha resuelto al 100% desde el punto de vista judicial.
Un poco más tarde, Dotcom anunció el lanzamiento de Mega, otro servicio online de alojamiento de archivos que apostaba por ofrecer la máxima seguridad y un buen puñado de gigas de forma gratuita. No tardó en atraer las miradas de los gobiernos y entidades gestoras de derechos de autor y ya en 2014 lo calificaron como “el paraíso de los piratas”.
Todo esto trajo consecuencias nefastas para el portal. Por ejemplo, el Gobierno de Estados Unidos forzó a PayPal a dejar de procesar los pagos de los usuarios de Mega, haciendo un tremendo daño a Dotcom y demás responsables de la web. También tuvieron problemas para salir a bolsa en 2015.
Aunque Kim Dotcom ya no es el director de Mega, ha lanzado un curioso aviso a través de la red social Twitter. “Mega ha sobrevivido durante dos años sin poder procesar un solo pago con tarjeta de crédito. El ambiente se está enrareciendo. Guarda tus ficheros alojados en Mega”. A continuación os dejamos el mensaje:
Kim Dotcom teme los problemas que puede tener la plataforma al permanecer bajo el control de Bill Liu. A este ciudadano chino se le ha concedido la nacionalidad en Nueva Zelanda pese a estar en la lista de los 100 criminales chinos de los que se pide la extradición. Con otro mensaje vuelve a dejar claros sus temores:
Complicada situación y difícil saber lo que en realidad está sucediendo. Como se suele decir “cuando el río suena, agua lleva”. Además y siempre por si acaso, os recomendamos que descarguéis vuestros archivos alojados en Mega por lo que pueda llegar a ocurrir.
Compartir:

sábado, 9 de abril de 2016

Como enviar un formulario con PHP

Enviar un formulario por e-mail usando PHP




Cuando estamos trabajando en un sitio web, muchas veces existe la necesidad de proveer al usuario con un formulario de contacto para hacernos llegar sus consultas, comentarios u otro tipo de información. 

En este truco te mostramos un ejemplo de cómo hacer un formulario usando HTML para crearlo y PHP para procesarlo y enviarlo por e-mail. 

El formulario
Se trata de un fragmento de código HTML que usando el TAG <form> nos permite crear el formulario de entrada de datos a ser completado por el usuario: 

Formulario.html
<form name="Contacto" method="post" action="enviarmail.php">
<table width="500px">
<tr>
<td>
<label for="nombre">Nombre: *</label>
</td>
<td>
<input type="text" name="nombre" maxlength="50" size="25">
</td>
</tr>
<tr>
<td valign="top"">
<label for="apellido">Apellido: *</label>
</td>
<td>
<input type="text" name="apellido" maxlength="50" size="25">
</td>
</tr>
<tr>
<td>
<label for="email">Dirección de E-mail: *</label>
</td>
<td>
<input type="text" name="email" maxlength="80" size="35">
</td>
</tr>
<tr>
<td>
<label for="telefono">Número de teléfono:</label>
</td>
<td>
<input type="text" name="telefono" maxlength="25" size="15">
</td>
</tr>
<tr>
<td>
<label for="comentario">Comentarios: *</label>
</td>
<td>
<textarea name="comentario" maxlength="500" cols="30" rows="5"></textarea>
</td>
</tr>
<tr>
<td colspan="2" style="text-align:right">
<input type="submit" name="enviar" value="Enviar Solicitud">
</td>
</tr>
</table>
</form>

El script PHP

La otra parte de código a escribir será entonces la encargada de tomar los datos del formulario anterior, validarlos y si todo está bien, enviar el formulario por correo electrónico a una dirección de destino determinada en el código. 

Veamos este ejemplo:

enviarmail.php

<?php
if(isset($_POST['enviar'])) {

// Debes editar las próximas dos líneas de código de acuerdo con tus preferencias
$email_to = "destinatario@sudominio.com";
$email_subject = "Contacto desde el sitio web";

// Aquí se deberían validar los datos ingresados por el usuario
if(!isset($_POST['nombre']) ||
!isset($_POST['apellido']) ||
!isset($_POST['email']) ||
!isset($_POST['telefono']) ||
!isset($_POST['commentario'])) {

echo "<b>Ocurrió un error y el formulario no ha sido enviado. </b><br />";
echo "Por favor, vuelva atrás y verifique la información ingresada<br />";
die();
}

$email_message = "Detalles del formulario de contacto:\n\n";
$email_message .= "Nombre: " . $_POST['nombre'] . "\n";
$email_message .= "Apellido: " . $_POST['apellido'] . "\n";
$email_message .= "E-mail: " . $_POST['email'] . "\n";
$email_message .= "Teléfono: " . $_POST['telefono'] . "\n";
$email_message .= "Comentarios: " . $_POST['commentario'] . "\n\n";


// Ahora se envía el e-mail usando la función mail() de PHP
$headers = 'From: '.$email_from."\r\n".
'Reply-To: '.$email_from."\r\n" .
'X-Mailer: PHP/' . phpversion();
@mail($email_to, $email_subject, $email_message, $headers);

echo "¡El formulario se ha enviado con éxito!";
} 
?> 
Espero que les ayude con este formulario muy sencillo, mas adelante publicaremos como configurar un servidor smtp...
Compartir:

Acelera tu web moviendo todo el JavaScript al final

Todos los códigos JavaScript que se cargan en tu web pueden hacer que tu sitio se ralentice, y es especialmente preocupante cuando provocan que el contenido de tu web tarde en cargarse, con lo que muchos usuarios pueden abandonarla antes de que termine de cargar.
Puedes minimizar el JavaScript mediante plugins de caché, o aplazar su carga, pero si se cargan desde la cabecera de tu tema, como suelen tener la mala costumbre de hacer, primero se cargarán los scripts, por minimizados que estén, y luego el contenido ¿lo vas pillando?
Por eso, si no puedes prescindir de los scripts, y en una tienda online por ejemplo no puedes salvo excepciones, una estrategia a aplicar es mover automáticamente todos los JavaScripts al fondo, al pié de tu tema, para que carguen en el archivo footer.php en vez de en header.php.
Hay plugins como W3 Total Cache que ofrecen soluciones para esto, pero no siempre funciona, así que podemos hacerlo manualmente, sin necesidad de plugins, para que funcione sí o sí.
Y son solo tres pasos. El primero es añadir el siguiente código al archivo functions.php del tema:
function theme_strip_tags_content($text, $tags = '', $invert = false) {

    preg_match_all( '/<(.+?)[\s]*\/?[\s]*>/si', trim( $tags ), $tags );
    $tags = array_unique( $tags[1] );

    if ( is_array( $tags ) AND count( $tags ) > 0 ) {
        if ( false == $invert ) {
            return preg_replace( '@<(?!(?:'. implode( '|', $tags ) .')\b)(\w+)\b.*?>.*?</\1>@si', '', $text );
        }
        else {
            return preg_replace( '@<('. implode( '|', $tags ) .')\b.*?>.*?</\1>@si', '', $text );
        }
    }
    elseif ( false == $invert ) {
        return preg_replace( '@<(\w+)\b.*?>.*?</\1>@si', '', $text );
    }

    return $text;
}

function theme_insert_js($source) {

    $out = '';

    $fragment = new DOMDocument();
    $fragment->loadHTML( $source );

    $xp = new DOMXPath( $fragment );
    $result = $xp->query( '//script' );

    $scripts = array();
    $scripts_src = array();
    foreach ( $result as $key => $el ) {
        $src = $result->item( $key )->attributes->getNamedItem( 'src' )->value;
        if ( ! empty( $src ) ) {
            $scripts_src[] = $src;
        } else {
            $type = $result->item( $key )->attributes->getNamedItem( 'type' )->value;
            if ( empty( $type ) ) {
                $type = 'text/javascript';
            }

            $scripts[$type][] = $el->nodeValue;
        }
    }

    foreach ( $scripts as $key => $value ) {
        $out .= '<script type="'.$key.'">';

        foreach ( $value as $keyC => $valueC ) {
            $out .= "\n".$valueC;
        }

        $out .= '</script>';
    }

    foreach ( $scripts_src as $value ) {
        $out .= '<script src="'.$value.'"></script>';
    }

    return $out;
}
A continuación debemos abrir el archivo header.php del tema y sustituir <?php wp_head(); ?> por esto otro:
<?php
02ob_start();
03wp_head();
04$themeHead = ob_get_contents();
05ob_end_clean();
06define( 'HEAD_CONTENT'$themeHead );
07$allowedTags = '
08<style><link><meta><title>';
09print theme_strip_tags_content( HEAD_CONTENT, $allowedTags );
10?>
Para finalizar, en el archivo footer.php debemos incluir el siguiente código antes de </body>:
1<?php theme_insert_js( HEAD_CONTENT ); ?>
¿Qué hemos hecho?
En el primer código tenemos una función que elimina todas las tags que no queremos, contenido incluido, y otras dos funciones que generan las tags <script>.
A continuación, en el código que añadimos a header.php se elimina todo lo que no sea un estilo, enlace o meta tag. Y es importante en este punto que revises la variable $allowedTags para que incluyas las necesarias para tu tema, no te vayas a dejar algo.
Para finalizar, simplemente llevamos todos los scripts eliminados de la cabecera al fondo, a footer.php.
Una última recomendación: revisa que todo funciona tras aplicar los códigos, pues hay temas que no se dejarán o no funcionarán bien con los scripts cargados al final.
Compartir: