Underc0de

Programación Web => Back-end => Mensaje iniciado por: 2Fac3R en Noviembre 24, 2013, 12:40:36 AM

Título: Conversor de textos By 2Fac3R v3.0
Publicado por: 2Fac3R en Noviembre 24, 2013, 12:40:36 AM
Modifiqué un poco el código de la versión anterior, para que quedara más "bonito" hablando del punto de vista de la programación.

He creado y usado este script para uso personal, resolviendo wargames, creandolos, etc...
Código (php) [Seleccionar]

<title> Conversor de textos By 2Fac3R v3.0</title>
<?php
/*
 * Conversor de textos
 * .- Underc0de.org -.
 *     v3.0 2013
 * Autor: 2Fac3R
 * 
 * Gr33tz to:
 * 
 * xt3mp, arcangel_nigth, EddyW, ANTRAX, 11Sep, Kr34t0r, GAMARRA, SkippyCreammy, v1c0_h4ck, w4rning, Snifer, 
 * arthusu, Kodeinfect, [Q]3rV[0], WilyXem, m3x1c0h4ck, etc, etc...
 * 
 * */

error_reporting(E_ALL);

function 
convertir($a$string){ // a : eleccion, string:texto

switch($a){
case 'bin2hex':
$res bin2hex($string);
break;
case 'encode':
$res urlencode($string);
break;
case 'gzinflate':
$res gzinflate($string);
case 'decode':
$res htmlentities(urldecode($string));
break;
case 'utf-7':
$res mb_convert_encoding($string,'UTF-7');
break;
case 'ASCII':
for($i=0;$i<strlen($string);$i++){
$obt=ord($string[$i]);
$ascii=$obt.',';
}
$res $ascii;
break;
case 'MD5':
$res md5($string);
break;
case 'SHA1':
$res sha1($string);
break;
case 'Base64_encode':
$res base64_encode($string);
break;
case 'Base64_decode':
$res base64_decode($string);
break;
case 'bindec':
$res bindec($string);
break;
case 'mcrypt':
$res crypt($string);
break;
default:
die("Ha habido un error <a href=''> Regresar! </a>");
break;
}
return $res;
}

if(!empty(
$_POST)):
echo convertir($_POST['convertir'],$_POST['str']);
else:
?>

<form action="" method="POST">
<select name="convertir">
<option value="bin2hex"> BinToHex </option>
<option value="encode"> Encode </option>
<option value="decode"> Decode </option>
<option value="gzinflate"> gzinflate </option>
<option value="utf-7"> Encode UTF-7</option>
<option value="ASCII"> ASCII </option>
<option value="MD5"> MD5 </option>
<option value="SHA1"> SHA1 </option>
<option value="Base64_encode"> Base64 encode</option>
<option value="Base64_decode"> Base64 decode</option>
<option value="bindec"> Binario To Decimal</option>
<option value="mcrypt">mcrypt</option>
</select>
<input type="text" name="str">
<input type="submit" name="enviado" value="Convertir!">
</form>
<?endif;?>


Espero que alguien le sea de utilidad como a mí. 8)

Zalu2!
Título: Re:Conversor de textos By 2Fac3R v3.0
Publicado por: F0M3T en Noviembre 24, 2013, 12:49:10 AM
Haz vuelto, que alegría, está bueno, saludos. :D
Título: Re:Conversor de textos By 2Fac3R v3.0
Publicado por: 2Fac3R en Noviembre 24, 2013, 01:41:15 AM
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Haz vuelto, que alegría, está bueno, saludos. :D

Me paso casi diario por acá, solo que no me habia dado tiempo de publicar ni casi de comentar en temas, ustedes responden muy bien, no hace falta jajaja  ;)

Zalu2!
Título: Re:Conversor de textos By 2Fac3R v3.0
Publicado por: F0M3T en Noviembre 24, 2013, 01:42:42 AM
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Haz vuelto, que alegría, está bueno, saludos. :D

Me paso casi diario por acá, solo que no me habia dado tiempo de publicar ni casi de comentar en temas, ustedes responden muy bien, no hace falta jajaja  ;)

Zalu2!
Igual es un gusto leerte de nuevo, esperemos que tengas más tiempo, extrañamos tus aportes :D
Título: Re:Conversor de textos By 2Fac3R v3.0
Publicado por: Alex en Noviembre 24, 2013, 02:32:10 AM
interesante, podría estar estructuralmente mejor pero está muy bien.

