Archivo | Programación PHP RSS feed for this section

Pasar variable de Javascript a PHP

13 Abr

Si bien en teoría no es posible pasar variables directamente de Javascript a PHP, existe un workaround bastante interesante utilizando cookies. Por ejemplo, el siguiente código podría utilizarse para saber en PHP cuál es el ancho de pantalla que se está utilizando:

<?php
// Ancho del monitor para el popup
if(isset($_COOKIE[“ancho_monitor”]))
$screen_res = $_COOKIE[“ancho_monitor”];
else //means cookie is not found set it using Javascript
{
?>
<script language=”javascript”>
<!–
writeCookie();
function writeCookie()
{
var today = new Date();
var the_date = new Date(“December 31, 2023”);
var the_cookie_date = the_date.toGMTString();
var the_cookie = “ancho_monitor=”+ screen.width;
var the_cookie = the_cookie + “;expires=” + the_cookie_date;
document.cookie=the_cookie;
window.location = “index.php”;
}
//–>
</script>
<?php
}
$ancho_monitor = $_COOKIE[“ancho_monitor”];
// Termina ancho del monitor
?>

(Esto lo que hace es setear una cookie en el caso de que aún no esté seteada, y utiliza javascript para saber el ancho del monitor. Podría también obtenerse el alto con screen.height).

Se refresca la página en el script de javascript (en este caso index.php), porque sino la cookie no la agarra PHP.

Finalmente, podemos en el código php utilizar la variable $ancho_monitor.

Saber cuántos clicks hubo en un banner con Google Analytics

4 Abr

Si tenemos un cliente que quiere saber cuántos clicks está habiendo en sus banners, una forma de hacerlo es utilizando Google Analytics.
Creo que ha habido algunos cambios, y existe una forma más práctica de hacerlo. Simplemente, en el link, se pone:

onclick=”_gaq.push([‘_trackEvent’, ‘Banners clickeados’, ‘www.prointernacional.com’]);”

Es decir, quedaría algo del estilo:

<a href=”http://www.prointernacional.com&#8221; onclick=”_gaq.push([‘_trackEvent’, ‘Banners clickeados’, ‘www.prointernacional.com’]);” target=”_blank”> PRO Internacional </a>


Para esto, lo que se hace es:

1. Debajo del código de Analytics que ponemos usualmente en los sitios (en el head), agregamos:

<script type=”text/javascript”>
function recordOutboundLink(link, category, action) {
try {
var pageTracker=_gat._getTracker(“UA-22246553-1”);
pageTracker._trackEvent(category, action);
setTimeout(‘document.location = “‘ + link.href + ‘”‘, 100)
}catch(err){}
}
</script>

Que básicamente lo que hace es retardar unos instantes el tiempo que demora el usuario al clickear en visitar el link, de manera que Google tenga tiempo de registrarlo.

2. Cada vez que hacemos un link en el banner, en lugar de hacerlo con <a href> normal, lo hacemos de la siguiente manera:

<a href=”http://www.example.com” onClick=”recordOutboundLink(this, ‘Outbound Links’, ‘example.com‘);return false;”>

Donde http://www.example.com es el sitio donde queremos que vaya el usuario cuando clickea el link, y example.com es la forma en que queremos que google registre que se clickeo.

3. Finalmente, al entrar a Analytics, si vamos a Ver informe, y luego vamos a Contenido -> Seguimiento de Eventos -> Categorías y allí clickeamos en Outbound Links vamos a ver cuántos clicks hubo en cada link (en este caso, habría al menos uno que se llamaría example.com).

 

Tomado de: http://www.google.com/support/googleanalytics/bin/answer.py?hl=en&answer=55527

Pasar Excel a MySQL

23 Mar

Estaba viendo cómo hacer para pasar un archivo Excel a una base de datos MySQL. En principio es bastante sencillo, si se convierte el Excel a un CSV, el mismo se puede importar desde PHPMyAdmin.

