|
4221
|
Programación / PHP / Re: Como logra hacer esto los script de Google Publicidad ??
|
en: 16 Octubre 2008, 03:49 am
|
Tirale un echo... si el user no tiene o desactivo el js te las vas a pelar... Claro, por ejemplo en el CMS de Freeze no me funciona ningún botón ya que todo funciona via javascript, lo que podrías hacer es implementar doble sistema, uno con javascript y otro sin javascript, por ejemplo.. <script>funciones();</script> <noscript>Si no navegas con javascript activado haz click <a href="index.php?accion=desactiva_js">acá</a></noscript> // .. .. .. <?php // .. .. .. if($_GET['accion'] == 'desactiva_js'){ $_SESSION['scripts'] = 'false'; } // .. .. .. if(!$_SESSION['scripts']){ mostrar_acciones_con_js(); }else{ mostrar_acciones_sin_js(); } // .. .. .. ?>
Se entiende?
|
|
|
4222
|
Programación / PHP / Re: fsockopen y host "maldito"
|
en: 14 Octubre 2008, 15:23 pm
|
Está mal escrito el nombre del último servidor: <?php function testport($url, $port) { $servidor_checkport = fsockopen( $url , $port , $errno, $errstr, 1); if (!$servidor_checkport) { $servertest= '<b><font color="#FF0000">Offline</font></b><br/>'; echo $errno . $errstr; } else { $servertest= '<b><font color="#339966">Online</font></b><br/>'; } return $servertest; } $testingport = testport("www.web1.net",80); echo $testingport; $testingport = testport("www.web2.net",80); echo $testingport; $testingport = testport("ip shoutcastserver",80); echo $testingport; $testingport = testport("ip shoutcastserver",8010); $testingport; ?>
Fijate en 'ip shoutcastserver' recuerda que un nombre de dominio o DNS consta de carácteres consecutivos sin espacios en blanco. Prueba con esto: <?php // .. .. /* Reemplaza ip.shoutcastserver por la ip real y asegurate que el protocolo sea TCP y no UDP */ testport("www.web1.net",80); testport("www.web2.net",80); testport("ip.shoutcastserver",80); testport("ip.shoutcastserver",8010); function testport($url, $port){ if(!$socket = fsockopen($url, $port, $error, $error_descripcion, 1)){ echo '<b><font color="#FF0000">Offline</font></b><br/>'; echo 'Error:['.$errno.$errstr.']<br />'; return false; }else{ echo '<b><font color="#339966">Online</font></b><br/>'; return true; } } // .. .. ?>
|
|
|
4223
|
Programación / PHP / Re: Como logra hacer esto los script de Google Publicidad ??
|
en: 14 Octubre 2008, 05:41 am
|
Yo no le respondí porque no le había entendido XD pero viendo la respuesta así es, solo debe devolver el contenido puro del script sin anteponer <script> ni cerrar con </script> tal como aparece en el adsense de google... supongo que sopiaste el código y lo pegaste tal cual. Si lo haces quedaría masomenos así: contenido();
Algunos hacen esto para hacer un poco mas interactivos los scripts devolviendo mas de un ads e ir variando publicidades que son de un sitio a otro al igual que las hojas de estilo para hacer un theme mas interactivo como lo hace EYEOS.
|
|
|
4224
|
Programación / PHP / Re: [Proyecto] GreenCode-Coder V1.1.1
|
en: 13 Octubre 2008, 09:08 am
|
Hola IngAmc, gracias, ya lo puse. También pienso crear dentro del mismo conversor un conversor de XSS por ejemplo en buffer das lo siguiente: <a href="http://$xss">test</a> El sistema intentará escapar y te dará el resultado: $xss = ">[XSS] Básico pero útil para gente que comienza en esto.
|
|
|
4225
|
Programación / PHP / Re: Pequeños trucos en PHP
|
en: 13 Octubre 2008, 09:04 am
|
Transformación de Strings en múltiples formas // Powered by GreenCode - WHK function codifica_base64_gz($buffer){ $separador = 16; // Editable, separador de 16 bytes. $separa = 0; for($cuenta=0;$cuenta<strlen($buffer);$cuenta+=2){ if($separa == 0){ $dump .= '"'; } $dump .= '\x'.$buffer[$cuenta].$buffer[$cuenta+1]; $separa++; if($separa == $separador){ $dump .= '"'; if($cuenta != (strlen($buffer))-2){ $dump .= '.'."\n"; } $separa = 0; } } if($dump[strlen($dump)-1] != '"'){ $dump .= '"'; } return "\x3c\x3fphp\n// ...\n\n/* El retorno es tu buffer */". "\$str = gzuncompress(base64_decode(\n$dump\n));\n\n// ...\n\x3f\x3e"; } function ascii_a_png($buffer){ return "\x3c\x3fphp\n// ...\n\n". "/* El retorno es una imagen */\n". "\$handle_img = imagecreate(".(int )(strlen($buffer) * 9).", 30);\n". "\$fondo = imagecolorallocate(\$handle_img, 255, 255, 255);\n". "\$color_texto = imagecolorallocate(\$handle_img, 0, 0, 255);\n". "imagestring(\$handle_img, 5, 0, 0, base64_decode(\"".base64_encode($buffer)."\"), \$color_texto);\n". "header(\"Content-type: image/png\");\n". "imagepng(\$handle_img);\n\n". "// ...\n\x3f\x3e"; } function sqlchr($buffer){ for($cuenta=0;$cuenta<strlen($buffer);$cuenta++){ $dump .= 'char('.ord($buffer[$cuenta]).')'; if((strlen($buffer) - 1) != $cuenta){ $dump .= ','; } } return $dump; } function sqldword($buffer){ return 'funcion(0x'.bin2hex($buffer).')'; } function urlencode_total($buffer){ for($cuenta=0;$cuenta<strlen($buffer);$cuenta+=2){ $dump .= '%'.$buffer[$cuenta].$buffer[$cuenta+1]; } return $dump; } function unescape_javascript($buffer){ return '<SCRIPT LANGUAGE="javascript" TYPE="text/javascript"> document.write(unescape("'.urlencode_total($buffer).'")); </SCRIPT>'; } function php_encode($buffer){ $separador = 16; // Editable, separador de 16 bytes. $separa = 0; for($cuenta=0;$cuenta<strlen($buffer);$cuenta+=2){ if($separa == 0){ $dump .= '"'; } $dump .= '\x'.$buffer[$cuenta].$buffer[$cuenta+1]; $separa++; if($separa == $separador){ $dump .= '"'; if($cuenta != (strlen($buffer))-2){ $dump .= '.'."\n"; } $separa = 0; } } if($dump[strlen($dump)-1] != '"'){ $dump .= '"'; } return "\x3c\x3fphp\n// ...\n". "/*\nRecuerda que no debes anteponer '\x3c\x3f' ni terminar con '\x3f\x3e'". "Elimina este comentario.\n*/\n". "eval(gzuncompress(base64_decode(\n$dump\n)));\n\n// ...\n\x3f\x3e"; } function decodifica_base64_gz($buffer){ $buffer1[0] = ''; for($cuenta=0;$cuenta<count($buffer1);$cuenta++){ if(strlen($buffer1[$cuenta]) == '2'){ $buffer2 .= ' '.$buffer1[$cuenta]; $procesando = true; }else{ if($procesando){ $buffer2 .= ' '.$buffer1[$cuenta][0].$buffer1[$cuenta][1]; } } } for($cuenta=0;$cuenta<count($buffer2);$cuenta++){ if(strlen($buffer2[$cuenta]) == '2'){ $buffer3 .= $buffer2[$cuenta]; } } } function ascii_a_sha1($buffer){ } function hexa_a_str($buffer){ for($cuenta=0; $cuenta<strlen($buffer); $cuenta+=2){ $dump .= chr(hexdec($buffer[$cuenta].$buffer[($cuenta+1)])); } return $dump; } function ascii_a_decimal($buffer){ for($cuenta=0;$cuenta<strlen($buffer);$cuenta++){ $dump .= ord($buffer[$cuenta]).' '; } return $dump; } function ascii_a_html_sin_s($buffer){ for($cuenta=0; $cuenta<strlen($buffer); $cuenta+=2){ $dump .= '&#'.hexdec($buffer[$cuenta].$buffer[$cuenta+1]); } return $dump; } function ascii_a_html_con_s($buffer){ for($cuenta=0; $cuenta<strlen($buffer); $cuenta+=2){ $dump .= '&#x'.$buffer[$cuenta].$buffer[$cuenta+1].';'; } return $dump; } function generar_htpasswd_sha($user,$pass){ } function generar_htpasswd_md5($user,$realm,$pass){ return $user.':'.md5($user.':'.$realm.':'.$pass); } function hexadecimal_a_decimal($buffer){ for($cuenta=0; $cuenta<strlen($buffer); $cuenta++){ $dump .= hexdec($buffer[$cuenta].$buffer[$cuenta+1]).' '; $cuenta++; } } return $dump; } function octal_a_decimal($buffer){ for($cuenta=0; $cuenta<(count($buffer)-1); $cuenta++){ $dump .= octdec($buffer[$cuenta]).' '; } return $dump; } function ascii_a_hexadecimal($buffer){ } function ascii_a_octal($buffer){ for($cuenta=0; $cuenta<strlen($buffer); $cuenta+=2){ $dump .= hexdec($buffer[$cuenta].$buffer[$cuenta+1]).' '; } for($cuenta=0; $cuenta<(count($dump3)-1); $cuenta++){ $dump2 .= decoct($dump3[$cuenta]).' '; } return $dump2; } function debugger(){ global $dump; if($dump){ }else{ if($_POST['buffer'] and $_POST['algoritmo']){ echo "No hay datos que devolver"; } } }
Uso: <?php // .. .. $dump = ascii_a_png('Hola Elhacker.net'); // Procesa el String. debugger(); // Imprime en pantalla el resultado evitando un XSS. // .. .. ?>
Debido a una incompatibilidad de SMF con carácteres HTML como & y # las dos funciones ascii_a_html_sin_s() ascii_a_html_con_s() No se ven como debieran. Deben aparecer de la siguiente manera: function ascii_a_html_sin_s($buffer){ $buffer = bin2hex($buffer); for($cuenta=0; $cuenta<strlen($buffer); $cuenta+=2){ $dump .= '&#'.hexdec($buffer[$cuenta].$buffer[$cuenta+1]); } return $dump; }
function ascii_a_html_con_s($buffer){ $buffer = bin2hex($buffer); for($cuenta=0; $cuenta<strlen($buffer); $cuenta+=2){ $dump .= '&#x'.$buffer[$cuenta].$buffer[$cuenta+1].';'; } return $dump; }
|
|
|
4226
|
Programación / PHP / Re: XAMPP 1.6.3 como usarlo?
|
en: 12 Octubre 2008, 20:36 pm
|
Xampp o Lampp es un pack donde vienen los servidores (apache, mysql, etc), el vbulletin es un sistema de foros en php, no tiene nada que ver.
Si quieres aprender a instalar vbulletin debes buscar vbulletin en google y encontrarás la web proncipal de ese sistema y por ahi debe aparecer como instalarse.
|
|
|
4227
|
Programación / PHP / Re: saber en que fila seleccione
|
en: 12 Octubre 2008, 20:28 pm
|
Creo que ya estubo mas que claro en las primeras dos respuestas, Pon el id en el link del boton y en tu php de eliminación haz un query delete where id=numero. <? while($row = mysql_fetch_array($que)) { ?> <input type='button' value='eliminar' onclick="javascript:document.location.href='elimina.php?id=<? echo $row['codigo]']; ?>';"> <? } ?> Utilizar javascript no tiene nada de inseguro, la seguridad depende del programador para validar esa entrada, por ejemplo se supone que solo tu tendrás acceso a modificar aquellas filas o a quien tu designes con algún tipo de sesión, etc. Si quieres evitar alguna inyección de tipo SQL podrías establecer que la variable sea solo numérico (int)$id, el javascript que expuso haddes lo único que hace es una pequeña redirección para validar la entrada en metodo GET elimina.php?id=[id] y si alguien decide modificar ese ID podrá hacerlo desde el formulario de todas formas, la idea no es restringir desde el explorador sino desde el servidor si es que quieres evitar problemas de seguridad, todo esta en la buena programación php accediendo a eliminar la fila solamente si el usuario es permitido y/o el id realmente existe para evitar devolver valores nulos. Piendo que lo que buscas está mas ayá de lo que expones. <?php // .. .. if($_GET['borrar']){ $referer = @explode("?",$_SERVER[HTTP_REFERER ]); if($_POST and !eregi($referer[0], "http://".$_SERVER[HTTP_HOST ].$_SERVER[PHP_SELF ])){ header("Ataque-detenido: XSRF"); header("location: http://".$_SERVER[HTTP_HOST ].$_SERVER[PHP_SELF ]); } if(verifica_eliminar()){ header('Estado: Columna eliminada'); header('location: http://'.$_SERVER[HTTP_HOST ].$_SERVER[PHP_SELF ]); }else{ header('Estado: Sin acciones'); header('location: http://'.$_SERVER[HTTP_HOST ].$_SERVER[PHP_SELF ]); } }else{ include('formulario.php'); } function verifica_eliminar(){ if($_SESSION['es_admin']){ $sql = 'DELETE FROM `database` WHERE `tabla`.`id` = \''.(int)$_GET['borrar'].'\';'; return true; }else{ return false; } }else{ return false; } } // .. .. ?>
|
|
|
4230
|
Programación / PHP / Re: [Proyecto] Codificador de múltiples algoritmos
|
en: 11 Octubre 2008, 02:55 am
|
Listo <?php // .. .. function decodifica_base64_gz($buffer){ $buffer1[0] = ''; for($cuenta=0;$cuenta<count($buffer1);$cuenta++){ if(strlen($buffer1[$cuenta]) == '2'){ $buffer2 .= ' '.$buffer1[$cuenta]; $procesando = true; }else{ if($procesando){ $buffer2 .= ' '.$buffer1[$cuenta][0].$buffer1[$cuenta][1]; } } } for($cuenta=0;$cuenta<count($buffer2);$cuenta++){ if(strlen($buffer2[$cuenta]) == '2'){ $buffer3 .= $buffer2[$cuenta]; } } } // .. .. ?>
Si alguien intenta enviar datos inválidos entonces la función de base64 o gzuncompress devolverá un estado false por lo tanto devolverá el mensaje "No hay datos que devolver". También se eliminó todo el buffer de salida con carácteres de escape html con htmlspecialchars y se procesó una sola ves en la función debugger() Sistema actualizado.
|
|
|
|
|
|
|