si te interesa saber por qué podría estar mejor decime y te comento.

saludos!
Título: Re:Conversor de textos By 2Fac3R v3.0
Publicado por: 2Fac3R en Noviembre 25, 2013, 03:15:35 PM
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
interesante, podría estar estructuralmente mejor pero está muy bien.

si te interesa saber por qué podría estar mejor decime y te comento.

saludos!

Cualquier comentario es bienvenido, y si es para mejorar el code mucho mejor!  :D
Zalu2!
Título: Re:Conversor de textos By 2Fac3R v3.0
Publicado por: Alex en Noviembre 25, 2013, 05:31:46 PM
Los siguientes comentarios son en base a que la idea de tu código es que lo utilicen diferentes personas en diferentes ámbitos o contextos.

El primer punto que deberías arreglar es el hecho de no generar dependencias ¿A que me refiero? si tu idea es que la función pueda ser utilizados en diferentes lugares, no deberías tener cosas como un die, porque lo más probable es que no todo el mundo quiera emitir un die si la función falla.

en vez de hacer por ejemplo die("Ha habido un error <a href=''> Regresar! </a>"); deberías devolver FALSO, para que a la hora de utilizar dicha función si yo quiero mandar un díe de esa forma o de otra no tengo que modificar la función.

Quizá parezca una estupidez, pero si te pones a pensar el problema es que esto a esta escala no es un problema porque da igual si tengo que cambiar la funcion una linea para que haga lo que quiero, pero si son muchisimas funciones y resultara que tu función fuera más grande puede significar cambios mayores que podrían ser evitados desde una decición simple de diseño tal como es, lo que propongo.

En otras palabras si tu código tiende a ser reusable o puesto en varios lugares diferentes o por varias personas, lo mas razonable es no asumir que hacer cuando por ejemplo no se solicita una encriptación válida.

En este caso como el código es exageradamente simple, no hay muchas otros puntos donde tengas fallas de este tipo, no obstante si no te haces la costumbre de hacerlo en las cosas chicas, cuando realmente sea necesario, te olvidarás más de una vez, o te dará muchos problemas.

En segunda instancia, debes dejar de utilizar php en formato de etiqueta (para códigos grandes que incluyan funciones y otras cosas que no deberían estar en el mismo archivo), debes empezar a pensar en separar diseño, control y abstracción de la base de datos (obviamente el último punto no aplica a este código, pero si lo digo en general para futuros códigos)

Cuando el código se empieza a poner razonable (más de 2mil lineas de código) tener una mezcla de cosas termina complicando todo, es mejor tener todo bien separado, como dice el dicho, divide y vencerás.

esto es a nivel estructura, en un código tan pequeño como éste no te puedo dar más ejemplos de mejoras estructurales porque no es posible.

