Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > PHP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-11-2013
georkis georkis is offline
Miembro
 
Registrado: abr 2008
Ubicación: Cuba
Posts: 39
Poder: 0
georkis Va por buen camino
Talking Problemas con la función explode();

Bueno, estoy haciendo una script que crea usuario en el fichero .htpasswd, para encryptar contraseña... ya logré que abra el fichero y me lee el contenido del fichero, ahora lo que quiero es que haga una lista con los usuarios solamente hasta el delimitador ":", porque apartir de los dos punto es que comienza la contraseña... esta script cuando pongo la array $list[0]; me pone el usuario, pero cuando le pongo $list[$i], me pone la contraseña... este es el código...

Código PHP:
<?php
$passwd 
="hunter"//poner $_POST['usuario']
$user="koko.santiesteban"// poner $_POST['passwd']

    
$salt substr(str_shuffle("abcdefghijklmnopqrstuvwxyz0123456789"), 08);
    
$len strlen($passwd);
    
$text $passwd.'$apr1$'.$salt;
    
$bin pack("H32"md5($passwd.$salt.$passwd));
    for(
$i $len$i 0$i -= 16) { $text .= substr($bin0min(16$i)); }
    for(
$i $len$i 0$i >>= 1) { $text .= ($i 1) ? chr(0) : $passwd{0}; }
    
$bin pack("H32"md5($text));
    for(
$i 0$i 1000$i++) {
        
$new = ($i 1) ? $passwd $bin;
        if (
$i 3$new .= $salt;
        if (
$i 7$new .= $passwd;
        
$new .= ($i 1) ? $bin $passwd;
        
$bin pack("H32"md5($new));
    }
    for (
$i 0$i 5$i++) {
        
$k $i 6;
        
$j $i 12;
        if (
$j == 16$j 5;
        @
$tmp $bin[$i].$bin[$k].$bin[$j].$tmp;
    }
    
$tmp chr(0).chr(0).$bin[11].$tmp;
    
$tmp strtr(strrev(substr(base64_encode($tmp), 2)),
    
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",
    
"./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz");
   
$path="user";
//Encripto la contraseña conMD5
//Defino la cadena a insertar en el archivo
$cadena=$user.":"."$"."apr1"."$".$salt."$".$tmp."\r\n";
//Inserto un nuevo registro
//Abro el fichero htpasswd
$Anadir=fopen($path"a");
$lines=count(explode("\n"file_get_contents($path))); //cuenta las lineas del fichero para 
#Escribimos la cadena dentro de el
$delimitador ":";
fputs($Anadir$cadena);
#$list = explode($delimitador,$contenido);
for ($i=0$i<$lines$i++){
$list=explode($delimitadorfile_get_contents('user'));

echo 
$list[$i]. "<br>";

}
#Cerramos el fichero
fclose($Anadir);


?>
Bueno, espero que me ayuden... la script le falta... validación si el usuario existe... modificar y eliminar... pero estoy trabajando en eso...
Responder Con Cita
  #2  
Antiguo 05-11-2013
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Leyendo tu código creo que no has comprendido qué es lo que hace la función explode. De lo contrario, entenderías por qué está mal el último bucle y otras partes.

Tampoco es recomendable acceder a un archivo mientras está abierto (lo haces cuando cuentas las líneas).

También te recomiendo que uses funciones para ordenar tu código, porque es bastante lioso. En varias ocasiones mezclas comandos que forman parte de un proceso con otro que se hace a continuación. No afecta al funcionamiento, pero hace difícil el entenderlo.

Finalmente, no uses md5 ya que es relativamente fácil encontrar colisiones (ataques rainbow). Este artículo que escribí no hace mucho te ayudará bastante, así como el artículo que enlazo en el mismo.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine

Última edición por Ñuño Martínez fecha: 05-11-2013 a las 20:14:35.
Responder Con Cita
  #3  
Antiguo 07-11-2013
georkis georkis is offline
Miembro
 
Registrado: abr 2008
Ubicación: Cuba
Posts: 39
Poder: 0
georkis Va por buen camino
Talking Sobre el bucle...

OK, a la verdad ya hace unos 2 años que no programo nada, se me ha olvidado algunas funciones principalmente el manejo de tipo string... solo lo más básico me acuerdo por eso estoy pidiendo ayuda... sobre la encrytación... no se mucho de eso... observe como encrypta el htpasswd y vi algunos ejemplo en Internet... pero fijate, en el código hay dos variables fundamentales en la encrytación que la hace más segura $salt y la encryta a md5... de todos modos trataré de hacerlo de otros modo... muchas gracias...
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Problemas en funcion KroSaver Varios 34 21-02-2013 17:44:05
Tipo split o explode de un texto Panasys Tablas planas 2 18-04-2008 04:33:49
comando split ó explode en delphi srangel Internet 2 09-05-2006 19:17:55
Problemas con funcion RoundTo vick Varios 2 12-10-2005 02:12:35
Problemas con funcion bbjb Varios 10 27-09-2004 18:08:19


La franja horaria es GMT +2. Ahora son las 21:16:54.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi