parseScript ejecutar funcion despues de ajax

Esta función crea una Matriz(array) buscando las etiquetas <script> </>, para luego utilizar eval() y así lograr su ejecución después de haberlo obtenido como respuesta de una consulta en AJAX.

[important]Lograr ejecutar una función que obtuvimos como respuesta en una llamada por AJAX[/important]

En realidad se ve mucho en internet, muchas personas que les sucede el mismo problema, aqui les compartiré esta solución.

 


 

function parseScript(strcode) {
var scripts = new Array();
// Strip out tags
while(strcode.indexOf("<script") > -1 || strcode.indexOf("</script") > -1) {
var s = strcode.indexOf("<script");
var s_e = strcode.indexOf(">", s);
var e = strcode.indexOf("</script", s);
var e_e = strcode.indexOf(">", e);

// Add to scripts array
scripts.push(strcode.substring(s_e+1, e));
// Strip from strcode
strcode = strcode.substring(0, s) + strcode.substring(e_e+1);
}

// Loop through every script collected and eval it
for(var i=0; i<scripts.length; i++) {
try {
eval(scripts[i]);
}
catch(ex) {
// do what you want here when a script fails
}
}
}

 

 

Aquí les comparto un ejemplo completo


<meta http-equiv="content-type" content="text/html; charset=iso-8859-2" />

<script type="text/javascript">// <!&#91;CDATA&#91;


// create the XMLHttpRequest object, according browser
function get_XmlHttp() {
  // create the variable that will contain the instance of the XMLHttpRequest object (initially with null value)
  var xmlHttp = null;

  if(window.XMLHttpRequest) {		// for Forefox, IE7+, Opera, Safari, ...
    xmlHttp = new XMLHttpRequest();
  }
  else if(window.ActiveXObject) {	// for Internet Explorer 5 or 6
    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
  }

  return xmlHttp;
}

// sends data to a php file, via POST, and displays the received answer
function ajaxrequest(php_file, tagID) {
  var request =  get_XmlHttp();		// call the function for the XMLHttpRequest instance

  var  the_data = '';       // here you can set data to be send to the server (pairs index=value)

  request.open("POST", php_file, true);			// set the request

  // adds  a header to tell the PHP script to recognize the data as is sent via POST
  request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  request.send(the_data);		// calls the send() method with data as parameter

  // Check request status
  // If the response is received completely, will be transferred to the HTML tag with tagID
  request.onreadystatechange = function() {
    if (request.readyState == 4) {
      var resp = request.responseText;        // get the response from php
      document.getElementById(tagID).innerHTML = resp;       // add the response into the tag with the ID from "tagID"

      // calls the parseScript() function, with the response from PHP as argument
      parseScript(resp);
    }
  }
}