dejando esto de lado, también te comento la existencia de una función llamda String hash(String $algoritm, String $data); (http://us2.php.net/manual/es/function.hash.php)

quizá te interese.

Saludos!
Título: Re:Conversor de textos By 2Fac3R v3.0
Publicado por: 2Fac3R en Noviembre 30, 2013, 10:48:30 PM
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Los siguientes comentarios son en base a que la idea de tu código es que lo utilicen diferentes personas en diferentes ámbitos o contextos.

El primer punto que deberías arreglar es el hecho de no generar dependencias ¿A que me refiero? si tu idea es que la función pueda ser utilizados en diferentes lugares, no deberías tener cosas como un die, porque lo más probable es que no todo el mundo quiera emitir un die si la función falla.

en vez de hacer por ejemplo die("Ha habido un error <a href=''> Regresar! </a>"); deberías devolver FALSO, para que a la hora de utilizar dicha función si yo quiero mandar un díe de esa forma o de otra no tengo que modificar la función.

Quizá parezca una estupidez, pero si te pones a pensar el problema es que esto a esta escala no es un problema porque da igual si tengo que cambiar la funcion una linea para que haga lo que quiero, pero si son muchisimas funciones y resultara que tu función fuera más grande puede significar cambios mayores que podrían ser evitados desde una decición simple de diseño tal como es, lo que propongo.

En otras palabras si tu código tiende a ser reusable o puesto en varios lugares diferentes o por varias personas, lo mas razonable es no asumir que hacer cuando por ejemplo no se solicita una encriptación válida.

En este caso como el código es exageradamente simple, no hay muchas otros puntos donde tengas fallas de este tipo, no obstante si no te haces la costumbre de hacerlo en las cosas chicas, cuando realmente sea necesario, te olvidarás más de una vez, o te dará muchos problemas.

En segunda instancia, debes dejar de utilizar php en formato de etiqueta (para códigos grandes que incluyan funciones y otras cosas que no deberían estar en el mismo archivo), debes empezar a pensar en separar diseño, control y abstracción de la base de datos (obviamente el último punto no aplica a este código, pero si lo digo en general para futuros códigos)

Cuando el código se empieza a poner razonable (más de 2mil lineas de código) tener una mezcla de cosas termina complicando todo, es mejor tener todo bien separado, como dice el dicho, divide y vencerás.

esto es a nivel estructura, en un código tan pequeño como éste no te puedo dar más ejemplos de mejoras estructurales porque no es posible.

dejando esto de lado, también te comento la existencia de una función llamda String hash(String $algoritm, String $data); (http://us2.php.net/manual/es/function.hash.php)

quizá te interese.

Saludos!

Buenas!

Sobre lo del die() estoy deacuerdo, quizá a modo de ver esto un poco más "grande" es una buena recomendación, en este caso creo que no es necesario, otra cosa (aparte del FALSE) que se puede regresar, es guardar el mensaje de error en una constante, y el usuario solo debería modificar la constante.

En un proyecto que hice con unos amigos hace poco, lo que hacíamos era crear un "capturador de errores" y de ahí nos basabamos, un poco más "profesional".

En el segundo caso claro que lo hago así, modularizar es bastante importante en códigos grandes, incluso mejor si es POO, también lo recomiendo  ;D

Ando checando la función que me pasaste, es interesante lo único que veo es que no tiene tantos algorítmos de cifrado, prefiero usar funciones específicas jeje

Gracias por los comentarios y recomendaciones brot 8)
Zalu2
Título: Re:Conversor de textos By 2Fac3R v3.0
Publicado por: Alex en Diciembre 01, 2013, 04:32:06 PM
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Buenas!

Sobre lo del die() estoy deacuerdo, quizá a modo de ver esto un poco más "grande" es una buena recomendación, en este caso creo que no es necesario, otra cosa (aparte del FALSE) que se puede regresar, es guardar el mensaje de error en una constante, y el usuario solo debería modificar la constante.

si lo de la constante podría llegar a ser viable, de todos modos aún sigue siendo bastante restrictivo, tienes que pensar que tu función es lo que podría denominarse "especificación", y la tendencia a la hora de programar es separar implementación de especificación, tendrías que empezar pensando que el usuario que use la función quizá ni siquiera quiera mostrar el mensaje, sino que lo quiciera almacenar en un archivo de log de errores por ejemplo, en todo caso como vos no podés pensar en todas las posibilidades, lo mejor sería retornar true si todo anda bien o false si las cosas van mal guardando en alguna variable por referencia (es solo un ejemplo no digo que lo hagas así), el mensaje de error que quieras.

Yo cuando trabajo con clases aveces creo dos variables para la clase que esté usando, $error y $error_msg donde en $error pongo si hay un error o no (más allá de que lo devuelvo en la función) y en $error_msg pongo el mensaje.

Eso lo hacía en un principio, también puedes generar una excepción para que quien use la función la meta en un bloque try/catch y capture los errores.

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
En un proyecto que hice con unos amigos hace poco, lo que hacíamos era crear un "capturador de errores" y de ahí nos basabamos, un poco más "profesional".
claro no se como lo crearon pero eso existe en php y es el block try/catch, donde lanzas una excepción y Catch la captura al vuelo.

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
En el segundo caso claro que lo hago así, modularizar es bastante importante en códigos grandes, incluso mejor si es POO, también lo recomiendo  ;D

claro, tienes toda la razón, si te interesa el tema de la programación "profesional" te invito a ver mi blog.std-io.com (http://blog.std-io.com) donde encontrarás cosas como criterios de calidad, y otros temas más referentes a esto.

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Ando checando la función que me pasaste, es interesante lo único que veo es que no tiene tantos algorítmos de cifrado, prefiero usar funciones específicas jeje

pues estamos de acuerdo, no tiene tantos algoritmos como si usas funciones a parte, te lo pasé más que nada para que lo vieras como posible agregado a tu función :)

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Gracias por los comentarios y recomendaciones brot 8)
Zalu2

no, por favor, es un placer ayudar con los pocos conocimientos con los que cuento.

saludos