+1 muy buen paper!
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
#202
Off Topic / Re:Porque todas las películas de hackers que hay la mayoría son antiguas?
Octubre 06, 2014, 11:58:37 AM #203
Dudas y pedidos generales / Re:¿Qué Sistema operativo me recomiendan para aprender a programar?
Octubre 04, 2014, 11:52:18 AMYou are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or LoginEstoy deacuerdo con Doddy
Podes programar en el SO que quieras, y para las exepciones, podes dividir el disco en dos para tener por un lado windows y por otro cualquier distribucion de linux.
#204
Bugs y Exploits / Re:SQLi Site Scanner (SQPY)
Octubre 01, 2014, 12:14:18 PM
Cuanto tiempo sin verte por el foro bro, muy buen escaner el que construistes +1, saludos
#205
Presentaciones y cumpleaños / Re:Soy Senege
Octubre 01, 2014, 12:11:55 PM
hola Senege jejeje que bueno que vuelves a los foros bro :3
#206
Hardware y Reparaciones / Re:[Procesos] PC/Laptop - Lista de procesos para reparación/mantenimiento
Septiembre 30, 2014, 11:30:51 PM
Cuando se inicia el equipo, la pantalla tal vez esté en blanco. Si las utilidades de diagnóstico detectan un problema específico de los componentes de hardware, el ventilador se enciende, pero la pantalla permanece en blanco. Para ayudar a identificar la causa del problema, varias luces LED del teclado parpadean según un código.Las utilidades de diagnóstico usan los LED que corresponden a las teclas Bloq Num o Bloq Mayús para indicar el error mediante un código de parpadeo. Al final de la serie del código, el parpadeo se detiene. La secuencia de parpadeo ocurrirá cada vez que intente iniciar el equipo, hasta que se corrija el error.El LED de energía de la batería parpadeaEl LED de energía de la batería indica el estado de la alimentación de energía. Al iniciar el equipo o mientras este está funcionando, use la tabla para identificar el estado de alimentación.
Los LED de Bloq mayús y Bloq num parpadean mientras la notebook se iniciaLos LED de Bloq mayús y Bloq num parpadearán si se detecta un error durante el proceso de inicio. Los LED parpadearán algunas veces, formando una secuencia, y luego dejarán de hacerlo. El número de parpadeos de la secuencia indica qué componente ocasionó un error mientras se estaba probando durante el inicio. Si los LED dejan de parpadear y el equipo no se inicia, puede presionar el botón de encendido una vez más para repetir las pruebas. Cuente el número de parpadeos y use la tabla para identificar la condición de error. Saber el número de parpadeos le será útil cuando se ponga en contacto con el agente de soporte de HP para obtener asistencia técnica.
Explicación de los códigos de errorLas siguientes secciones proporcionan algunas explicaciones comunes para cada código de error enumerado en la tabla que antecede.
Fuente: You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
| LED de energía de la batería | Componente probado | Condición de error |
LED de energía de la batería y Bloq mayús/Bloq num apagados | Batería o adaptador de CA | El adaptador de CA no está conectado o hay una falla La carga de la batería está baja o hay una falla |
El LED de energía de la batería parpadea | Batería | La carga de la batería es insuficiente |
![]() | Al usar por primera vez el equipo nuevo, la luz LED blanca del conector de alimentación CA parpadea. | La batería aún está en "Modo de envío" y la luz sigue parpadeando aunque esté conectada la alimentación CA. Para resolver esto, apague la notebook, conecte la alimentación CA, deje cargar la batería al menos 30 minutos y luego encienda el equipo. |
| LED de Bloq mayús/Bloq num | Componente probado | Condición de error |
Los LED parpadean 1 vez | CPU | La CPU no está funcionando |
Los LED parpadean 2 veces | BIOS | Error por daños en el BIOS |
Los LED parpadean 3 veces | Memoria | El módulo no está funcionando |
Los LED parpadean 4 veces | Gráficos | El controlador de gráficos no está funcionando |
Los LED parpadean 5 veces | Placa del sistema | Error general de la placa del sistema |
Los LED parpadean 6 veces | BIOS | Error de autenticación del BIOS |
Fuente: You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
#207
Hardware y Reparaciones / Re:[Procesos] PC/Laptop - Lista de procesos para reparación/mantenimiento
Septiembre 30, 2014, 09:46:07 PM
##########################################
# la pc/laptop se traba o se reinicia #
##########################################
Cuando la pc o laptop se traba o reinicia podemos realizar una serie de testeos para saber si alguna de esas cosas estan causando el problema...
1.- checar las memorias ram (algunas memorias ram causan a tener errores, podemos hacer testeo de las memorias ram con un programa llamado memtest el cual no pesa casi nada y te dira si tus memorias se encuentran en buen estado, de esta manera asi podriamos descatar un problema)
2.- Checar el disco duro (muchas veces el disco duro tiene errores, podemos hacer un chkdsk o pasarle un programa llamado hdd regenerator para reparar sectores dañados, si el disco esta demasiado dañado no hay nada mas que hacer que reemplazarlo)
3.- Pasta termica y mantenimiento (muchas veces pasa que con un buen mantenimiento quedaria lista, la mayoria de las veces suele ser esto, que los abanicos se tapan, el procesador casi no tiene pasta termica.)
4.- Desconectar componente por componente (este problema no es muy comun pero suele suceder que algun componente este causando el problema, me ha tocado ya varias veces con el teclado y wifi de una laptop que este problema pasa, al igual que una tarjeta de video en un pc)
5.- Cambiar el procesador (pasa muchas veces que se reinicia de una, puede ser el procesador que este en mal estado, pines doblados (con un solo pin puede fallar), o el socket en mal estado)
6.- Jack o fuente de poder (muchas veces la computadora se reinicia por que la fuente o jack es tan en mal estado con un multimetro podemos testear que el voltaje y continuidad esten correctos, en caso que sea verdad reemplazarlos seria lo mejor)
7.- tarjeta madre (verificar tarjeta madre que no tenga ningun daño fisico)
este es lo basico para checar si se reinicia o se traba el pc, escribi rapido ando desde un ciber, espero que les sirva, saludos :3
# la pc/laptop se traba o se reinicia #
##########################################
Cuando la pc o laptop se traba o reinicia podemos realizar una serie de testeos para saber si alguna de esas cosas estan causando el problema...
1.- checar las memorias ram (algunas memorias ram causan a tener errores, podemos hacer testeo de las memorias ram con un programa llamado memtest el cual no pesa casi nada y te dira si tus memorias se encuentran en buen estado, de esta manera asi podriamos descatar un problema)
2.- Checar el disco duro (muchas veces el disco duro tiene errores, podemos hacer un chkdsk o pasarle un programa llamado hdd regenerator para reparar sectores dañados, si el disco esta demasiado dañado no hay nada mas que hacer que reemplazarlo)
3.- Pasta termica y mantenimiento (muchas veces pasa que con un buen mantenimiento quedaria lista, la mayoria de las veces suele ser esto, que los abanicos se tapan, el procesador casi no tiene pasta termica.)
4.- Desconectar componente por componente (este problema no es muy comun pero suele suceder que algun componente este causando el problema, me ha tocado ya varias veces con el teclado y wifi de una laptop que este problema pasa, al igual que una tarjeta de video en un pc)
5.- Cambiar el procesador (pasa muchas veces que se reinicia de una, puede ser el procesador que este en mal estado, pines doblados (con un solo pin puede fallar), o el socket en mal estado)
6.- Jack o fuente de poder (muchas veces la computadora se reinicia por que la fuente o jack es tan en mal estado con un multimetro podemos testear que el voltaje y continuidad esten correctos, en caso que sea verdad reemplazarlos seria lo mejor)
7.- tarjeta madre (verificar tarjeta madre que no tenga ningun daño fisico)
este es lo basico para checar si se reinicia o se traba el pc, escribi rapido ando desde un ciber, espero que les sirva, saludos :3
#208
Debates, Reviews y Opiniones / Re:¿Sirven en verdad los Antivirus?
Septiembre 29, 2014, 02:14:01 PM
Los antivirus sirven, pero eso no evita que te puedan infectar como todos ya sabemos le pueden hacer modding el cual hace indetectable a tal antivirus o simplemente fud, el mejor antivirus es la persona en si, si sospecha del archivo que baja... simplemente existen muchas formas de analizar manualmente es lo que hacen las compañias para deshacerse de esos virus, lo que dice fermino puede ser cierto pero cualquiera que tenga conocimientos para crear un virus es un atacante... de todas maneras es bueno tener antivirus pero lo mejor es saber que no debes confia en nada y si puedes analizarlo tu mismo, saludos
#209
Back-end / PHP PDF Parte de 1-10
Septiembre 29, 2014, 12:42:22 PM
Hola Underc0de he escrito un par de partes de PHP en mi blog mayormente es programacion estructurada, ya que casi no se ve mas que solo el concepto de POO espero mas adelante hacer la de POO ya que es un tema bastante extenso que llevaria varias partes, en este caso les traigo 10 partes que converti en un PDF desde mi blog cuenta con 114 paginas
Lo pueden descargar o ver desde aqui: You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
#210
Zona Webmaster / Resumen reCaptcha
Septiembre 29, 2014, 12:11:27 PM
¿Que es reCaptcha?
reCaptcha te ayuda a prevenir a que abusen de tu sitio (que metan spam o que registren cuentas falsas) el captcha asegura que un humano esta realizando la accion.
API Keys