// this function create an Array that contains the JS code of every <script> tag in parameter
// then apply the eval() to execute the code in every script collected
function parseScript(strcode) {

  var scripts = new Array();         // Array which will store the script's code

  // Strip out tags
  while(strcode.indexOf("<script") > -1 || strcode.indexOf("
// &#93;&#93;></script>-1) { var s = strcode.indexOf("&lt;script"); var s_e = strcode.indexOf("&gt;", s); var e = strcode.indexOf("", e);

// Add to scripts array scripts.push(strcode.substring(s_e+1, e)); // Strip from strcode strcode = strcode.substring(0, s) + strcode.substring(e_e+1); }

// Loop through every script collected and eval it for(var i=0; i&lt;scripts.length; i++) { try { eval(scripts[i]); } catch(ex) { // do what you want here when a script fails } } } --&gt;
<div id="context"></div>
<h4 style="cursor: pointer;" onclick="ajaxrequest('script.php', 'context')"><span style="text-decoration: underline;">Test</span></h4>

el php para que lo prueben


<!--?php </p-->

// return some text within html code
echo '<b>Text added with Ajax</b>, <i>received from PHP.</i>';

// return the first JS code, which displays an Alert with the current Timestamp
echo '<script type="text/javascript">// <!&#91;CDATA&#91;
var tmp = '. time().';
  alert("Server Timestamp: "+ tmp);

// &#93;&#93;></script>';

// Outputs a second JS script, with another alert window
echo '<script type="text/javascript">// <!&#91;CDATA&#91;
alert("The alert from the second JS script from PHP");

// &#93;&#93;></script>';
?&gt;

Dudas o consultas, estamos a la orden.

 

fuente: coursesweb.com
Media-Pirate-300x2251.jpg

Clase para Encriptar y Desencriptar encode / decode

Ciertamente en ocaciones necesitamos agregarle seguridad nuestros strings, pero esta seguridad no significa que deba ser en una sola dirección como los es el md5, que una vez generado no tiene retorno, a menos de que utilicemos fuerza bruta, o consultemos bibliotecas en internet donde con suerte encontraremos posibles resultados, pero de cualquier forma md5 no permite una reversa.

Ni tampoco utilizar funciones simples como el base64_encode/decode, que nos permite una simple codificación y de-codificación del string especifico que necesitamos, sin mucha complicación o requisito.

Para este caso les comparto una clase que utiliza la función mcrypt(); y una llave, que si desean la modifican de forma dinámica, o almacenándola en otro archivo, en fin.

Ademas le agregue la definición de una constante, que ustedes variar, o eliminar según lo requieran, en este caso lo que realiza es si no esta definida la constante, no ingresara a utilizar la clase.


<?php

if(!defined('Muppet')){

die ("Hacking attempt - Get Lost Muppet!! <br /> <b>" . __FILE__ . "<br /> Line " . __LINE__ . "</b>" );
exit;
}

class Encryption {
var $skey = "C4Soi9.asW"; // llave privada

public function safe_b64encode($string) {

$data = base64_encode($string);
$data = str_replace(array('+','/','='),array('-','_',''),$data);
return $data;
}

public function safe_b64decode($string) {
$data = str_replace(array('-','_'),array('+','/'),$string);
$mod4 = strlen($data) % 4;
if ($mod4) {
$data .= substr('====', $mod4);
}
return base64_decode($data);
}

public function encode($value){

if(!$value){return false;}
$text = $value;
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $this->skey, $text, MCRYPT_MODE_ECB, $iv);
return trim($this->safe_b64encode($crypttext));
}

public function decode($value){

if(!$value){return false;}
$crypttext = $this->safe_b64decode($value);
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$decrypttext = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $this->skey, $crypttext, MCRYPT_MODE_ECB, $iv);
return trim($decrypttext);
}
}

 

?>

 

 

Aunque con trabajo, podríamos aplicarle fuerza bruta, nos permite tener una solución simple de encriptación y su reversa.

 

 

Un ejemplo para incluir y utilizar esta clase seria así:

 


 

define("Muppet",true);

include_once("stringencrypt.php");

$rdo = new Encryption();

$rum = $rdo->encode("la clave de la abuela"); // el string que deseamos

 

echo $rum."<br><br>"; // resultado encriptado

// resultado : _9NVFtgbqpKteQq1YKyE-iX0yRzaXTXws4Ao7igTQJg

 

echo $rdo->decode($rum); // usando el decode

//resultado : la clave de la abuela

 

 

Dudas, comentarios, sugerencias, bienvenidos

 

algoritmos_de_encriptacion_una_alternativa_para_la_seguridad7

 

 

 

URL relativa en https y http

En ocasiones cuando trabajes en sitios o aplicaciones que utilizan SSL, notaran que los enlaces relativos convencionales no funcionan. Si tuvieran problemas al llamar sus archivos javascript, imagenes, etc, pueden utilizar este truco para hacer referencia a una url relativa, que funcionara tanto en HTTP como en HTTPS


 

<img src="//empresa.com/imagenes/imagen.jpg">

 

Con solamente escribir “//” analizara el protocolo usado, y el archivo que están llamando funcionara.

 

También pueden usar el método que utiliza google analitycs, consultando el “protocol” para construir la dirección del archivo que se requiere


 

(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();

 

 

 

Older posts «