Ares escribió:...
Bueno definitivamente te quiero ayudar, ya que yo sufri esto hace un par de años xDD.
Te hare unas cuantas sugerencias ya tu veras si te gustaria aplicarlas:
-Primero que todo te recomiendo que definas un caracter separador entre las columnas de tus archivos planos, te sugiero que sea un espacio en blanco, pero para esto entonces ni el nombre de usuario ni contraseña pueden tener espacios en blanco.
Para la parte de ingreso al foro y registro en el foro, te recomiendo dos archivos de textos:
un archivo de texto en el cual manejaras usuarios, contraseñas y por comodidad tambien te sugiero un ID, con el siguiente formato:
Nombre_de_usuario Contraseña ID
es decir un ejemplo de este archivo una vez lleno podria ser:
Introduzca mipass 1
Ares supass 2
Other_Man lapass 3
es decir primero siempre el usuario el cual no tiene espacios en blanco, un espacio en blanco, contraseña, un espacio en blanco el id el cual aumentara de uno en uno segun se registren.
el otro archivo que te recomiendo en esta parte es uno donde se guarden los datos del usuario que deseas guardar, edad, sexo, rango(usuario, moderador, administrador), estado(activo, baneado) este ultimo si lo deseas incluir, y demas cosas que quieras guardar, eso si aqui es donde toma utilidad el ID anterior, el primer campo de este registro seria el ID.
ejemplo de este archivo podria ser:
1 20 Hombre usuario activo
en orden ID, edad, sexo, rango, estado.
nuevamente te recomiendo como separador un espacio en blanco, pero puedes escoger cualquier signo con tal que evites que el usuario entre sus opciones pueda meter ese signo.
Con estos dos primeros archivos podrias cubrir el ingreso al foro y el registro, todo eso con solo una funcion que haga lo siguiente:
una funcion en php que acepte como entrada un string, el cual sera el nombre de usuario ingresado por el usuario (el cual no contiene signos en blanco), la funcion recorrera el archivo de nombres y contraseñas, comparando el string ingresado con la primera columna(nombre de usuario).
Si lo encuentra retornara un array de dos posiciones, en la primera posicion la hilera completa nombre+contraseña+ID, en la segunda posicion retornara 0, luego te explico el porque.
si no lo encuentra retornara el mismo array de dos posiciones, en la primera un string vacio, en la segunda el ID del ultimo registro.
por ejemplo para el ejemplo de el como quedaria el archivo, si el usuario por ejemplo ingresa Ares devolveria:
array=["Ares supass 2",0]
si el usuario ingresa Otro el cual no esta retornaria:
array=["", 3]
siendo 3 el ultimo ID.
para que esto asi??, porque esta funcion serviria para el login o para el registro, en el caso del login, envias como string el nombre de usuario, al array regresado si si devuelve algo en la primera posicion, comparas la contraseña que digito el usuario con la segunda columna del string retornado, si coinciden te recomiendo que uses las sesiones de php, para registrar nombre de usuario y ID, si no coinciden puedes mostrar un error diciendo contraseñas no coinciden.
si el string que devolvio en la primera posicion del array es vacio, muestras el mensaje: "usuario no encontrado".
asi tendrias la parte del login.
En cuanto al registro tambien te serviria, pues ya terminado el formulario de registro donde el usuario ha ingresado nombre de usuario, contraseña y demas cosas que pidas como datos personales y el usuario envie dicho formulario de registro, mandas nuevamente el nombre de usuario a la funcion anteriormente creada, si retorna en la primera posicion del array un string que no es vacio das el mensaje: "error nombre de usuario ya utilizado", si el string es vacio miras el segundo campo, el cual es el ultimo ID, aumentas un numero a ese numero y al final del archivo anterior escribes el siguiente registro:
NombreARegistrar Contraseña ID+1
y listo seria una forma mas o menos ordenada de tener a los usuarios.
para la funcion que te planteo un modelo a seguir seria mas o menos:
- Código: Seleccionar todo
function automagicamente($usuario){
$archivo= fopen("La direccion al archivo","a+"');
$ID=0;
while(!feof($archivo){
$linea=fgets($archivo);
preg_match("/(\S*)\s(\S*)\s(\S*)/", $linea, $salida);
$user= $salida[1];
$ID=$salida[3];
if($user==$usuario){
$output = array($usuario, 0);
return $output;
}
}
$output = array("",$ID);
return $output;
}
aclaraciones en el anterior codigo:
-con fopen se abre el archivo y con a+ se le dice que se dan permisos de lectura y escritura.
-con feof pregunta si se ha llegado al final del archivo.
-fgets devuelve una linea del archivo y avanza hacia la siguiente.
-preg_match evalua expresiones regulares en este caso lo delimitado entre // primer parametro es el patron, el segundo con lo que se comparara el tercero un array donde ira lo que se coloque en parentesis
-en el patron (\S*)\s(\S*)\s(\S*), \S significa caracteres que no sean espacios en blanco, * significa 0 ó mas del patron anteriormente dicho, \s significa espacio en blanco y los parentesis delimitan lo que se quiere que salga a salida.
-el patron completo significa: mandar al segundo parametro de salida todos los caracteres hasta que se encuentre un espacio en blanco, luego envie los siguientes caracteres hasta el siguiente espacio en blanco al tercer parametro salida, y finalmente el resto de caracteres al cuarto parametro de salida.
-es decir si la secuencia es: Ares supass 2 a salida iria: Ares a la segunda posicion de salida, supass a la tercera, 2 a la cuarta.
si inicias sesion como ya tienes el ID, te recomiendo una funcion para buscar el resto de datos del usuario en el otro archivo, dado que se tiene seguridad que el usuario existe, debe haber un y solo un registro con ese ID en el archivo de datos del usuario, entonces la funcion mas o menos seria como la anterior, solo que esta vez mandas a compara el ID obtenido al logearse, con el id de la primera columna del archivo, si coincide devolver el string completo y ya lo trataras como quieras.
si te vas a registrar, luego de saber que el nombre de usuario no existe, y haber obtenido el ultimo ID del usuario registrado, el ID del nuevo usuario sera ID+1, por lo que se registran primero los datos de conexion, usuario, contraseña e ID+1, y luego en el archivo de datos tambien se ingresan los datos del usuario, ID+1 edad sexo usuario activo.
la escritura se hace con el comando fwrite($archivo, "cosas a escribir"); lo cual se añadira al final del archivo.
todo lo dicho hasta aca te serviria para esas dos cosas, para ya lo de temas y respuestas en mi concepto necesitarias otros dos archivos.
un primer archivo que sea para los temas, simplemente los temas, es decir, identificador de tema, nombre de tema.
otro archivo donde estarian todas las respuestas y sus parametros: identificador de tema, fecha de envio, autor, contenido. a grandes rasgos con eso te alcanzaria.
el primer archivo es el que se le podria mostrar al usuario para la navegacion, que el escoja el tema y cuando de click ahi muestre las respuestas y todo lo correspondiente al tema revisando en el otro archivo.
seguire editando este mensaje para mas concejos xDD cualquier duda por mp