Para obtener una clave es necesario registrar nuestro dominio:
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
Puedes poner 1 o mas dominios separarlos por comas, ejemplo:
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login,You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login,You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login,You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
Por defecto todas las claves funcionan en "localhost" con la ip 127.0.0.1 para que puedas hacer pruebas en tu servidor local.
Integrarlo
Para poder integrar reCaptcha a tu sitio solo es necesario realizar los tres pasos siendo el tercero opcional:
1.- Del lado del cliente: mostrar el widget recaptcha (Requerido)
2.- Del lado del servidor: verificar la solucion (Requerido)
3.- Personalizar (Opcional)
En la mayoria de los formularios webs tu usualmente tienes dos archivos: el formulario con los campos y el script que procesa los campos del formulario. Estos dos archivos corresponden al paso 1 y 2. Por lo tanto se tendran que modificar 2 archivos diferentes en la mayoria de los casos.
Hay dos maneras de agregar reCaptcha (a) con plugins o (b) sin plugins. Nosotros veremos la primera forma, que es con plugins utilizando PHP.
Usando reCaptcha en PHP
Para utilizar reCaptcha con PHP necesitas descargar la libreria:
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
De los archivos que vienen en el zip comprimido solo necesitas 1 archivo el que se llama recaptchalib.php los demas son ejemplos y cuestiones legales.
Despues de haberte registrado para poder usar la clave del API podemos proceder.
Del lado del cliente: como crear el captcha la imagen aparece
Si quieres utilizar la libreria reCaptcha de PHP para mostrar el widget, solo necesitas insertar la siguiente parte de codigo dentro de un elemento <form> donde el widget CAPTCHA sera colocado:
Código: php
Con el codigo anterior tu formulario luciria como el siguiente:
Código: php

No olvides reemplazar en la variable $clavepublica donde dice Aquivatuclavepublica por tu clave publica.
Si miras en el formulario se encuentra en el atributo action verificar.php este archivo es importante ya que aqui sera procesado el formulario, este archivo deberia de encontrarse en la misma localizacion que el archivo del formulario html.
Con la funcion require_once() llamamos al archivo requerido que es la libreria para el captcha, si este no se encuentra el script no puede continuar, recuerda colocar la ruta correctamente require_once(turuta/dondeseencuentra/recaptchalib.php)
Del lado del cliente: como probar que lo introducido por el usuario es lo correcto
El siguiente codigo deberia ser puesto al incio del archivo verificar.php:
Código: php
En el codigo de arriba:
* recaptcha_check_answer - retorna un objeto representando cuando el reto se completo correctamente
* Si $respuesta->is_valid si es true entonces puede continuar con el procesamiento del formulario
* Si $respuesta->is_valid si es false entonces muestra de nuevo otra imagen en el captcha. En caso de que $respuesta->error ocurra un error el captcha mostrara el codigo de error.
Nota importante: No confundas la clave publica con la clave privada.
Estaté seguro de que hayas colocado el array superglobal $_POST para usar el captcha.
Hasta aqui llega nuestro pequeño resumen de reCaptcha si quieres obtener mas informacion puedes consultar: You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
reCaptcha te ayuda a prevenir a que abusen de tu sitio (que metan spam o que registren cuentas falsas) el captcha asegura que un humano esta realizando la accion.
API Keys

