Autor
|
Tema: publico lector de archivos con maquina de estados. (Leído 2,866 veces)
|
bomba1990
|
hola, hace poco tiempo me puse aprender sobre php, me parecio un lenguaje finisimo y muy potente.(comparado con vb  que es el que siempre e usado), y como hice un codigo para leer un archivo de texto y poder editarlo, (lo hice porque me daba ladilla tener que estar descargando en cualquier maquina qu eme conecte filezilla(el cliente ftp que uso) y despue slos archivos y bla bla bla. como e aprendido mucho de esta comunidad ahora publico esto para ver si a agluien mas le sirve, y para que me den sus comentarios a ver si esta mal echo o x cosa, de todas formas quiero agregarle algunas cosas al codigo y despues lo ire publicando mientras lo mejore. <?php echo"<center>\n<br><br>"; if (isset ($_POST["estado"])){ $estado=$_POST["estado"]; if (isset($_POST["ar"])){ $archivo=$_POST["ar"];; } else{ header('location:'.$_SERVER['REQUEST_URI']); } switch($estado){ case 1: echo form1(); break; case 2: echo '<form method="post" action="'.$_SERVER['REQUEST_URI'].'"> <textarea name="text" cols="50" rows="25">'; echo abrir($archivo); echo '</textarea><br> <input type="submit" value="guardar"> <input type="hidden" name="estado" value="3"> <input type="hidden" name="ar" value='.$archivo.'></form>'; break; case 3: guardar($_POST["text"],$archivo); echo '<a href="'.$_SERVER['REQUEST_URI'].'">guardado</a>'; break; } } else{ echo form1(); } echo '</center>'; function form1(){ $form='<form method=post action="'.$_SERVER['REQUEST_URI'].'"> <input type="text" name="ar" size="50"> <input type="hidden" name="estado" value=2><br><br> <input type="submit" value="seleccionar"></form>'; return $form; } function abrir($destino,$num=1){ if ((preg_match('@^http://@',$destino)) or ( !$num ==1) ){ } else{ $abrir = fopen($destino,"r"); } } } function guardar($texto,$destino){ $abrir = fopen($destino,"w"); } ?>
|
|
|
En línea
|
|
|
|
Shell Root
|
Observaciones:1. | Linea 6, tienes doble punto y coma. | 2. | Mal filtro de la variable "ar", provocando un XSS. | Corección de errores: <?php /* Corección de errores By: Shell Root */ echo"<center>\n<br><br>"; if (isset ($_POST["estado"])){ $estado = $_POST["estado"]; if (isset($_POST["ar"])){ $archivo = $_POST["ar"]; } }else{ header('location:'.$_SERVER['REQUEST_URI']); }//End Else switch($estado){ case 1: echo form1(); break; case 2: echo '<form method="post" action="'.$_SERVER['REQUEST_URI'].'"> <textarea name="text" cols="50" rows="25">'.abrir($archivo).'</textarea> <br> <input type="submit" value="guardar"> <input type="hidden" name="estado" value="3"> <input type="hidden" name="ar" value='.htmlspecialchars($archivo,ENT_QUOTES). /*Para evitar el XSS*/ '> </form>'; break; case 3: guardar($_POST["text"],$archivo); echo '<a href="'.$_SERVER['REQUEST_URI'].'">Guardado</a>'; break; }//End Switch }else{ echo form1(); }//End Else echo '</center>'; function form1(){ $form='<form method=post action="'.$_SERVER['REQUEST_URI'].'"> <input type="text" name="ar" size="50"> <input type="hidden" name="estado" value=2><br><br> <input type="submit" value="seleccionar"></form>'; return $form; }//End Fuction form1 function abrir($destino,$num=1){ if ((preg_match('@^http://@', $destino)) or (!$num ==1) ){ }else{ $abrir = fopen($destino,"r"); }//End If }//End Else }//End Fuction abrir function guardar($texto,$destino){ $abrir = fopen($destino,"w"); }//End Function guardar ?>
Podeis generar una Expresión Regular algo así. Para verificar si el archivo tiene extensión. /(\.(\w){1,3})||(\.(\w){1,4})/
|
|
|
En línea
|
Te vendería mi talento por poder dormir tranquilo.
|
|
|
~ Yoya ~
Wiki
Desconectado
Mensajes: 1.125
|
Esta es la mi expresion regular... (\w+)$
Captura desde atras los caracters alfa-numericos y como el "punto" no es alfa-numerico, la captura se detiene.
|
|
|
En línea
|
Mi madre me dijo que estoy destinado a ser pobre toda la vida. Engineering is the art of balancing the benefits and drawbacks of any approach.
|
|
|
bomba1990
|
gracias si, es que estoy haciendo uno mas complejo, y decidi poner lo que llevaba a ver que opinaban. bueno de seguridad hay si estoy raspado, me voy a sentar a leer sobre el tema porque tambien hice un formulario de login, para que ese tipo de funciones solo esten disponibles para mi, y no se nada de sql injection y no se si alguien se puede aprovechar algun fallo. bueno lo de comprobar la extension del archivo, lo pense pero no estuve muy interesdo en ponerselo porque hay mucha variedad de archivos de texto que tienen diferentes extensiones o no tienen ninguna extension y no dejan de ser archivos de texto. lo que si es que aveces hay codigo que como el de http://www.google.com que se ejecuta en ves de solo ponerlo y no se como acomodar eso, y lo otro es que quiere hacer como cuando uno pone un codigo aqui que tiene colores. Bueno lo voy a ir acomodando y despues posteeo lo que haga.
|
|
|
En línea
|
|
|
|
Shell Root
|
lo que si es que aveces hay codigo que como el de http://www.google.com que se ejecuta en ves de solo ponerlo y no se como acomodar eso,... What The Fuck! ...lo otro es que quiere hacer como cuando uno pone un codigo aqui que tiene colores. Sistema GeSHi!
|
|
|
En línea
|
Te vendería mi talento por poder dormir tranquilo.
|
|
|
bomba1990
|
lo que si es que aveces hay codigo que como el de http://www.google.com que se ejecuta en ves de solo ponerlo y no se como acomodar eso,... What The Fuck! bueno es que yo queria despues d eeso hacer un bot, o algo por el estilo para sacar correos y dirrecciones http entonces se me ocurrio usar esto para abrir dirrecciones url, tipo google.com y hay fue cuando agregue file_get_contents($destino), pero con goolge me pone el codigo y ademas como que si lo ejecutara aqui te dejo una imagen y si quieres prueba y veras pones en el espacio de texto http://www.google.com y deberia salirte algo por el estilo  ...lo otro es que quiere hacer como cuando uno pone un codigo aqui que tiene colores. Sistema GeSHi!
|
|
|
En línea
|
|
|
|
|
|