Menú

Mostrar Mensajes

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.

Mostrar Mensajes Menú

Mensajes - arthusu

#201
Back-end / Re:Programación Orientada a objetos PHP
Octubre 07, 2014, 01:29:07 PM
+1 muy buen paper!
#202
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
#203
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
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.
Estoy deacuerdo con Doddy
#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
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.
LED de energía de la bateríaComponente probadoCondició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.
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.
LED de Bloq mayús/Bloq numComponente probadoCondició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
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


#207
##########################################
#                     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
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
<?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:


Código: php
<!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:


Código: 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 PM
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
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 ');
no por que el setTimeOut comienza con " entonces para cerrarlo seria en realidad ") asi pero no se puede por los parentesis, saludos :P
Claro; obviamente encodeando esos caracteres...
Pero 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 interpreta
#213
Wargames y retos / Re:Reto XSS [dificultad: el contexto]
Septiembre 19, 2014, 02:39:06 AM
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
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 ');
no por que el setTimeOut comienza con " entonces para cerrarlo seria en realidad ") asi pero no se puede por los parentesis, saludos :P
#214
Wargames y retos / Re:Reto XSS [dificultad: el contexto]
Septiembre 16, 2014, 08:43:57 PM
#215
Python / Re:Base64 encode
Septiembre 16, 2014, 08:28:40 PM
Muy bueno! +1
#216
atrapa el mapa en el buffer y envialo como html por mail a mi me funciono, lo puedes probar aca: 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
#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)

#218
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
#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:   
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
7foreach($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
7do {
8 curl_multi_exec($ch, $exec);
9} while($exec > 0);
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):
 
1//para cada url devolvemos el contenido junto con la url
1foreach($urls as $count => $url) {
2 $returned = curl_multi_getcontent($curl_array[$count]);
3 echo "$url - $returned";
4}
  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:
   
1//para cada url eliminamos el manejador, cerramos la peticion multi recurso y cada peticion de una sesion curl la cerramos
1foreach($urls as $count => $url) {
2 curl_multi_remove_handle($ch, $curl_array[$count]);
3}
4
5curl_multi_close($ch);
6
7foreach($urls as $count => $url) {
8 curl_close($curl_array[$count]);
9}
Como anteriormente dijimos el codigo anterior puede añadirse a lo que habiamos puesto antes... de esta manera todo el codigo quedaria asi:
 
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
08foreach($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
15do {
16 curl_multi_exec($ch, $exec);
17} while($exec > 0);
18foreach($urls as $count => $url) {
19 $returned = curl_multi_getcontent($curl_array[$count]);
20 echo "$url - $returned";
21}
22foreach($urls as $count => $url) {
23 curl_multi_remove_handle($ch, $curl_array[$count]);
24}
25
26curl_multi_close($ch);
27
28foreach($urls as $count => $url) {
29 curl_close($curl_array[$count]);
30}
31?>
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:
   
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?>
  curl_getinfo()
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 Login
        curl_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 Login
        cURL 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);
      14curl_setopt($ch, CURLOPT_POST,1);
      15curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
      16
      17// Ejecuta el gestor
      18curl_exec($ch);
      19?>
      Estilo por procedimientos:
         
      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);
      14curl_setopt($ch, CURLOPT_POST,1);
      15curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
      16
      17// Ejecuta el gestor
      18curl_exec($ch);
      19?>
        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:
      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?>
       
    [/list]
    #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...

    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?>
      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:

    1curl_setopt($ch, CURLOPT_POSTFIELDS, array("$field_name"=>"@".$_FILES['file']['tmp_name']));
    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:

    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
    02if(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_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.

    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_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 :).