Para obtener una clave es necesario registrar nuestro dominio:
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
Puedes poner 1 o mas dominios separarlos por comas, ejemplo:
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login,You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login,You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login,You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
Por defecto todas las claves funcionan en "localhost" con la ip 127.0.0.1 para que puedas hacer pruebas en tu servidor local.
Integrarlo
Para poder integrar reCaptcha a tu sitio solo es necesario realizar los tres pasos siendo el tercero opcional:
1.- Del lado del cliente: mostrar el widget recaptcha (Requerido)
2.- Del lado del servidor: verificar la solucion (Requerido)
3.- Personalizar (Opcional)
En la mayoria de los formularios webs tu usualmente tienes dos archivos: el formulario con los campos y el script que procesa los campos del formulario. Estos dos archivos corresponden al paso 1 y 2. Por lo tanto se tendran que modificar 2 archivos diferentes en la mayoria de los casos.
Hay dos maneras de agregar reCaptcha (a) con plugins o (b) sin plugins. Nosotros veremos la primera forma, que es con plugins utilizando PHP.
Usando reCaptcha en PHP
Para utilizar reCaptcha con PHP necesitas descargar la libreria:
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
De los archivos que vienen en el zip comprimido solo necesitas 1 archivo el que se llama recaptchalib.php los demas son ejemplos y cuestiones legales.
Despues de haberte registrado para poder usar la clave del API podemos proceder.
Del lado del cliente: como crear el captcha la imagen aparece
Si quieres utilizar la libreria reCaptcha de PHP para mostrar el widget, solo necesitas insertar la siguiente parte de codigo dentro de un elemento <form> donde el widget CAPTCHA sera colocado:
<?php
require_once('recaptchalib.php');
$clavepublica = "Aquivatuclavepublica"; // esta la obtienes cuando te registras
echo recaptcha_get_html($clav5epublica);
?>Con el codigo anterior tu formulario luciria como el siguiente:
<!DOCTYPE html>
<html>
<head>
<title>reCaptcha</title>
</head>
<body>
<!-- El body es requerido ya que sino el captcha no se mostrara en algunos navegadores -->
<form method="post" action="verificar.php">
<?php
require_once('recaptchalib.php');
$clavepublica = "Aquivatuclavepublica"; // esta la obtienes cuando te registras
echo recaptcha_get_html($clavepublica);
?>
<input type="submit" />
</form>
</body>
</html>

