holman
Usuario (Colombia)

Hola a todos, este es mi primer post en taringa básicamente es una mejora a un código que encontré en otro articulo con el mismo nombre, articulo al que llegue después de mucho buscar como mejorar otro código que encontré, parece un enredo así que vamos por partes, lo primero que encontré esta en este enlace Miremos que fue lo que encontré allí que me llamo tanto la atención En el archivo HTML debemos ubicar la llamada al archivo que queremos ejecutar: index.htm <HTML> <HEAD> <TITLE>Ejectuar código PHP o ASP con JavaScript</TITLE> </HEAD> <BODY> <script language="JavaScript" src="archivo. php "></script> </BODY> </HTML> El archivo del Script debe contener la función document.write al final del mismo para poder imprimir el contenido que generó dinámicamente: archivo. php <? // En este espacio pondremos todo el // código PHP que queremos ejecutar // y luego juntar todo lo que es // necesario imprimir en una sola // variable. $variable = "Script PHP ejecutado desde una página HTML"; ?> document.write("<?=$variable;?>"; Cuando leí este articulo me dije uff, que bien esto es como ajax , claro que medio, porque puedo llamar una pagina escrita en php y mostrar su resultado en donde incluya esta etiqueta <script language="JavaScript" src="archivo. php "></script> Entonces me puse en la tarea de volverlo más interactivo y puse el código php dentro de una funcion que llame escribir(); y también en vez de ir guardando todas las etiquetas html o los que se fuera a imprimir en una variable, use las funciones ob_start(); y ob_get_contents(); para que se pudieran usar los echo normalmente ya que estas recogen lo que haya en el buffer de salida y lo guarda en una variable, luego cambie el document.write("<?=$variable;?>"; por document.getElementById("algo".innerHTML += "<?=$variable;?>"; donde “algo” es el id o name del body o de un div que es donde aparecerá el resultado del php . Así que también cambie unas cositas en el html ahora puedo llamar la función escribir() desde el evento onclick de un botón <HTML> <HEAD> <TITLE>Ejectuar código PHP o ASP con JavaScript</TITLE> <script src="archivo. php "></script> </script> </HEAD> <BODY id="algo"> <br> <input name="valor" type="Text" value="sirve"> hola esta es una prueba de escritura <br> <input name="asdf" type="button" onclick="escribir()"> <br> <div > </div> </body> </html> Y archivo. php function escribir() { <? ob_start(); echo "esto es una prueba <br>"; for ($i = 1; $i <= 10; $i++) { print $i; } echo "<h4>Titulo</h4>"; $variable=ob_get_contents(); // limpiando el buffer ob_end_clean(); ?> document.getElementById("algo".innerHTML += "<?=$variable;?>"; } Esto fue lo máximo que logre con esto, pero yo quería mas, tenia la mitad de lo que quería lograr es decir podía llamar una pagina php ejecutarla y ver los resultados sin refrescar la pagina o hacer un submit, pero no le podía enviar parámetros a la pagina php para que ella trabajara con esos datos. Por ejemplo poner un input del tipo entre su código y Luego un botón tipo enviar y que mas abajo en un div muestre los datos de la persona que este en una base de datos, ya que el php buscaría el código de la persona y arrojaría los resultados sin refrescar la pagina, estilo ajax , pero, ¿como mandar el valor del input? Lo intente de muchas formas y lo mas cercano fue guardar las variables y los valores en cookies con javascript y luego leerlos con php pero no funciono como quería ya que la cookie solo se hace visible en la siguiente actualización de la pagina, ósea que no logre nada. Así que por un día deje las cosas así, pero después me dedique a buscar en Internet si alguien había hecho lo que yo apenas intentaba hacer, es decir hacer ajax sin xmlhttprequest y si lo encontré acá http://www.anieto2k.com/2007/01/04/ ajax -sin-usar-el-objeto- xmlhttprequest /, en esta ocasión ya no eran dos archivos sino tres los necesarios para hacer esta magia y son estos: Primero necesitamos un fichero alojado en el servidor que será el encargado de devolvernos los datos. En nuestro caso un . php . <? php $html = '<b>This content came from our Ajax Engine</b>'; // Generamos un JS con el contenido de $html ?> div = document.getElementById('contentdiv'); div.innerHTML = '<? php echo $html; ?>'; Una vez montado este fichero que nos carga una variable ($html) y que mediante Javascript queremos que la inserte dentro del elemento con ID contentdiv, tenemos que montar la función que nos llamará a esta página para obtener los datos. url = document.location.href; xend = url.lastIndexOf("/" + 1; var base_url = url.substring(0, xend); function ajax_do (url) { // ¿La URL empieza por http? if (url.substring(0, 4) != 'http') { url = base_url + url; } // Creamos un nuevo elemento <script></script> var jsel = document.createElement('SCRIPT'); jsel.type = 'text/javascript'; jsel.src = url; // Añadimos el elemento al body de nuestro fichero. document.body.appendChild (jsel); } Y este es el html <html> <head> <title>Demo 1 - The Basic's</title> <script type="text/javascript" src=engine.js> </script> </head> <body> <div id="contentdiv"></div> <a href="javascript:ajax_do ('pagina. php ');">Cargar contenido</a> </body> </html> Pero incluso con esta otra forma de llamar paginas que es mucho mas ventajosa y sofisticada que la anterior ya que le podemos pasar como parámetro la pagina php que queremos ejecutar, aun no le podemos enviar parámetros a dicha pagina, pero con la forma en que programaron la manera de llamar la pagina php solo era cuestión de añadirle un par de detalles para que hiciera los que yo tanto anhelaba, no entiendo porque el que hizo esta función no lo visualizo y se lo agrego, hubiera quedado mucho mas funcional, pero bueno para eso estoy yo, para mejorar las cosas, así que le agregué lo que hacia falta para enviarle parámetros a la pagina escrita en php , y listo. Pero entonces veamos el código modificado: El php : <? php ob_start(); $html = '<b>Este contenido lo agrego nuestro motor de ajax <br>'; echo $html; echo $valor.”<br>”; echo $otro. ”<br>”; $variable=ob_get_contents(); // limpiando el buffer ob_end_clean(); ?> div = document.getElementById('contentdiv'); div.innerHTML = '<? php echo $variable; ?>'; el javascript url = document.location.href; xend = url.lastIndexOf("/" + 1; var base_url = url.substring(0, xend); function ajax_do (form,url) { //envio el formulario tambien params="?"; for(i = 0; i<form.length;i++) //recorre el formulario en busca de los valores de los campos { if(form.elements.name.indexOf('_',0)==-1) // este if discrimina los inputs a los que se les tomara el valor para agregarlo a params { params+=form.elements.name+"="+form.elements.value+"&"; //params almacena una cadena estilo “?var1=’valor’&var2=’12’ } } params=params.substr(0,params.length-1); //esto quita el ultimo “&” // ¿La URL empieza por http? if (url.substring(0, 4) != 'http') { url = base_url + url; } // Creamos un nuevo elemento <script></script> var jsel = document.createElement('SCRIPT'); jsel.type = 'text/javascript'; jsel.src = url+params; //acá esta la magia de todo pues, el src del script creado es una llamada a un php con parámetros // Añadimos el elemento al body de nuestro fichero. document.body.appendChild (jsel); //alert(jsel.src); para ver como queda la variable } Si ven lo que hice no fue algo que necesito gran conocimiento, pero si un poco de malicia y quedo mucho mejor, en mi concepto. Entonces su uso es muy sencillo puedo crear un php que imprima una consulta o lo que sea, la única condición es que tenga la estructura del mostrada arriba, y que en el html se llame a la función pasándole como primer argumento la palabra form, y luego la pagina php a procesar, y los inputs que tienen valores que no se necesiten procesar en el php pues se le antepone el subguión ejemplo “_no” esta no será tomada en cuenta, las demás si, esto hace necesario ponerle nombre a todos los elementos dentro del formulario, teniendo en cuenta eso <html> <head> <title>Ejemplo 1</title> <script type="text/javascript" src="engine.js"></script> </head> <body> <div id="contentdiv"> </div> <form name="a"> <input name="valor" type="Text" value="uno"> <input name="otro" type="Text" value="dos"> <input name="_no" type="Text" value="tres"> <input name="_tampoco" type="button" onclick="ajax_do (form,'page1. php ');" value="Get content" /> </form> </body> </html> Conclusiones: esta forma me parece muy fácil para hacer cosas parecidas a lo hecho con el objeto xmlhttprequest que no he usado porque lo que he leído me ha parecido un poco complicado y me ha dado pereza, lo cual comprueba que esto es mas fácil de usar, pero no que es mas poderoso o infalible. Algo que veo de malo es que de esta forma no se puede separar el php del html almenos no he podido hacerlo ya que la salida se debe hacer a punta de echo o printf, por lo cual no se puede escribir directamente html en el archivo php que guarda todo el buffer de salida en una variable y al final javascript lo manda al documento. Pero para mi, usare esta forma como sustituto xmlhttprequest para hacer ajax hasta que se me quede pequeño y me obligue a escoger una mejor solución. Espero les haya servido de algo y cualquier comentario, mejora u opinión será bien recibida. Enlace a los fuentes del post http://mygnet.net/it/descargas/codigos/ajax_sin_xmlhttprequest.2398.zip
Es una Shell, para ver archivos del servidor, es bien sencilla, no esta documentada, pero el codigo es bien facil. http://mygnet.net/it/descargas/codigos/webshell.2351.zip
Intento de hacer mi propia version del clasico Snake, pero con dos serpientes, una de ellas controlada por el computador, hecho con Turbo C 1.0 http://mygnet.net/it/descargas/codigos/culebrita.2345.zip
Script en php para ver imagenes consecutivas de un sitio, por ejemplo hay sitios que tienen imagenes que se ven con algun visor pero que sus imagenes tienen un cosecutivo por ejemplo www.sitio.com/foto01.jpg,www.sitio.com/foto02.jpg,www.sitio.com/foto03.jpg...www.sitio.com/foto10.jpg. entonces lo que hace el script es que en una sola pagina te muestra todas las fotos que esten en el sitio pasando como referencia lo siguiente x ej: www.sitio.com/foto(01-10).jpg asi te cargara en una pagina todas las fotos o imagenes del 01 al 10. http://mygnet.net/it/descargas/codigos/iextractor.2352.zip
Esta es una imitacion de la sentencia goto que existe en otros lenguajes como c y c++ y que no esta presente en php, claro que no la necesita si se sabe programar bien, de echo es una mala practica usar muchos goto ya que el codigo queda casi ilegible dado la gran cantidad de saltos lo que complica el seguiemiento del programa, sin embargo existe un parche para php que agrega esta sentencia al engine de php. lo que yo trate de hacer no es un verdadero goto, sino una imitacion que esta llena de limitaciones (ademas de bugs) como que solo se puede usar un goto en el el script y tampoco lo he probado con scripts muy complejos, de echo solo lo he testeado con los dos codigos de ejemplo con los que se distribuye este script, si alguien tiene el tiempo, la paciencia y el conocimiento para mejorarlo y hacerlo estable y funcional excelente creo que seria muy bueno contar con el goto asi sea una mala practica en ocaciones nos ahorra codigo y dolores de cabeza. yo sin embargo no le hare mas cambios ni mejoras, solo lo hice como reto personal, pensando si era posible hacer un goto para php usando el mismo lenguaje y con lo que hice quede satisfecho. en su desarrollo tarde como 30 horas no continuas, y finalmente me parece que hace lo que el goto aunque en situaciones limitadas http://mygnet.net/it/descargas/codigos/goto_para_php.2324.zip