Foros del Web » Programando para Internet » PHP »

Ejecución o grabado de javascript en campo oculto con php

Estas en el tema de Ejecución o grabado de javascript en campo oculto con php en el foro de PHP en Foros del Web. Buenas amigos: Necesito escribir un Javascript dentro de un campo hidden en un formulario php. En el siguiente ejemplo se escribe algo sencillo como el ...
  #1 (permalink)  
Antiguo 26/08/2010, 15:57
 
Fecha de Ingreso: septiembre-2009
Mensajes: 87
Antigüedad: 14 años, 7 meses
Puntos: 1
Ejecución o grabado de javascript en campo oculto con php

Buenas amigos:


Necesito escribir un Javascript dentro de un campo hidden en un formulario php.

En el siguiente ejemplo se escribe algo sencillo como el título de la página y funciona perfectamente:

Código HTML:
Ver original
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
  2. "http://www.w3.org/TR/html4/strict.dtd">
  3. <html>
  4. <head>
  5.  <meta http-equiv="Content-Type" content="text/html; charset:utf-8">
  6.  <title>This is my title</title>
  7. </head>
  8. <body>
  9. <form name="myForm">
  10. <div>
  11. <input type="hidden" id="linktitle" name="linktitle" value="" />
  12. </div>
  13. </form>
  14. <script type="text/javascript">
  15. window.onload = function() {
  16.   document.getElementById('linktitle').value = document.title;
  17. };
  18. </script>
  19. </body>
  20. </html>

Lo que necesito, en cambio, es hacer lo mismo con un script js un poco más complejo que tiene por objeto identificar en qué paginas ha estado el visitante de mi sitio para saber cuándo ha sido referido. Ya que desde la landing page hasta el formulario de contacto el MÉTODO de solicitar el HHTTP_REFERER y que me lo envie por campo oculto no me sirve puesto que puede haber varias páginas en el medio. Encontré por ahí el siguiente javascript que lo que hace meterle una cookie al usuario y grabar su navegación dentro del sitio. El segundo javascript tiene la función de recuperar la cookie almacenada y desplegar el historial de navegación del usuario en el sitio. De modo, pues, que cuando llega al formulario de contacto -si lograra hacerlo funcionar- el usuario me envíe en un campo oculto de este form el resultado de este script para que yo pueda saber si el mismo ingreso, por ejemplo, via: www.misitio.com/index.php?Id=63 y con ello que ha sido referido por mi afiliado nro. 63.

Script que crea cookie:
Código Javascript:
Ver original
  1. var MaximumNumberOfLinks = 15;
  2.  
  3. // Specify cookie name.
  4. var CookieName = "HistoryLinks";
  5.  
  6. // Specify number of days cookie is to remain on visitor's
  7. //    computer. (Use 0 to delete cookie when browser closed.)
  8. var DaysToLive = 366;
  9.  
  10. // No other customizations required.
  11. var HistoryLink = new Array();
  12. var HistoryTitle = new Array();
  13. var CurrentPage = new String();
  14. var HistoryContent = new String();
  15. DaysToLive = parseInt(DaysToLive);
  16. MaximumNumberOfLinks = parseInt(MaximumNumberOfLinks);
  17. if( MaximumNumberOfLinks < 1 ) { MaximumNumberOfLinks = 10; }
  18.  
  19. function GetCookie() {
  20. var cookiecontent = '';
  21. if(document.cookie.length > 0) {
  22.    var cookiename = CookieName + '=';
  23.    var cookiebegin = document.cookie.indexOf(cookiename);
  24.    if(cookiebegin > -1) {
  25.       cookiebegin += cookiename.length;
  26.       var cookieend = document.cookie.indexOf(";",cookiebegin);
  27.       if(cookieend < cookiebegin) { cookieend = document.cookie.length; }
  28.       cookiecontent = document.cookie.substr(cookiebegin,cookieend);
  29.       }
  30.    }
  31. if( cookiecontent.length < 3 ) { return; }
  32. cookiecontent = unescape(cookiecontent);
  33. var historyList = cookiecontent.split('&');
  34. for( var i = 0; i < historyList.length; i++ ) {
  35.    var link = historyList[i].split('=',2);
  36.    HistoryLink.push(link[0]);
  37.    HistoryTitle.push(link[1]);
  38.    var temparray = link[0].split('~amp;');
  39.    link[0] = temparray.join('&');
  40.    temparray = link[1].split('~amp;');
  41.    link[1] = temparray.join('&');
  42.    HistoryContent += '<'+'p>'+'<'+'a href="'+link[0]+'">'+link[1]+'<'+'/'+'a>'+'<'+'/'+'p>';
  43.    }
  44. }
  45.  
  46. function PutCookie() {
  47. if( HistoryLink.length < 1 ) { return; }
  48. var len = HistoryLink.length;
  49. while( HistoryLink.length > MaximumNumberOfLinks ) {
  50.    HistoryTitle.shift();
  51.    HistoryLink.shift();
  52.    }
  53. var pairs = new Array();
  54. for( var i = 0; i < HistoryLink.length; i++ ) { pairs.push(HistoryLink[i]+'='+HistoryTitle[i]); }
  55. var value = pairs.join('&');
  56. var exp = new String();
  57. if(DaysToLive > 0) {
  58.    var now = new Date();
  59.    now.setTime( now.getTime() + (DaysToLive * 24 * 60 * 60 * 1000) );
  60.    exp = '; expires=' + now.toGMTString();
  61.    }
  62. document.cookie = CookieName + "=" + escape(value) + '; path=/' + exp;
  63. }
  64.  
  65. function RecordCurrentPage() {
  66. var link = document.URL;
  67. var title = document.title.length > 1 ? document.title : 'Untitled';
  68. CurrentPage = '<'+'p>'+title+'<'+'/'+'p>';
  69. var temparray = link.split('&');
  70. link = temparray.join('~amp;');
  71. var temparray = title.split('&');
  72. title = temparray.join('~amp;');
  73. HistoryLink.push(link);
  74. HistoryTitle.push(title);
  75. }
  76.  
  77. GetCookie();
  78. RecordCurrentPage();
  79. PutCookie();


Script que toma cookie y la despliega en el navegador del usuario:


Código Javascript:
Ver original
  1. script type="text/javascript"><!--
  2. if(HistoryContent.length) {
  3.  
  4. document.write('<'+'div ');
  5. document.write(' id="visitorhistory" ');
  6. document.write(' style="border-style:solid; border-width:1px; padding:0 5px 10px 20px;">');
  7.  
  8. document.write('<'+'h3>El visitante estuvo en estas páginas:<'+'/h3>');
  9.  
  10. document.write(HistoryContent);
  11.  
  12. document.write('<'+'h3>Envia el formulario desde:<'+'/h3>');
  13.  
  14. document.write(CurrentPage);
  15.  
  16. document.write('<'+'/div>');
  17.  
  18. }
  19. //--></script>

La finalidad es la misma que a partir de la ejecución del script se grabe en un campo oculto los mismos resultados que este script devuelve si se ejecuta normalmente, para que luego me los envíe la historia del browsing del usuario en mi sitio con el resto de los datos. Me interesa que el script, como me sucede ahora, no se ejecute visualmente en el navegador del cliente. Sino que, tal como en el primer script sucede, me lo envie a mi por email.

Juro que he probado con todo tipo de tutoriales sobre ejecución de javascript en php, pero no hay caso. No consigo de ningun modo ingresar al value del campo oculto el resultado de la ejecución de un javascript.

Si alguien me puede ayudar con la correcta sintaxis, les agradecería muchísimo.

Etiquetas: javascript, oculto, campos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:09.