Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: .:UND3R:. en 4 Marzo 2012, 01:47 am



Título: Problema con PHP (librería curl)
Publicado por: .:UND3R:. en 4 Marzo 2012, 01:47 am
Hola a todos tengo un modulo para mi web que tiene como propósito lo siguiente: El usuario debe introducir alguno de sus datos, además de eso deberá introducir en un textbox una captcha, esta captcha es externa a mi servidor y es sacada desde un sistema de votación. La idea es que a través del módulo ocurra lo siguiente:
Citar
-el usuario introduce su ID de login
-el usuario introduce su Personaje
-el usuario introduce el captcha (este tomado desde un servidor externo de votaciones)

La idea es que cuando el usuario presione el botón enviar, a través de la librería curl se envíe una cabecera http header post al servidor externo para validar el voto en la página externa.

Todo funciona a la perfección excepto la cabecera post que no se envía:

la imagen del formulario es la siguiente:

(http://www.subirimagenes.net/pictures/801e605149dc7627acbfecefa492a49c.jpg)

en donde el captcha es tomado desde la página:
http://www.xtremetop100.com/in.php?site=1132331256 (http://www.xtremetop100.com/in.php?site=1132331256)

 (http://www.subirimagenes.net/pictures/ff6de277a6e7683637927c03f2e9c62f.jpg) (http://www.subirimagenes.net)

En otras palabras que automáticamente se valide el voto de la página http://www.xtremetop100.com/in.php?site=1132331256 (http://www.xtremetop100.com/in.php?site=1132331256)

He utilizado Live Http Headers para visualizar como trabaja el sistema de votos en el servidor externo. a continuación muestro una imagen de como trabaja.

 (http://www.subirimagenes.net/pictures/dcb34e4d48f0ddce67c3cb3a628357fa.jpg) (http://www.subirimagenes.net)

Por lo que deduzco que debería enviar el contenido post mostrado en la imagen.

Pero no funciona, adjunto vote.php para ver en que falla:


Código
  1. <?php
  2. include("secure.php");
  3. include("config.php");
  4.  
  5. //Configurar votacion
  6. $votehours = "12";
  7. $votecredits = "10";
  8. $votelink = "http://www.mu-caos.cl";
  9.  
  10. // Obtiene imagen captcha
  11. $img = 'http://www.xtremetop100.com/captchasystem/captcha.php';
  12.  
  13.  
  14. $connect = mssql_connect($core['db_host'],$core['db_user'],$core['db_password']);
  15. $db = mssql_select_db($core['db_name'],$connect);
  16. if(!$db) die('<center>Conexion SQL fallida!</center>');
  17.  
  18. function vote()
  19. {
  20. global $votecredits;
  21. global $votelink;
  22. global $votehours;
  23.  
  24. $captcha_valude = secure($_POST['captcha_valude']);
  25. $character = secure($_POST['character']);
  26. $account = secure($_POST['login']);
  27. $data ='site=1132331256&word='.$_POST['captcha_valude'].'&submit=Vote+for+Mu+Caos';
  28. check_inject();
  29.  
  30. $time = 60 * 60 * $votehours;
  31. $timenow = time();
  32. $time2 = $timenow - $time;
  33.  
  34. $queryaccount = mssql_query("Select * from MEMB_INFO where memb___id='$account'");
  35. $accountcheck = mssql_num_rows($queryaccount);
  36.  
  37. $querycharacter = mssql_query("Select * from Character where Name='$character'");
  38. $charactercheck = mssql_num_rows($querycharacter);
  39.  
  40. $queryvote = mssql_query("Select * from votereward where time>'$time2' and memb___id='$account'");
  41. $votecheck = mssql_num_rows($queryvote);
  42.  
  43. if(empty($account)) { echo"<font color='red'>Introduce tu ID!</font><br>"; $error=1; }
  44. elseif(empty($character)) { echo"<font color='red'>Introduce tu personaje!</font><br>"; $error=1; }
  45. elseif(empty($captcha_valude)) { echo"<font color='red'>Introduce las letras de la imagen!</font><br>"; $error=1; }
  46. elseif($accountcheck <= 0) { echo"<font color='red'>La ID ingresada no existe!</font><br>"; $error=1; }
  47. elseif($charactercheck <= 0) { echo"<font color='red'>El personaje introducido no existe!</font><br>"; $error=1; }
  48. elseif($votecheck >= 1) { echo"<font color='red'>Votaciones permitidas solo cada $votehours horas!</font><br>"; $error=1; }
  49.  
  50. if($error != 1) {
  51. $a = mssql_query("INSERT INTO votereward (memb___id, time ) VALUES('$account','$timenow')");
  52. $b = mssql_query("Update Character set PCPoints = PCPoints+$votecredits WHERE Name='$character'");
  53.  
  54. // PRUEBA
  55. $ch = curl_init('http://www.xtremetop100.com/in.php?site=1132331256');
  56. curl_setopt ($ch, CURLOPT_POST, 1);
  57. curl_setopt ($ch, CURLOPT_POSTFIELDS, $data);
  58. curl_exec ($ch);
  59. curl_close ($ch);
  60.  
  61.  
  62. // PRUEBA
  63. echo"<font color='green'>Votación realizada exitosamente!</font>";
  64. echo"<meta http-equiv=\"refresh\" content=\"5;url=$votelink\" />";
  65. }
  66. }
  67.  
  68. if(isset($_POST['submit'])) { vote(); }
  69. ?>
  70. <br>Por cada voto recibiras <?php echo($votecredits);?> PCPoints!
  71. <table border=0 cellspacing=5 cellpadding=0>
  72. <td width='250'>
  73. <form name="" method="post" action="">
  74. <table width="100%" border="0" cellspacing="1" cellpadding="1">
  75. <tr>
  76.  <td width="70" height="28" align="center">Login ID:</td>
  77.  <td>&nbsp;</td>
  78.  <td><p>
  79.    <input name="login" type="text" id="login" maxlength="10" />
  80.  </p></td>
  81. </tr>
  82. <tr>
  83.  <td height="20" align="center">Personaje:</td>
  84.  <td>&nbsp;</td>
  85.  <td><input name="character" type="text" id="character" maxlength="10" /></td>
  86. </tr>
  87. <tr>
  88. <td>
  89. <td align="center">
  90. <td align="left"><div>
  91.  
  92. <?php echo '<IMG src="'.$img.'">';?>
  93. <p>Inserta las letras de la imagen:</p>
  94. <p><input type="text" id="captcha_valude" name="captcha_valude"></p>
  95.  <input type="submit" class=button name="submit" value="Votar" />
  96.  <input type="reset" class=button name="reset" value="Resetear" />
  97. </div>
  98. <td>&nbsp;</td>
  99. </tr>
  100. </table>
  101. </form>
  102. </div>
  103. </td>
  104. </table>

Desconozco de PHP, todo lo he encontrado indagando por Internet y con un poco de ayuda de yoya que me ha dado unas pequeñas pistas.

Yo creo que el fallo dentro del recuadro de comentario // prueba

Si me dijeran que debería agregar o modificar o en que estoy fallando se los agradecería mucho, es lo único que me falta para un proyecto que llevo realizando desde hace una buena cantidad de tiempo. Muchísimas gracias por leer

Saludos


Título: Re: Problema con PHP (librería curl)
Publicado por: javirk en 4 Marzo 2012, 16:42 pm
¿Tienes que coger los datos obligatoriamente desde ahí? Si no, usa reCaptcha: http://code.google.com/intl/es-ES/apis/recaptcha/docs/php.html (http://code.google.com/intl/es-ES/apis/recaptcha/docs/php.html)


Título: Re: Problema con PHP (librería curl)
Publicado por: .:UND3R:. en 4 Marzo 2012, 17:06 pm
¿Tienes que coger los datos obligatoriamente desde ahí? Si no, usa reCaptcha: http://code.google.com/intl/es-ES/apis/recaptcha/docs/php.html (http://code.google.com/intl/es-ES/apis/recaptcha/docs/php.html)

Lógicamente que si la web a la que mi php votará no es mía por lo que yo me tengo que adaptar a ella no ella a mi, por eso tengo que tomar el captcha de la web externa a mi servidor y enviar un Header POST con el parámetro mostrado en la imagen. Y eso es lo que falla, ya que trabaja sin ningún problema todo excepto enviar datos al servidor anexo, Headder POST