No olvides reemplazar en la variable $clavepublica donde dice Aquivatuclavepublica por tu clave publica.
Si miras en el formulario se encuentra en el atributo action verificar.php este archivo es importante ya que aqui sera procesado el formulario, este archivo deberia de encontrarse en la misma localizacion que el archivo del formulario html.
Con la funcion require_once() llamamos al archivo requerido que es la libreria para el captcha, si este no se encuentra el script no puede continuar, recuerda colocar la ruta correctamente require_once(turuta/dondeseencuentra/recaptchalib.php)
Del lado del cliente: como probar que lo introducido por el usuario es lo correcto
El siguiente codigo deberia ser puesto al incio del archivo verificar.php:
<?php
require_once('recaptchalib.php');
$claveprivada = "Tuclaveprivada";
$respuesta = recaptcha_check_answer($claveprivada,
$_SERVER["REMOTE_ADDR"],
$_POST["recaptcha_challenge_field"],
$_POST["recaptcha_response_field"]);
if (!$respuesta->is_valid) {
// El captcha se metio incorrectamernte
die("El captcha no se ingreso correctamente. Ve atras y vuelve a intentarlo". $respuesta->error);
}else{
// Tu codigo para manejar una verificacion correcta
echo "Bien hecho";
}
?>En el codigo de arriba:
* recaptcha_check_answer - retorna un objeto representando cuando el reto se completo correctamente
* Si $respuesta->is_valid si es true entonces puede continuar con el procesamiento del formulario
* Si $respuesta->is_valid si es false entonces muestra de nuevo otra imagen en el captcha. En caso de que $respuesta->error ocurra un error el captcha mostrara el codigo de error.
Nota importante: No confundas la clave publica con la clave privada.
Estaté seguro de que hayas colocado el array superglobal $_POST para usar el captcha.
Hasta aqui llega nuestro pequeño resumen de reCaptcha si quieres obtener mas informacion puedes consultar: You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
#211
Presentaciones y cumpleaños / Re:Soy Gabriela.
Septiembre 23, 2014, 10:18:47 PM
Bienvenida Gabriela!
#212
Wargames y retos / Re:Reto XSS [dificultad: el contexto]
Septiembre 19, 2014, 03:53:01 PMYou are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or LoginPero encodeandolos el javascript no lo interpretaria ya que esta solamente para el son "(" ---> "%28" y ")" ---> "%29" %28 y %29 pero si lo pasas por la url si se interpretaYou are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or LoginClaro; obviamente encodeando esos caracteres...You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Loginno por que el setTimeOut comienza con " entonces para cerrarlo seria en realidad ") asi pero no se puede por los parentesis, saludos
Eso?? Tan sólo eso? Y uno intentando anular la redireccion, etc...
Pero; no había que salir del code del redirect? Digo; con un ');
#213
Wargames y retos / Re:Reto XSS [dificultad: el contexto]
Septiembre 19, 2014, 02:39:06 AMYou are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Loginno por que el setTimeOut comienza con " entonces para cerrarlo seria en realidad ") asi pero no se puede por los parentesis, saludos
Eso?? Tan sólo eso? Y uno intentando anular la redireccion, etc...
Pero; no había que salir del code del redirect? Digo; con un ');
#216
Dudas y pedidos generales / Re:[AYUDA] Enviar captura de google maps por email desde PHP
Septiembre 06, 2014, 09:33:39 PM #217
Dudas y pedidos generales / Re:Duda con carga de mi lap
Septiembre 02, 2014, 01:25:48 PM
Puedes checar estas cosas, quitale la bateria :
1.- si el cargador da voltaje (multimetro o voltimetro)
2.- si el jack esta funcionando correctamente (multimeto checar continuidad)
3.- si el boton de encendido no esta desconectado (desarmado depende de la laptop XD)
1.- si el cargador da voltaje (multimetro o voltimetro)
2.- si el jack esta funcionando correctamente (multimeto checar continuidad)
3.- si el boton de encendido no esta desconectado (desarmado depende de la laptop XD)
#218
Dudas y pedidos generales / [SOLUCIONADO] Saben de algún programa para crear audio
Julio 29, 2014, 07:30:08 PM
Saben de algún pograma para crer audio me refiero a sonidos, por ejemplo:
badadatumsss
pummm
tapassss
repeenrepeen
tararara
osea que ya tenga esos sonidos por ejemplo y yo los pueda ir agregando y al final dale producir al sonido y tenga todos esos sonidos en un solo audio pero los sonidos que ya vengan en el programa
espero que me puedan ayudar saludos
pd: escribí rápido ando desde un ciber, saludos Xd
badadatumsss
pummm
tapassss
repeenrepeen
tararara
osea que ya tenga esos sonidos por ejemplo y yo los pueda ir agregando y al final dale producir al sonido y tenga todos esos sonidos en un solo audio pero los sonidos que ya vengan en el programa
espero que me puedan ayudar saludos
pd: escribí rápido ando desde un ciber, saludos Xd
#219
Back-end / Re:[PHP]Libreria cURL MiniTutoriales
Julio 10, 2014, 03:35:26 AM
[Parte 5] CURL en PHP
Funciones interesantes curl_multi_init Una de las extensiones mas usadas en PHP es cURL, y es genial para devolver documentos remotos. Para situaciones donde necesitas devolver multiples documentos se usa curl_multi_init y curl_multi_exec trabajan mejor con multiples documentos. La funcion curl_multi_exec es muy poderosa, pero en la documentacion de PHP la hacen ver mas dificil de lo que realmente es. Aqui una demostracion usando Google, Bing y Facebook todos devueltos:
En este ejemplo hay 3 urls establecidas para devolverse al mismo tiempo.
curl_multi_getcontent Para leer el contenido de las peticiones que hicimos anteriormente podriamos usar la funcion curl_multi_getcontent. Vamos a ver como podemos hacerlo... (el codigo siguiente se puede añadir al anterior):
Cerrar el manejador de cURL
Algunos programadores prefieren usar curl_close() despues de haberlo usado. Usted en lugar de utilizar curl_close() deberia utilizar curl_multi_close(), y curl_multi_remove_handle() despues de que el contenido se haya devuelto. Veamos un ejemplo:
Como anteriormente dijimos el codigo anterior puede añadirse a lo que habiamos puesto antes... de esta manera todo el codigo quedaria asi:
Fuente: You are not allowed to view links.
You are not allowed to view links.
Register or Login or You are not allowed to view links.
Register or Login
curl_setopt_array() Con esta funcion podemos configurar multiples opciones para una transferencia cURL. Veamos un ejemplo:
curl_getinfo()
Esta funcion obtiene informacion relativa a una transferencia especifica. Los valores que devuelve son los siguientes:
<blockquote>
Funciones interesantes curl_multi_init Una de las extensiones mas usadas en PHP es cURL, y es genial para devolver documentos remotos. Para situaciones donde necesitas devolver multiples documentos se usa curl_multi_init y curl_multi_exec trabajan mejor con multiples documentos. La funcion curl_multi_exec es muy poderosa, pero en la documentacion de PHP la hacen ver mas dificil de lo que realmente es. Aqui una demostracion usando Google, Bing y Facebook todos devueltos:
| 1 | $urls = array('You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login', 'You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login', 'You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login'); |
| 2 | $url_count = count($urls); // cuenta el numero de urls |
| 3 |
| 4 | $curl_array = array(); // creamos un array llamado curl_array |
| 5 | $ch = curl_multi_init(); // iniciamos un multirecurso curl |
| 6 | // para las urls hay una clave que contiene su url |
| 7 | foreach($urls as $count => $url) { |
| 1 | $curl_array[$count] = curl_init($url); // establecemos la url en una sesion curl refiriendonos a cada 1 con su clave |
| 2 | curl_setopt($curl_array[$count], CURLOPT_FOLLOWLOCATION, 1); // le damos una opcion de seguir el header location |
| 3 | curl_setopt($curl_array[$count], CURLOPT_RETURNTRANSFER, 1); // devolvemos el contenido |
| 4 | curl_multi_add_handle($ch, $curl_array[$count]); // añadimos a cada url con sus opciones en el multirecurso |
| 5 | } |
| 6 | // mientras se esten ejecutando las urls realiza lo siguiente |
| 7 | do { |
| 8 | curl_multi_exec($ch, $exec); |
| 9 | } while($exec > 0); |
curl_multi_getcontent Para leer el contenido de las peticiones que hicimos anteriormente podriamos usar la funcion curl_multi_getcontent. Vamos a ver como podemos hacerlo... (el codigo siguiente se puede añadir al anterior):
| 1 | //para cada url devolvemos el contenido junto con la url |
| 1 | foreach($urls as $count => $url) { |
| 2 | $returned = curl_multi_getcontent($curl_array[$count]); |
| 3 | echo "$url - $returned"; |
| 4 | } |
Algunos programadores prefieren usar curl_close() despues de haberlo usado. Usted en lugar de utilizar curl_close() deberia utilizar curl_multi_close(), y curl_multi_remove_handle() despues de que el contenido se haya devuelto. Veamos un ejemplo:
| 1 | //para cada url eliminamos el manejador, cerramos la peticion multi recurso y cada peticion de una sesion curl la cerramos |
| 1 | foreach($urls as $count => $url) { |
| 2 | curl_multi_remove_handle($ch, $curl_array[$count]); |
| 3 | } |
| 4 |
| 5 | curl_multi_close($ch); |
| 6 |
| 7 | foreach($urls as $count => $url) { |
| 8 | curl_close($curl_array[$count]); |
| 9 | } |
| 01 | <?php |
| 02 | $urls = array('You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login', 'You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login', 'You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login'); |
| 03 | $url_count = count($urls); |
| 04 |
| 05 | $curl_array = array(); |
| 06 | $ch = curl_multi_init(); |
| 07 |
| 08 | foreach($urls as $count => $url) { |
| 09 | $curl_array[$count] = curl_init($url); |
| 10 | curl_setopt($curl_array[$count], CURLOPT_FOLLOWLOCATION, 1); |
| 11 | curl_setopt($curl_array[$count], CURLOPT_RETURNTRANSFER, 1); |
| 12 | curl_multi_add_handle($ch, $curl_array[$count]); |
| 13 | } |
| 14 |
| 15 | do { |
| 16 | curl_multi_exec($ch, $exec); |
| 17 | } while($exec > 0); |
| 18 | foreach($urls as $count => $url) { |
| 19 | $returned = curl_multi_getcontent($curl_array[$count]); |
| 20 | echo "$url - $returned"; |
| 21 | } |
| 22 | foreach($urls as $count => $url) { |
| 23 | curl_multi_remove_handle($ch, $curl_array[$count]); |
| 24 | } |
| 25 |
| 26 | curl_multi_close($ch); |
| 27 |
| 28 | foreach($urls as $count => $url) { |
| 29 | curl_close($curl_array[$count]); |
| 30 | } |
| 31 | ?> |
curl_setopt_array() Con esta funcion podemos configurar multiples opciones para una transferencia cURL. Veamos un ejemplo:
| 01 | <?php |
| 02 | // creamos un nuevo recurso curl |
| 03 | $ch = curl_init(); |
| 04 | // establecemos las opciones apropiadas para la url |
| 05 | $options = array( |
| 06 | CURLOPT_URL => 'You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login', |
| 07 | CURLOPT_FOLLOWLOCATION => true, |
| 08 | CURLOPT_USERAGENT => 'Googlebot/2.1 (+You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login)', |
| 09 | CURLOPT_RETURNTRANSFER => true |
| 10 | ); |
| 11 | curl_setopt_array($ch, $options); |
| 12 | $output = curl_exec($ch); |
| 13 | curl_close($ch); |
| 14 | echo $output; |
| 15 | ?> |
Esta funcion obtiene informacion relativa a una transferencia especifica. Los valores que devuelve son los siguientes:
<blockquote>
- "url"
- [/size]
- "content_type"
- [/size]
- "http_code"
- [/size]
- "header_size"
- [/size]
- "request_size"
- [/size]
- "filetime"
- [/size]
- "ssl_verify_result"
- [/size]
- "redirect_count"
- [/size]
- "total_time"
- [/size]
- "namelookup_time"
- [/size]
- "connect_time"
- [/size]
- "pretransfer_time"
- [/size]
- "size_upload"
- [/size]
- "size_download"
- [/size]
- "speed_download"
- [/size]
- "speed_upload"
- [/size]
- "download_content_length"
- [/size]
- "upload_content_length"
- [/size]
- "starttransfer_time"
- [/size]
- "redirect_time"
- [/size]
- "certinfo"
- [/size]
- "request_header"
- </blockquote>
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Logincurl_version() Obtiene la informacion de la version de cURL
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or LogincURL File Como veíamos en la You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login, subiamos un archivo con el uso de @, pero apartir de PHP 5.5.0 ese prefijo esta obsoleto, por lo que se recomienda utilizar esta funcion.
CURLFile::__Construct--curl_file_create - Crea un objeto CURLFile
Estilo orientado a objetos:
<blockquote> [/size]public[/size] [/size]CURLFile::__construct[/size][/font][/size] ( [/size]string [/size][size=1rem]$filename[/size][/size][/font][/size] [, [/size]string [/size][size=1rem]$mimetype[/size][/size][/font][/size] [, [/size]string [/size][size=1rem]$postname[/size][/size][/font][/size] ]] )</blockquote> Estilo orientado a procedimientos:
<blockquote> [/size]You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login[/size] [/size]curl_file_create[/size][/font][/size] ( [/size]string [/size][size=1rem]$filename[/size][/size][/font][/size] [, [/size]string [/size][size=1rem]$mimetype[/size][/size][/font][/size] [, [/size]string [/size][size=1rem]$postname[/size][/size][/font][/size] ]] )</blockquote>
Crea un objeto CurlFile, utilizado para transferir (upload) un fichero con CURLOPT_POSTFIELDS.
filename - indica la ruta de acceso al fichero a ser transferido
mimetype - Tipo mime del fichero
postname - nombre del fichero
Ejemplo, estilo orientado a objetos:
01 <?php 02 /* You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login 03 <?php var_dump($_FILES); ?> 04 */ 05 06 // Crea un gestor cURL 07 $ch = curl_init('You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login'); 08 09 // Crea un objeto CURLFile 10 $cfile = new CURLFile('cats.jpg','image/jpeg','test_name'); 11 12 // Asigna los datos POST 13 $data = array('test_file' => $cfile); 14 curl_setopt($ch, CURLOPT_POST,1); 15 curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 16 17 // Ejecuta el gestor 18 curl_exec($ch);
Estilo por procedimientos:19 ?>
01 <?php 02 /* You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login 03 <?php var_dump($_FILES); ?> 04 */ 05 06 // Crea un gestor cURL 07 $ch = curl_init('You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login'); 08 09 // Crea un objeto CURLFile 10 $cfile = curl_file_create('cats.jpg','image/jpeg','test_name'); 11 12 // Asigna los datos POST 13 $data = array('test_file' => $cfile); 14 curl_setopt($ch, CURLOPT_POST,1); 15 curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 16 17 // Ejecuta el gestor 18 curl_exec($ch);
Usar cURL con Expresiones regulares Como en ejemplos anteriores usabamos la funcion preg_match y preg_match_all para ver si se encontraba determinado texto o link para poder mostrar el resultado que necesitabamos, para mas informacion sobre expresiones regulares por favor consulte:19 ?>
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
Como en el ejemplo de subidas de archivos en la You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login, veíamos un upload con el cual sacábamos los links usando expresiones regulares:
01 <?php 02 set_time_limit(0); 03 $url = "You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login"; 04 $user_agent = "Mozilla/5.0 (Windows NT 6.1; rv:28.0) Gecko/20100101 Firefox/28.0"; 05 $referer = "You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login"; 06 $directory=dirname(__FILE__).'\files/'; 07 if(isset($_FILES['f1'])){ 08 move_uploaded_file($_FILES['f1']['tmp_name'],"files/".$_FILES['f1']['name']); 09 $ch = curl_init(); 10 curl_setopt($ch, CURLOPT_USERAGENT, $user_agent); 11 curl_setopt($ch, CURLOPT_REFERER, $referer); 12 curl_setopt($ch, CURLOPT_URL, $url); 13 curl_setopt($ch, CURLOPT_POSTFIELDS, array("F1"=>"@".$directory.$_FILES['f1']['name'])); 14 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 15 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 16 $result = curl_exec($ch); 17 if(curl_errno($ch)) 18 { 19 echo 'Curl error: ' . curl_error($ch); 20 } 21 curl_close($ch); 22 unlink($directory.$_FILES['f1']['name']); 23 //echo $result; 24 preg_match_all('/<input type="text" name="t1" size="90" class="inp" value="(.*?)" onclick="highlight\(this\);" \/>/', $result, $matches); 25 //echo '<p><img src="'.$matches[1][0].'" alt="img" /></p>'; 26 echo '<p><b>Link: <a href="'.$matches[1][0].'" target="_blank">Archive Link</a></p>'; 27 //print_r($matches); 28 }else{ 29 echo ' 30 <form action="upload_curl.php" method="post" enctype="multipart/form-data"> 31 <label for="f1">Filename:</label> 32 <input type="file" name="f1" id="f1"> 33 34 <input type="submit" name="submit" value="Submit"> 35 </form> 36 37 '; 38 } 39 ?>
#220
Back-end / Re:[PHP]Libreria cURL MiniTutoriales
Julio 10, 2014, 03:34:23 AM
[Parte 4] CURL en PHP
Cabecera post personalizada a un host remoto Esto sucede cuando solo podemos ver ciertas partes de un sitio web, el sitio necesita unas cabeceras especiales, que tendriamos que olfatear con algun intermediario tal como puede ser: Live HTTP HEADERS, HTTPFox, Burp Suite, Tamper Data...
En este caso nosotros usaremos la opcion CURLOPT_HTTPHEADER.
CURLOPT_HTTPHEADER - Un array de campos a configurar para el Header HTTP, en el formato: array('Content-Type: text/plain','Content-length: 100');
CURLOPT_HEADER - TRUE para incluir el header en el OUTPUT.
Subir un archivo a un sitio remoto usando un formulario HTML Tu debes usar un formulario utilizando el metodo POST pero con algunos cambios. En este ejemplo, donde el formulario contiene enctype='multipart/form-data'. Usamos el array superglobal $_FILE para leer el archivo y pasarlo por los campos post con el signo @. Tal como lo siguiente:
En este ejemplo les muestro como subimos un archivo remotamente a la pagina You are not allowed to view links.
You are not allowed to view links.
Register or Login or You are not allowed to view links.
Register or Login:
En este caso tenemos un uploader y una carpeta llamada files/ en la cual se sube el fihcero luego envia una peticion subiendo el fichero y por ultimo nos envia el enlace, una cosa importante aqui es que agregamos la funcion curl_error($ch) que nos muestra si ocurre un error en cURL. Con la funcion curl_errno($ch) nos arroja un numero el cual tiene un mensaje especifico de error.
Nota: Recuerda que siempre que hago referencia a $ch es por que ahi se almacena la sesion de cURL.
Subir un archivo por FTP Tu tienes la opcion en cURL de usar todos los comandos FTP. Por ejemplo, si quieres subir un archivo:
CURLOPT_INFILE - El fichero que el proceso de transferencia debe leer a la hora de subir el archivo.
CURLOPT_INFILESIZE - El tamaño esperado en bytes, del fichero cuando se esta subiendo un fichero al sitio remoto. Tenganse en cuenta que el uso de esta opcion no detendra a libcurl a la hora de enviar mas datos, exactamente lo que se envia depende de CURLOPT_READFUNCTION.
Eliminar un archivo y mostrarlos por FTP Tu tienes la opcion de usar comandos FTP con cURL. Alguna lista de comandos puedes encontrarla en: You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
Veamos un ejemplo de Eliminar un archivo y como mostrar los archivos tambien de una carpeta.
CURLOPT_POSTQUOTE - Un array de comandos FTP a ejecutar en el servidor despues de que se realice la peticion FTP.
CURLOPT_FTPLISTONLY - TRUE para solo listar nombres de un directorio FTP.
Opciones LibcURL Podemos ver una lista de opciones sobre la libreria cURL en: You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
Rastrear peticiones Rastrear las peticiones o ver sus cabeceras, es una manera de saber si estamos haciendo bien algo en cURL, existen muchas herramientas las cuales podemos utilizar como intermediario para poder ver las peticiones, como vimos arriba usabamos HTTP FOX.
Y como comentabamos esta disponible tambien Burp Suite, Live HTTP Headers, Tamper Data, etc.
Hasta aqui la parte de este tutorial, nos vemos en la proxima parte que espero sea la ultima
.
Cabecera post personalizada a un host remoto Esto sucede cuando solo podemos ver ciertas partes de un sitio web, el sitio necesita unas cabeceras especiales, que tendriamos que olfatear con algun intermediario tal como puede ser: Live HTTP HEADERS, HTTPFox, Burp Suite, Tamper Data...
You are not allowed to view links.
You are not allowed to view links.
Register or Login or You are not allowed to view links.
Register or Login
En este ejemplo estoy olfateando las cabeceras HTTP usando de intermediario HTTPFox (Complemento de firefox).En este caso nosotros usaremos la opcion CURLOPT_HTTPHEADER.
CURLOPT_HTTPHEADER - Un array de campos a configurar para el Header HTTP, en el formato: array('Content-Type: text/plain','Content-length: 100');
CURLOPT_HEADER - TRUE para incluir el header en el OUTPUT.
| 01 | <?php |
| 02 |
| 03 | $url = "You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login"; |
| 04 | $referer = "You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login"; |
| 05 |
| 06 | $ch = curl_init(); // iniciamos curl |
| 07 | curl_setopt($ch, CURLOPT_URL, $url); // establecemos la url |
| 08 | curl_setopt($ch, CURLOPT_VERBOSE, 1); // muestra como pasa todo |
| 09 | curl_setopt($ch, CURLOPT_HEADER, 1); // muestra las cabeceras que el servidor nos devuelve |
| 10 | curl_setopt($ch, CURLOPT_STDERR, fopen('log_curl.txt','a+')); // en este archivo se guarda lo de verbose |
| 11 | curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/plain')); //modificamos nuestra cabecera |
| 12 | curl_setopt($ch, CURLOPT_REFERER, $referer); // ponemos desde donde venimos |
| 13 | curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // devolvemos el contenido de la pagina |
| 14 | curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); // quitamos la verificacion del certificado |
| 15 | curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // seguimos cualquier redireccion |
| 16 | curl_setopt($ch, CURLOPT_COOKIEFILE, fopen('cookies.txt','a+')); // le decimos donde van las cookies |
| 17 | curl_setopt($ch, CURLOPT_COOKIEJAR, fopen('cookies.txt','a+')); // le decimos que escriba las cookies aqui |
| 18 |
| 19 | $result = curl_exec($ch); // ejecutamos y guardamos |
| 20 |
| 21 | curl_close($ch); // cerramos curl, liberamos memoria |
| 22 |
| 23 | print $result; // mostramos el resultado |
| 24 |
| 25 | ?> |
| 1 | curl_setopt($ch, CURLOPT_POSTFIELDS, array("$field_name"=>"@".$_FILES['file']['tmp_name'])); |
| 01 | <?php |
| 02 | set_time_limit(0); |
| 03 | $url = "You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login"; |
| 04 | $user_agent = "Mozilla/5.0 (Windows NT 6.1; rv:28.0) Gecko/20100101 Firefox/28.0"; |
| 05 | $referer = "You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login"; |
| 06 | $directory=dirname(__FILE__).'\files/'; |
| 07 | if(isset($_FILES['f1'])){ |
| 08 | move_uploaded_file($_FILES['f1']['tmp_name'],"files/".$_FILES['f1']['name']); |
| 09 | $ch = curl_init(); |
| 10 | curl_setopt($ch, CURLOPT_USERAGENT, $user_agent); |
| 11 | curl_setopt($ch, CURLOPT_REFERER, $referer); |
| 12 | curl_setopt($ch, CURLOPT_URL, $url); |
| 13 | curl_setopt($ch, CURLOPT_POSTFIELDS, array("F1"=>"@".$directory.$_FILES['f1']['name'])); |
| 14 | curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); |
| 15 | curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); |
| 16 | $result = curl_exec($ch); |
| 17 | if(curl_errno($ch)) |
| 18 | { |
| 19 | echo 'Curl error: ' . curl_error($ch); |
| 20 | } |
| 21 | curl_close($ch); |
| 22 | unlink($directory.$_FILES['f1']['name']); |
| 23 | //echo $result; |
| 24 | preg_match_all('/<input type="text" name="t1" size="90" class="inp" value="(.*?)" onclick="highlight\(this\);" \/>/', $result, $matches); |
| 25 | //echo '<p><img src="'.$matches[1][0].'" alt="img" /></p>'; |
| 26 | echo '<p><b>Link: <a href="'.$matches[1][0].'" target="_blank">Archive Link</a></p>'; |
| 27 | //print_r($matches); |
| 28 | }else{ |
| 29 | echo ' |
| 30 | <form action="upload_curl.php" method="post" enctype="multipart/form-data"> |
| 31 | <label for="f1">Filename:</label> |
| 32 | <input type="file" name="f1" id="f1"> |
| 33 |
| 34 | <input type="submit" name="submit" value="Submit"> |
| 35 | </form> |
| 36 |
| 37 | '; |
| 38 | } |
| 39 | ?> |
En este caso tenemos un uploader y una carpeta llamada files/ en la cual se sube el fihcero luego envia una peticion subiendo el fichero y por ultimo nos envia el enlace, una cosa importante aqui es que agregamos la funcion curl_error($ch) que nos muestra si ocurre un error en cURL. Con la funcion curl_errno($ch) nos arroja un numero el cual tiene un mensaje especifico de error.
Nota: Recuerda que siempre que hago referencia a $ch es por que ahi se almacena la sesion de cURL.
Subir un archivo por FTP Tu tienes la opcion en cURL de usar todos los comandos FTP. Por ejemplo, si quieres subir un archivo:
| 01 | <?php |
| 02 | if(isset($_POST['enviar'])){ |
| 03 | $ftp_user = "tuusuario"; |
| 04 | $ftp_pass = "tucontraseña"; |
| 05 | $url = "tuurloipdetuweb"; |
| 06 | $ftp_server = "ftp:// (ftp://ftp://)". $ftp_user . ":" . $ftp_pass . "@" . $url; |
| 07 | $archivo_a_subir = realpath($_FILES['userfile']['tmp_name']); |
| 08 | $tamaño_del_archivo = filesize($archivo_a_subir); |
| 09 | $fp = fopen($archivo_a_subir, 'rb'); |
| 10 | $ch = curl_init(); |
| 11 | curl_setopt($ch, CURLOPT_URL, $ftp_server . $_FILES['userfile']['name']); |
| 12 | curl_setopt($ch, CURLOPT_VERBOSE, 1); |
| 13 | curl_setopt($ch, CURLOPT_UPLOAD, 1); |
| 14 | curl_setopt($ch, CURLOPT_INFILE, $fp); |
| 15 | curl_setopt($ch, CURLOPT_INFILESIZE, $tamaño_del_archivo); |
| 16 | if(curl_errno($ch)){ |
| 17 | echo "Ha ocurrido un error: " . curl_error($ch); |
| 18 | } |
| 19 | $result = curl_exec($ch); |
| 20 | curl_close($ch); |
| 21 | echo "Archivo subido correctamente |
| 22 | "; |
| 23 | print $result; |
| 24 | }else{ |
| 25 | echo ' |
| 26 | <form action="" method="post" enctype="multipart/form-data"> |
| 27 | <p><input type="file" name="userfile" /></p> |
| 28 | <p><input type="submit" name="enviar" value="Subir!" /></p> |
| 29 | </form> |
| 30 | '; |
| 31 | } |
| 32 | ?> |
CURLOPT_INFILESIZE - El tamaño esperado en bytes, del fichero cuando se esta subiendo un fichero al sitio remoto. Tenganse en cuenta que el uso de esta opcion no detendra a libcurl a la hora de enviar mas datos, exactamente lo que se envia depende de CURLOPT_READFUNCTION.
Eliminar un archivo y mostrarlos por FTP Tu tienes la opcion de usar comandos FTP con cURL. Alguna lista de comandos puedes encontrarla en: You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
Veamos un ejemplo de Eliminar un archivo y como mostrar los archivos tambien de una carpeta.
| 01 | <!DOCTYPE html> |
| 02 | <html> |
| 03 | <head> |
| 04 | <title>ELIMINAR ARCHIVOS FTP</title> |
| 05 | <meta charset="utf8"> |
| 06 | </head> |
| 07 | <body> |
| 08 | <h1>Eliminar archivo</h1> |
| 09 | <form action="" method="post"> |
| 10 | <p><b>Nombre de la carpeta: </b><input type="text" name="carpeta" placeholder="tucarpeta/" /><small>No es necesario especificarla</small></p> |
| 11 | <p><b>Nombre del archivo: </b><input type="text" name="archivo" placeholder="archivo.jpg" /></p> |
| 12 | <input type="submit" name="enviar" /> |
| 13 | </form> |
| 14 | <h1>Mostrar archivos de la carpeta</h1> |
| 15 | <form action="" method="post"> |
| 16 | <p><b>Nombre de la carpeta: </b><input type="text" name="directorio" placeholder="tucarpeta/" /><small>Es necesario especificarla para mostrar el contenido del directorio</small></p> |
| 17 | <input type="submit" name="enviar2" /> |
| 18 | </form> |
| 19 | <?php |
| 20 | /* Variables para el FTP */ |
| 21 | $ftp_user = "tuusuario"; |
| 22 | $ftp_pass = "tucontraseña"; |
| 23 | $url = "tuhost.com/"; |
| 24 |
| 25 | $ftp_server = "ftp:// (ftp://ftp://)". $ftp_user . ":" . $ftp_pass . "@" . $url; |
| 26 |
| 27 | /* Funcion para eliminar el archivo */ |
| 28 | if(isset($_POST['enviar'])){ |
| 29 | function delete($carpeta = null , $archivo){ |
| 30 | global $ftp_user, $ftp_pass, $url, $ftp_server; |
| 31 | if($carpeta == null){ |
| 32 | $carpeta = "public_html/"; |
| 33 | } |
| 34 | $postfields[] = "CWD ". $carpeta; |
| 35 | $postfields[] = "DELE " . $archivo; |
| 36 |
| 37 | $ch = curl_init(); |
| 38 | curl_setopt($ch, CURLOPT_URL, $ftp_server); |
| 39 | curl_setopt($ch, CURLOPT_POSTQUOTE, $postfields); |
| 40 | $result = curl_exec($ch); |
| 41 | if(curl_errno($ch)){ |
| 42 | echo curl_error($ch); |
| 43 | } |
| 44 | curl_close($ch); |
| 45 |
| 46 | print $result; |
| 47 | } |
| 48 | $carpeta = $_POST['carpeta']; |
| 49 | $archivo = $_POST['archivo']; |
| 50 | delete($carpeta,$archivo); |
| 51 |
| 52 | } |
| 53 | /* Listar directorio */ |
| 54 | if(isset($_POST['enviar2'])){ |
| 55 | function listar_dir($directorio){ |
| 56 | global $ftp_user, $ftp_pass; |
| 57 | $url = "tuhost.com/".$directorio; |
| 58 | $ftp_server = "ftp:// (ftp://ftp://)". $ftp_user . ":" . $ftp_pass . "@" . $url; |
| 59 | $ch = curl_init(); |
| 60 | curl_setopt($ch, CURLOPT_URL, $ftp_server); |
| 61 | curl_setopt($ch, CURLOPT_FTPLISTONLY, 1); |
| 62 | curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); |
| 63 | $output = curl_exec($ch); |
| 64 | if(curl_errno($ch)){ |
| 65 | echo curl_error($ch); |
| 66 | } |
| 67 | curl_close($ch); |
| 68 | $files = explode("\n", $output); |
| 69 | print_r($files); |
| 70 | } |
| 71 | $directorio = $_POST['directorio']; |
| 72 | listar_dir($directorio); |
| 73 | } |
| 74 | ?> |
| 75 | </body> |
| 76 | </html> |
CURLOPT_FTPLISTONLY - TRUE para solo listar nombres de un directorio FTP.
Opciones LibcURL Podemos ver una lista de opciones sobre la libreria cURL en: You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
Rastrear peticiones Rastrear las peticiones o ver sus cabeceras, es una manera de saber si estamos haciendo bien algo en cURL, existen muchas herramientas las cuales podemos utilizar como intermediario para poder ver las peticiones, como vimos arriba usabamos HTTP FOX.
Y como comentabamos esta disponible tambien Burp Suite, Live HTTP Headers, Tamper Data, etc.
Hasta aqui la parte de este tutorial, nos vemos en la proxima parte que espero sea la ultima
. 