Ahora bien, qué pasa cuando tenemos que manejar fechas? Bueno, en este post da la solución:

http://blog.mclaughlinsoftware.com/2009/06/16/mysql-upload-from-csv/

Como yo tengo Excel en Español, pego aquí la función que habría que utilizar para convertir las fechas a un formato legible de MySQL. B2 es en este caso la celda donde tengo la fecha:

=CONCATENAR(CONCATENAR(“”;AÑO(B2));SI(LARGO(MES(B2));CONCATENAR(“0”;MES(B2)));SI(LARGO(DIA(B2)) = 1;CONCATENAR(“0”;DIA(B2));CONCATENAR(“”;DIA(B2))))

 

Pasaje de Array en PHP

28 Feb

Para pasar un array de datos en PHP por post o get, es necesario serializar dicho Array. Ahora bien, al serializar, puede pasar que si el elemento tiene caracteres especiales, luego de un error al hacer el unserialize. En este sentido, una posible solución es hacer un base64_encode al array serializado, y luego un decode al querer levantarlo. Algo así:

– Archivo que pasa el array:

echo “<input type=’hidden’ name=’categorias_seleccionadas’ value='”.base64_encode(serialize ($ids)).”‘ />”;

($ids es un array)

– Archivo que recibe:

$categorias = unserialize(base64_decode($_REQUEST[‘categorias_seleccionadas’]));

Pasar Variable desde PHP a Javascript

24 Ene

Un tema y tip interesante: cómo pasar una variable en PHP a Javascript?

En mi caso, estamos armando un sistema multi-idioma, en el que tenemos un archivo de PHP que tiene una serie de constantes que son los textos para cada idioma. Tengo un archivo por idioma.

Lo que necesitaba hacer, es que un alert en Javascript tomara como mensaje una de esas constantes en PHP.

Para esto, lo que se hace es:

1. En el HTML de la página, se crea un input hidden, con el texto o la variable PHP que queremos pasarle a Javascript:

<input type=”hidden” name=”mensajeConfirmaBorrar” id=”mensajeConfirmaBorrar” value=”<?php echo _LISTADO_DOCUMENTOS_CONFIRMA_BORRAR; ?>” />

2. Luego en el script, simplemente se llama al value del hidden:

document.getElementById(“mensajeConfirmaBorrar”).value

(Solución tomada de: http://bytes.com/topic/php/answers/827223-passing-values-php-javascript )

Ejecutar consulta en Joomla!

31 Oct

Para conectar con Joomla! y poder ejecutar consultas contra su base desde un php externo:

define( ‘_JEXEC’, 1 );

define(‘JPATH_BASE’,

dirname(dirname(__FILE__)));

define( ‘DS’, DIRECTORY_SEPARATOR );
require_once (JPATH_BASE . DS . ‘includes’ . DS . ‘defines.php’);

require_once (JPATH_BASE . DS . ‘includes’ . DS . ‘framework.php’);
$mainframe = JFactory::getApplication(‘site’);

$my =& JFactory::getUser();

$base =& JFactory::getDBO();

$query =  “SELECT * from jos_user where user_id =”.$my->id;

$base->setQuery($query);

$resultado=$db->loadObjectList();

(En este ejemplo, traemos los datos del usuario que está logueado en ese momento)

Recuperar pass de Moodle

28 Jun

En el caso de habernos olvidado el password de moodle, se puede cambiar generando un archivo php en la raíz del sitio con este código:

<?p…
include(‘config.php’);

////////////////////////////////////////////////////////////////////

$username = ‘admin’;
$newpassword = ‘minuevopass’;

////////////////////////////////////////////////////////////////////

if ($userobj = get_record_select(‘user’, “username=’$username'”, ‘id, password’)) {
$userobj->password = md5($newpassword);
update_record(‘user’, $userobj);
echo ‘Password changed’;
} else {
echo ‘Invalid username’;
}

…?>

A %d blogueros les gusta esto: