Buenos dias a todos.
Abro este hilo para informaros que voy a intentar iniciar un nuevo proyecto de desarrollo en equipo. En esta ocasión el equipo (elegido) intentará desarrollar desde cero una página web. Antes de nada me gustaria pedir por favor que no preguntasen por la temática de la web ya que mi objetivo no es mantener una web sino unicamente desarrollarla. Seguramente os parezca una contradiccion lo que estoy diciendo y os preguntais: "¿Para que quiere desarrollar una web si no se va a poner en funcionamiento?". La respuesta es muy simple, este reto quiero que sirva principalmente para aprender. Esto no implica que si en un futuro se ve utilidad a lo que estemos desarrollando no lo pongamos en funcionamiento para que lo aproveche la gente.
Con esta breve introduccion paso a explicar ciertas caracteristicas que busco para formar un equipo cualificado para desarrollar la web:
Si cumple alguno/s de estos requisitos y quiere participar es muy importante tener en cuenta los siguientes puntos basicos:
Os preguntareis por qué estoy buscando a un grupo tan definido. La respuesta es facil, seguramente poca gente, que este interesada, conocerá a fondo PHP, AJAX, Javascript. Por eso si controlas otro lenguaje de programacion a un nivel aceptable no te resultará tan dificil desarrollar en PHP, Javascript o lo que se te ponga por delante.
Los interesados que escriban por favor un comentario abajo. Se aceptan también sugerencias, ideas,...
NOTA: No se tomen todos los requisitos al pie de la letra ya que son muy moldeables. En caso de no controlar todos, no se preocupen ya que al formar un equipo aprenderán al lado de otros las ramas que le faltansen. Lo que si voy a seleccionar es un equipo equilibrado y con el mismo nivel a ser posible.
NOTA PARA GENTE SIN EXPERIENCIA: Todas las personas que deseen participar en el proyecto pero no presenten las caracteristicas pedidas, pueden perdir a un miembro del equipo que sea su tutor. Informacion general:
Equipo temporal para el desarrollo web:
Actualizacion 07/02/2010:
A continuación os pongo a direccion de los tutoriales para los nuevos: http://librosweb.es/
Recomiendo leer Introducción a XHTML e Introducción a CSS tanto si ya los conoces como si no.
En cuanto AlmamuPP confirme nos ponemos en contacto para ver como vamos a llevar a cabo el proyecto. En caso de que pase unos dias y no confirme empezaremos sin él dandole la oportunidad de unirse más tarde.
Si alguien quiere hacerse cargo de mario que escriba un comentario y sino lo hacemos entre todos.
El proyecto va a ir empezando a funcionar de la siguiente manera:
Cabe destacar que podeis hacer grupitos para desarrollar el codigo y luego ponerlo en comun con el resto de integrantes. Eso ya es a vuestra elección.
Las partes que hay que ir desarrollando se irán colocando en los comentarios a este post.
EVO PSP = 2.01 > 2.60 > 1.5 > 3.02OE-A > 3.02OE-B > 3.03OE-A > 3.03OE-A' > 3.03OE-B > 3.03OE-C > 3.10OE-A > 3.10OE-A' > 3.52M33 > 3.52M33-2 > 3.52M33-3 > 3.52M33-4 > 3.71M33 > 3.71M33-3 > 3.7
Retomar?
Me gustaría retomar este proyecto, a ver que dicen :P
Un saludo.
Me gustaria
Me gustaria unirme como tuturado
Yo de momento estoy retirado
Mi falta de tiempo me obliga a dejar algunos de mis proyectos.
Concuerdo
Concuerdo contigo me ofrezco para diseño
Una pausa
En este verano no creo que avance mucho en esto (vacaciones, scenery y otros asuntillos me van a tener algo atareado) cuando pueda intentare retomar el proyecto.
Saludos.
Más que añadir métodos
Para manejar esas excepciones, he agregado if's. Y he coregido los errores anteriores =P. A ver si así esta bien:
UserBasic.php:
Database.php:
Un saludo.
Para recibir ayuda por parte de otros usuarios más rápidamente, recomendamos que pongas títulos descriptivos y no utilices abreviaturas (estilo MSN) en tus post de los foros. Recuerda que accediendo al Manual del perfecto forero y las Normas de la Comunidad aprenderas trucos para resolver tus dudas antes.
No preguntes por MP, mejor pregunta aquí.
Excepciones
Los lenguajes de programacion modernos ofrecen unas estructuras para lanzar y capturar excepciones. PHP desde la version 5 incorpora esta funcionalidad. Te la detallo un poco a continuacion y si lo deseas puedes ampliar con Google.
Imaginate que estamos desarrollando el codigo y en un punto se produce una situacion anomala y por tanto tenemos que notificarla. Para ello creamos y provocamos una excepcion mediante la estructura: throw new
Exception("Mensaje que se desea transmitir");
A partir de que se ejecuta ese codigo de lanzamiento todo lo que se encuentre detras no se va a ejecutar.
Ahora que ya tenemos una excepcion lanzada (una excepcion puede estar lanzada por el lenguaje de programacion como puede ser division entre cero) esta puede ser capturada en otra parte del codigo. La estructura es try-catch
try{
En esta parte va el codigo que podria lanzar la excepcion
}catch Exception {
Si se lanza la excepcion no se ejecutaria lo que quedase del try y se pasaria a este bloque para tomar las decisiones correspondientes, es decir, en este bloque se trata la excepcion.
}
Te informo que se pueden crear excepciones especificas de forma que puedas capturar una a una y no todas en la generica Exception.
EVO PSP = 2.01 > 2.60 > 1.5 > 3.02OE-A > 3.02OE-B > 3.03OE-A > 3.03OE-A' > 3.03OE-B > 3.03OE-C > 3.10OE-A > 3.10OE-A' > 3.52M33 > 3.52M33-2 > 3.52M33-3 > 3.52M33-4 > 3.71M33 > 3.71M33-3 > 3.7
:-O
Eso es totalmente nuevo XDDD. No lo había visto en ningún otro lenguaje antes...
Investigaré sobre él y me podré con los archivos ;-P
Un saludo.
Edito: Me ha surgido una duda =P:
Necesito un try { ... } catch (customException $e) {echo $e->errorMessage(); } por cada throw new cutomException(...); o con uno solo para varias excepciones alcanza?
Para recibir ayuda por parte de otros usuarios más rápidamente, recomendamos que pongas títulos descriptivos y no utilices abreviaturas (estilo MSN) en tus post de los foros. Recuerda que accediendo al Manual del perfecto forero y las Normas de la Comunidad aprenderas trucos para resolver tus dudas antes.
No preguntes por MP, mejor pregunta aquí.
Entendido?
Seria de la siguiente forma:
try{
}catch (exception1 $e){
}catch (exception2 $e){
}
Es decir un try y luego todas las excepciones que puedan producirse. De esta forma puedes capturarla y tratarla de forma independiente y distinta
EVO PSP = 2.01 > 2.60 > 1.5 > 3.02OE-A > 3.02OE-B > 3.03OE-A > 3.03OE-A' > 3.03OE-B > 3.03OE-C > 3.10OE-A > 3.10OE-A' > 3.52M33 > 3.52M33-2 > 3.52M33-3 > 3.52M33-4 > 3.71M33 > 3.71M33-3 > 3.7
No estoy seguro de entenderlo del todo...
Mira este trozo y dime si esta bien para revisar lo demás:
Para recibir ayuda por parte de otros usuarios más rápidamente, recomendamos que pongas títulos descriptivos y no utilices abreviaturas (estilo MSN) en tus post de los foros. Recuerda que accediendo al Manual del perfecto forero y las Normas de la Comunidad aprenderas trucos para resolver tus dudas antes.
No preguntes por MP, mejor pregunta aquí.
Database.php y UserBasic.php
Dejo los dos aquí. El Databasic.php corregido y el UserBasic.php nuevo:
Un saludo.
Para recibir ayuda por parte de otros usuarios más rápidamente, recomendamos que pongas títulos descriptivos y no utilices abreviaturas (estilo MSN) en tus post de los foros. Recuerda que accediendo al Manual del perfecto forero y las Normas de la Comunidad aprenderas trucos para resolver tus dudas antes.
No preguntes por MP, mejor pregunta aquí.
Buen codigo
Muy buen codigo. Enhorabuena, estas haciendo un trabajo fascinante.
Dije anteriormente que poner el puntero $this no era obligatorio en la mayoría de los casos (cuando termine las clases creare un post detallando el uso de $this). Sin embargo en este proyecto siempre lo vamos a declarar para evitar futuros conflictos y para llevar un convenio.
Fallos:
Vamos a esperar haber si el resto del equipo desea enviar codigo y si no seguimos mejorando que aun queda mucho hasta que se pueda considerar estos dos archivos como versiones funcioneles y finales. XD
EVO PSP = 2.01 > 2.60 > 1.5 > 3.02OE-A > 3.02OE-B > 3.03OE-A > 3.03OE-A' > 3.03OE-B > 3.03OE-C > 3.10OE-A > 3.10OE-A' > 3.52M33 > 3.52M33-2 > 3.52M33-3 > 3.52M33-4 > 3.71M33 > 3.71M33-3 > 3.7
One month later...
I realize you've answered my comment XDDD.
Un saludo.
Para recibir ayuda por parte de otros usuarios más rápidamente, recomendamos que pongas títulos descriptivos y no utilices abreviaturas (estilo MSN) en tus post de los foros. Recuerda que accediendo al Manual del perfecto forero y las Normas de la Comunidad aprenderas trucos para resolver tus dudas antes.
No preguntes por MP, mejor pregunta aquí.
Exacto
Ya es correcto XD.
Creo recordar que el codigo ya podria ser usable en una web. Asi que si quieres puedes crearte la infraestructura o mas tarde añadiré yo un simple codigo para ir probandolo.
Ya hemos conseguido un codigo usable pero ¿que le falta?
EVO PSP = 2.01 > 2.60 > 1.5 > 3.02OE-A > 3.02OE-B > 3.03OE-A > 3.03OE-A' > 3.03OE-B > 3.03OE-C > 3.10OE-A > 3.10OE-A' > 3.52M33 > 3.52M33-2 > 3.52M33-3 > 3.52M33-4 > 3.71M33 > 3.71M33-3 > 3.7
Faltan varias cosas... XDDD
Faltan los datos del server, los archivos HTML y los CSS (Y si aún no ha sido creada, una DB con una estructura que se adapte al código del Database.php)...
Se me esta escapando algo? XD
Para recibir ayuda por parte de otros usuarios más rápidamente, recomendamos que pongas títulos descriptivos y no utilices abreviaturas (estilo MSN) en tus post de los foros. Recuerda que accediendo al Manual del perfecto forero y las Normas de la Comunidad aprenderas trucos para resolver tus dudas antes.
No preguntes por MP, mejor pregunta aquí.
Bien, bien
Eso falta para que el codigo creado pueda ser utilizado y sea presentado visualmente,...
Yo me referia a que le faltaba a los dos codigos creados (scripts).
1.- Uso de excepciones para controlar situaciones excepcionales como que no existe un usuario, no se ha podido conectar con la base de datos,...
2.- Las excepciones implican que ciertos elementos se tenga que tener cierto control como puede ser que el email sea valido o no. Es decir falta por construir esos metodos.
3.- Seguridad. Estos scripts son vulnerables a inyeccion SQL. Cuando se programa webs hay que tener mucho cuidado con inyecciones SQL y otro tipos de ataques que en esta ocasion no vamos a controlar. La seguridad de la inyeccion SQL la veremos mas adelante.
Bueno ya sabeis que es lo que teneis que controlar. Emails y nombres son adecuados y uso de excepciones.
EVO PSP = 2.01 > 2.60 > 1.5 > 3.02OE-A > 3.02OE-B > 3.03OE-A > 3.03OE-A' > 3.03OE-B > 3.03OE-C > 3.10OE-A > 3.10OE-A' > 3.52M33 > 3.52M33-2 > 3.52M33-3 > 3.52M33-4 > 3.71M33 > 3.71M33-3 > 3.7
Aaaa, ok.
Pero esas excepciones (al menos la de error de conexión y la de email/pass inconrrecto al loguearse) no has sido ya controladas?
Creo que solo faltaría la de si el eMail es valido o no...
Para recibir ayuda por parte de otros usuarios más rápidamente, recomendamos que pongas títulos descriptivos y no utilices abreviaturas (estilo MSN) en tus post de los foros. Recuerda que accediendo al Manual del perfecto forero y las Normas de la Comunidad aprenderas trucos para resolver tus dudas antes.
No preguntes por MP, mejor pregunta aquí.
Nunca antes
Había trabajado con POO (Sólo estudié (Y cuando tengo tiempo sigo) un poco de Java. Pero luego la secundaria se metió en la mitad XD). He completado el Database.php. Lo posteo aqui y dime si esta bien para comenzar con el otro...
Y tengo unas duda.
Para que sirve la función __construct? Y el $this->$x = $x?
Y si no me equivoco, estas funciones se usaría así: Database.connect() Database.close() y Database.query($query), no?
Un saludo.
Para recibir ayuda por parte de otros usuarios más rápidamente, recomendamos que pongas títulos descriptivos y no utilices abreviaturas (estilo MSN) en tus post de los foros. Recuerda que accediendo al Manual del perfecto forero y las Normas de la Comunidad aprenderas trucos para resolver tus dudas antes.
No preguntes por MP, mejor pregunta aquí.
Dudas razonables
MiBaseDatos = new Database(x, y, z);
Se puede ver que no se ha llamado al método __construct de forma ímplicita, sino que se ha llamado a su clase directamente, en este claso Database. Esta forma de trabajar suele ser muy común en POO.
mysql_connect($this->hostDB, $this->userNameDB, ...
Si se pone $hostDB y $userNameDB, se hace referencia a otras variables. un ejemplo se puede si en el código que has puesto tú ponemos un método llamado TestThis()
Database.close() y Database.query($query), no?. No, Database es el nombre de la clase. Te voy a poner un ejemplo con un vehículo, tenemos una clase vehículo que se puede mover y parar, no podemos mover un vehículo, porque es algo genérico, podemos mover un modelo de coche en concreto, un coche determinado. Ejemplo:
Esto en tu ejemplo, no sería "una base de datos" (un vehículo), sino "tu base de datos" (tu vehículo) sería
LuaDiE: Crea en Lua sin teclear código. Compatible HM7, HMv2, LuaPlayer, LuaDEV y PGE.
Lo de las clases, metodos y
Lo de las clases, metodos y demás, me quedo más que claro. Gracias.
Lo que no entiendo del todo son los punteros. He leído de todo (Hasta tu tuto) y sigo sin comprenderlos. Sé que los punteron son 'variables' que contienen la dirección de memoria de alguna otra variable. Entonces en echo $this->hostDB, estamos escribiendo la dirección en donde se encuentra la variable hostDB en la memoria, no?. Y en echo $hostDB estamos escribiendo el valor de dicha variable. Si en lo anterior no me equivoque, mysql_connect($this->hostDB... estamos señalando a la dirección de la memoria. Que al mismo tiempo contiene el valor de la variable. Eso me parece un poco rebundante, por eso creo que en algo me estoy equivocando...
Un saludo.
Para recibir ayuda por parte de otros usuarios más rápidamente, recomendamos que pongas títulos descriptivos y no utilices abreviaturas (estilo MSN) en tus post de los foros. Recuerda que accediendo al Manual del perfecto forero y las Normas de la Comunidad aprenderas trucos para resolver tus dudas antes.
No preguntes por MP, mejor pregunta aquí.
Sobre $this y punteros
$this, sólo puede ser usado dentro de un método. Si tú tienes una clase Database y la clase Vehiculo, $this sólo podrás usarlo dentro de sus métodos, fuera no vale. Y por convenio, siempre se llama $this, es una variable que se crea cada vez que entras en un método y hace referencia al objeto creado(1).
Sobre los punteros, en realidad no es un puntero propiamente dicho, tal y como podría serlo en C, ten en cuenta que PHP es un lenguaje interpretado y no tienes acceso físico a la RAM. Quizás el término puntero sea incorrecto, aunque yo lo llamo así. $this, más que contener la dirección de memoria, contiene una referencia a la tabla interna con los datos del objeto, que para el caso es practicamente lo mismo.
Para no confundir, vamos a llamar a las funciones de una clase métodos, y a las variables, datos, que es como suele hacerse en POO.
$this->hostDB: Apunta al dato hostDB del objeto Database
$hostDB: Es una variable cualquiera, que coincide que se llama igual que el dato del objeto.
(1)Esto parece una tontería, pero es necesario en POO saber de dónde viene un dato en concreto, para evitar las redundancias:
Puedes llegar a tener que reescribir un montón de código. Imagina que tienes una Clase empleado. A ti te gusta llamar la variable que usas en los bucles contador:
Bien, esa misma variable la usas en tus bucles for, etc. Resulta que en la empresa han puesto un nuevo aparato que cuenta las veces que un empleado de vigilancia completa la ronda y pulsa un botón (vaaale, complicado y rebuscado, pero es que cualquiera encuentra un ejemplo así en frío :P). Y hay que guardarlo en el dato "contador". Tendrías un gran problema, eliminar cualquier referencia a tu variable contador porque se crea una confusión con el dato de la clase. Usando $this->contador se sabe "qué contador" se está usando.
Rebuscando un poco más nos encontramos con la herencia. Imaginemos que la clase vigilante desciende de la clase trabajador, el trabajador tiene un contador, por ejemplo se usa en unas horas que hecha, y el vigilante tiene un contador que se refiere a sus rondas.
Ese es el contador del vigilante, pero ¿como muestras el del empleado?, referencias a su clase padre:
echo parent::contador;
En POO, los datos debido a la herencia y a conflictos con variables, pueden liar bastante, de ahí que se usen esas referencias.
Un saludo y perdón por el ladrillo... xDDD
LuaDiE: Crea en Lua sin teclear código. Compatible HM7, HMv2, LuaPlayer, LuaDEV y PGE.
Perfecto.
Ya lo tengo bastante claro. Muchas gracias :)
Un saludo.
Buen trabajo
Buen trabajo el codigo es totalmente correcto. Sin ningun fallo apreciable a primera vista.
Ahora me encuentro con dos semanas de examenes así que hasta que no termine no voy a poder seguir explicando la programacion orientada a objetos. En la proxima lección os explicare los punteros, la diferencia entre metodos de objetos y metodos de clase y como utilizar los objetos desde fuera, es decir, como se crean y se utilizan.
EVO PSP = 2.01 > 2.60 > 1.5 > 3.02OE-A > 3.02OE-B > 3.03OE-A > 3.03OE-A' > 3.03OE-B > 3.03OE-C > 3.10OE-A > 3.10OE-A' > 3.52M33 > 3.52M33-2 > 3.52M33-3 > 3.52M33-4 > 3.71M33 > 3.71M33-3 > 3.7
Proyecto (una vuelta de tuerca)
NOTA: NO COMENTAR EN ESTE COMENTARIO
25/05/2010:
1-Modularizando y estableciendo jerarquías
Para ir empezando vamos a establecer las partes del proyecto. Nuesto objetivo es crear modulos los más independientes posibles para ser reutilizados en este u otros proyectos sin necesidad de copiar y pegar. Con este objetivo apareció la programacion orientada a objetos de la que vamos a hacer uso en este proyecto.
En primer lugar vamos a crearnos las distintas clases que vamos a utilizar en ficheros distintos que llevaran el mismo nombre (coincidiendo mayusculas y minusculas):
Leyenda:
Los dos ficheros que tenemos que crear iran situados en una carpeta llamada "class" dentro de la carpeta donde esteis desarrollando el proyecto.
2-Database
En el archivo database que corresponde con la siguiente estructura segun lo especificado arriba:
Ya estamos utilizando objetos ya que esta clase crea una instancia u objeto. Los objetos se crean mediante el contructor que en la mayoria de los lenguajes se especifica con el mismo nombre que la clase. PHP aparte de poder especificarlo con el mismo nombre puedes hacer uso de __construct(...).
Los objetos suelen tener atributos (que son variables controladas unicamente por el propio objeto creado). Antes de continuar y para evitar confusiones voy a señalar un breve matiz:
Para aclarar un poco más esto imaginemos una clase que se llama Automoviles y presenta un atributo llamado Ruedas. Si creamos un objeto llamado Coche a partir de la clase Automoviles el atributo recibirá 4. Sin embargo, si creamos un objeto llamado Moto a partir de la clase Automoviles
el atributo recibirá 2.
Automoviles es la clase. Moto y Coche es el objeto. Ruedas es el atributo. ¿Ha quedado claro la noción basica?
Mediante el constructor iniciamos los atributos para cada objeto. En nuestro caso todos los objetos que creemos a partir de Database se construirán con un nombre, un host, una contraseña,... ya que serán los datos necesarios para acceder a una base de datos.
Como podeis observar los atributos delante llevan la palabra reservada private. Esto es debido a que nosotros queremos que nadie desde fuera pueda modificar los atributos, cuando me refiero a fuera quiero decir fuera del objeto. El objeto tiene que ser el unico que debe modificar los atributos. Nosotros sin embargo si podemos crear metodos (nombre que reciben las funciones y procedimientos cuando hablamos de programacion orientada a objetos) que permitan desde fuera modificar los atributos. Pero nunca hay que permitirlo hacerlo directamente. Un ejemplo de metodo sería: public function connect(){...}
Espero que los terminos más basicos de programacion orientada a objetos os vayan sonando. Ahora me gustaría que adaptarais vuestros codigos que habeis enviado a la estructura ofrecida arriba.
3- UserBasic
A partir del modelo anterior intentad formar una clase UserBasic.
Si teneis cualquier duda no dudeis en postearla pero no lo hagais repito en este comentario
Manos a la obra!!!
EVO PSP = 2.01 > 2.60 > 1.5 > 3.02OE-A > 3.02OE-B > 3.03OE-A > 3.03OE-A' > 3.03OE-B > 3.03OE-C > 3.10OE-A > 3.10OE-A' > 3.52M33 > 3.52M33-2 > 3.52M33-3 > 3.52M33-4 > 3.71M33 > 3.71M33-3 > 3.7
Validar registros
Voy a aportar mi granito de arena sobre el tema de validar y gestionar los registros, es como lo hago yo, hay muchos más métodos, pero este es el que a mí mas me gusta, más adelante explico las ventajas. No voy a poner código, sólo el concepto, ya que este hilo se trata de desarrollar el código por uno mismo.
Es bueno tener una tabla aparte de altas y poner un campo nuevo en la tabla de usuarios. Este campo, podría llamarse "activado", un campo lógico que por defecto es false y que nos dice si dicho usuario ha activo su registro.
Estructura básica de la tabla de altas:
Bien, ahora enviamos el mail al usuario con un enlace similar a este
http://www.lapaginaquesea.com/validad_usuario.php?usuario=pe...
Cuando alguien reciba ese mail, y pinche en la validación, tendremos un código en el que haremos lo siguiente:
Ahora voy a explicar el porqué de usar una segunda tabla de altas, se puede hacer todo en la tabla de usuarios, pero es más facil crear una rutina que elimine en la tabla altas las que tenga una fecha superior a X días y a la vez borre dichos usuarios de la tabla usuarios. Permite hacer una purga de datos inútiles mucho más fácil.
LuaDiE: Crea en Lua sin teclear código. Compatible HM7, HMv2, LuaPlayer, LuaDEV y PGE.
Excelente
Muchas gracias por ayudarnos en el concepto, sin dudas es una gran respuesta, bien pensada y con gran lógica, espero poder llevarlo a la practica con buenos resultados.
Y los "maestros"
Me gustaría ver código de "los maestros", así podemos aprender algo mas.
Otra funcione que me parecen interesante pero no se como agregarla: validar el registro mediante un mensaje a el email.
sobre el mail...
tengo una idea que puede parecer un poco 'rebuscada' pero puede funcionar.
en lo que consiste mi idea es que en vez de que la funcion 'register()' agregue al usuario en la db, esta funcion genere una pagina (esto es mas o menos facil hacerlo) y que con la funcion 'mail' nativa de php, de ese link al usuario. y que esa pagina generada por la funcion 'register' sea la que agregue al usuario a la db. y como medida de seguridad adicional, una vez agregado ese user, la pagina de checkeo del mail se autoelimine
Para recibir ayuda por parte de otros usuarios más rápidamente, recomendamos que pongas títulos descriptivos y no utilices abreviaturas (estilo MSN) en tus post de los foros. Recuerda que accediendo al Manual del perfecto forero y las Normas de la Comunidad aprenderas trucos para resolver tus dudas antes.
No preguntes por MP, mejor pregunta aquí.
continuacion...
obviamente, para que no se sobreescriban las paginas, el nombre seria almacenado en una variable del tipo float que iria aumentando. y esa es mi idea XD. decir que no tengo un teclado como la gente. si no haria un script 'demo' =P. si se perdieron en alguna parte diganme XD.
un saludo.
pd: me autorespondo porque la psp, no se por que, no me dejo escribir mas XDDD
Para recibir ayuda por parte de otros usuarios más rápidamente, recomendamos que pongas títulos descriptivos y no utilices abreviaturas (estilo MSN) en tus post de los foros. Recuerda que accediendo al Manual del perfecto forero y las Normas de la Comunidad aprenderas trucos para resolver tus dudas antes.
No preguntes por MP, mejor pregunta aquí.
No hay codigo XD
No voy a sacar por mi parte ningún codigo ya que el proyecto no se trata de eso si no de a partir de ahora con lo que tenemos ir mejorando los metodos y funciones e ir tapando los huecos de seguridad de forma que cuando se finalice se obtenga un codigo como el que tengo desarrollado o mejor. Si lo saco no tiene gracia entonces y habria muchas cosas que no entenderíais si no estais familiarizados con algunos conceptos de programación.
Cuando tenga un poco de tiempo (estoy liado con la universidad) empezaremos a mejorar el codigo
EVO PSP = 2.01 > 2.60 > 1.5 > 3.02OE-A > 3.02OE-B > 3.03OE-A > 3.03OE-A' > 3.03OE-B > 3.03OE-C > 3.10OE-A > 3.10OE-A' > 3.52M33 > 3.52M33-2 > 3.52M33-3 > 3.52M33-4 > 3.71M33 > 3.71M33-3 > 3.7
Terminando
Terminando con algo básico pero funcional:
Dando de alta al nuevo usuario en nuestra base de datos.
Y por fin, las primeras lineas que nuestros futuros usuarios veran, el formulario de registro.
Viendo que...
Se está empezando con el código (esta parte me gusta ^^ XDDD), posteo el user.php. Obviamente, dependiendo de como sea la db, habrá que modificarle una que otra cosa...
Un saludo.
Para recibir ayuda por parte de otros usuarios más rápidamente, recomendamos que pongas títulos descriptivos y no utilices abreviaturas (estilo MSN) en tus post de los foros. Recuerda que accediendo al Manual del perfecto forero y las Normas de la Comunidad aprenderas trucos para resolver tus dudas antes.
No preguntes por MP, mejor pregunta aquí.
Muy buen codigo
Buen codigo aunque hay varias cosas discutibles que posteriormente hablaremos cuando recibamos el codigo del resto de la gente.
Para que haya uniformidad voy a decir la estructura de la base de datos. Va a ser una tabla llamada users que contendra un campo id (int), otro email (String) y otro password (String codificado sha512).
EVO PSP = 2.01 > 2.60 > 1.5 > 3.02OE-A > 3.02OE-B > 3.03OE-A > 3.03OE-A' > 3.03OE-B > 3.03OE-C > 3.10OE-A > 3.10OE-A' > 3.52M33 > 3.52M33-2 > 3.52M33-3 > 3.52M33-4 > 3.71M33 > 3.71M33-3 > 3.7
Añado algo mas
Los datos de conexión los llamare "datos_conexión.inc" :
Una tabla que llamare "datos" y trabaje sobre la cabe de datos creada anteriormente (usuarios).
Security error!!
Cuidado con ese código, la primera linea es muy inocente, pero tienes una gran vulnerabilidad. Si un usuario teclea:
http://lapaginaquesea.com/datos_conexion.inc
Tiene toda la información disponible para conectarse por MySql.
Yo a los includes, los nombro como fichero.inc.php, de esta forma te aseguras de que el servidor lo va a procesar como un script php y no mostrará nada. Está claro que puedes configurar apache para que trate los .inc como .php pero esto es depender de una configuración, y si cambias de servidor o se modifica la conf. del mismo, volvemos a ser vulnerables.
Un saludo.
LuaDiE: Crea en Lua sin teclear código. Compatible HM7, HMv2, LuaPlayer, LuaDEV y PGE.
Excelente
Comentarios como este hacen darnos cuenta de la importancia de esos pequeños detalles.
Muchas gracias.
Seguridad web
Cuando desarrollemos el codigo final es entonces cuando nos centraremos en la seguridad. Primero vamos ha elaborar un codigo funcionable y luego ya le añadimos la seguridad necesaria. Yo creo que es la mejor forma en este proyecto. Aunque esta bien que la gente vaya encontrando agujeros XD
EVO PSP = 2.01 > 2.60 > 1.5 > 3.02OE-A > 3.02OE-B > 3.03OE-A > 3.03OE-A' > 3.03OE-B > 3.03OE-C > 3.10OE-A > 3.10OE-A' > 3.52M33 > 3.52M33-2 > 3.52M33-3 > 3.52M33-4 > 3.71M33 > 3.71M33-3 > 3.7
Muy bien
Excelente. Esto es lo que me gustaria conseguir que la gente participe y junto vayamos viendo los fallos y haciendo un codigo adecuado.
EVO PSP = 2.01 > 2.60 > 1.5 > 3.02OE-A > 3.02OE-B > 3.03OE-A > 3.03OE-A' > 3.03OE-B > 3.03OE-C > 3.10OE-A > 3.10OE-A' > 3.52M33 > 3.52M33-2 > 3.52M33-3 > 3.52M33-4 > 3.71M33 > 3.71M33-3 > 3.7
Gracias y bien hecho
Muy bien por tu trabajo!!! Veamos si la gente se anima a colaborar y a aprender.
A continuación te voy a comentar algunos detalles:
Me alegro que hayas comprendido correctamente las funciones pero te comento un pequeño detalle de mysql_query(): No es necesario introducirle el segundo parametro que indica el identificativo de conexion (salvo casos excepcionales). Esto lo puedes apreciar en la documentacion oficial que si observas el segundo parametro esta entre corchetes lo que significa en programacion que es opcional.
EVO PSP = 2.01 > 2.60 > 1.5 > 3.02OE-A > 3.02OE-B > 3.03OE-A > 3.03OE-A' > 3.03OE-B > 3.03OE-C > 3.10OE-A > 3.10OE-A' > 3.52M33 > 3.52M33-2 > 3.52M33-3 > 3.52M33-4 > 3.71M33 > 3.71M33-3 > 3.7
Creando la base de datos
Aquí una base de datos llamada "usuarios".
En C, ahora que estoy
En C, ahora que estoy aprendiendo las estructuras, sería tan simple hacer una base de datos (en este ejemplo pongo sólamente nombre de user y pass, pero es fácilmente ampliable) como:
En ese ejemplo creo una estructura, con una array de mil elementos con nombre y pass cada uno. No se que hace la tuya, pero seguro que es mejor que la mía xD.
PD: Una base de datos es lo que he hecho yo no? :p
¡Iníciate en Linux fácilmente! Sólo entra aquí y comprueba que distribución se adapta mejor a tí.
Mi review: iPod Touch 4G
La verdad no se mucho de C
No me he metido en el mundo de C (y no creo que lo haga, al menos de forma directa, preferiría entrar a C++).
Por lo que puedo ver de tu código; veo una estructura que pide una contraseña que no supere los 15 caracteres, un nombre que no supere los 10 caracteres y que el máximo de la estructura sean 1000 entradas de información.
Por otro lado, creo que el fin de crear una base de datos para un registro es que no se limite y se puedan registrar hasta el infinito y más aya ... :p
De todos modos espera a que alguien que entienda algo más de C responda sobre el funcionamiento de tu estructura.
Saludos.
Pues te respondo yo
Realmente, cualquier motor SQL, al final trabaja internamente como estructuras de C/C++, todo ello camuflado con una capa de funciones y métodos que lo hace todo mucho más fácil, sería un equivalente a Lua y a C, que tanto se ven por la sección de PSP. Problemas de hacer una base de datos en C/C++ con un array de structuras "a pelo":
Esta es la forma en que trabajan los motores de BD internamente, afortunadamente, hay varios motores disponibles, que porsupuesto tienen su API En C/C++ (MySql, PostgreSQL, SQLite),... no hace falta reinventar la rueda.
Para listas sencillas, y profundizar en el manejo de punteros y aprender más de C/C++, las veo viables e interesantes, aunque mejor usar un motor de BD.
Un saludo.
LuaDiE: Crea en Lua sin teclear código. Compatible HM7, HMv2, LuaPlayer, LuaDEV y PGE.
Te dije que se puede modificar
Puedes poner en la variable pass 3000 de índice como si quieres crear 100000000000000 de users.
Mi intención:
Como ves, en ese pseudo código demuestro que es más fácil de lo que parece.
¡Iníciate en Linux fácilmente! Sólo entra aquí y comprueba que distribución se adapta mejor a tí.
Mi review: iPod Touch 4G
Yo me retrasare un poco
La verdad estoy teniendo algún que otro problemilla al haber creado la base de datos atravez de phpmyadmin, si no le encuentro solución en dos días la creare manualmente, pero eso me retrasara como mínimo hasta el miércoles.
Creacion de pagina web
Bueno vamos a ir empezando a hacer cosillas interesantes para cualquier web:
Como medida de aprendizaje no se os dará mas detalles de como se interactua con bases de datos asi pues buscar informacion e ir mandando vuestras soluciones.
Saludos
PD: Cualquier duda irla posteando.
PD2: Todo proyecto debe ir bien documentado. Esto significa que cosas absurdas no se ponen y cosas necesarias sí.
PD3: Solo ha de entregarse el codigo php
Actualización
El archivo con el codigo se debe llamar "user.php" contendrá minimo dos funciones o metodos:
Vosotros decidireis que errores son necesario controlar y dar aviso.
EVO PSP = 2.01 > 2.60 > 1.5 > 3.02OE-A > 3.02OE-B > 3.03OE-A > 3.03OE-A' > 3.03OE-B > 3.03OE-C > 3.10OE-A > 3.10OE-A' > 3.52M33 > 3.52M33-2 > 3.52M33-3 > 3.52M33-4 > 3.71M33 > 3.71M33-3 > 3.7
Codigo
Ya han pasado unos dias desde que se inicio la tarea y brilla los comentarios por la ausencia de codigo y dudas XD
Tengo pensado para el Domingo 25 intentar dar por finalizado la recogida de codigo para poder empezar a debatir en grupo e idear el codigo final, asi que ir apurando vuestros envios o dudas que tengais por favor.
Si necesitais tiempo tambien decidlo porque de momento no soy adivino XD.
Saludos
EVO PSP = 2.01 > 2.60 > 1.5 > 3.02OE-A > 3.02OE-B > 3.03OE-A > 3.03OE-A' > 3.03OE-B > 3.03OE-C > 3.10OE-A > 3.10OE-A' > 3.52M33 > 3.52M33-2 > 3.52M33-3 > 3.52M33-4 > 3.71M33 > 3.71M33-3 > 3.7
session_start(); y familia...
Lo he visto en varios ejemplos y la duda es si es un método nativo del php/base de datos MySQL o es una función creada por los que crearon el ejemplo...
EDITO: Pregunto lo mismo de las fuciones mysql_connect(), mysql_error() y mysql_select_db(), mysql_query()...
Un saludo.
PD: No sé si llegue al domingo. Ya que en lo que queda de la semana tendré 2 evaluaciones más :S. Si necesito más tiempo, te lo haré saber =P
EDITO2: La funcion de registrar ya casi le termino, solo falta lustrarla =P. Pero con la de login estoy medio perdido XD. Y otra cosa: la funcion register, debe incluir el formulario de registro (tal vez le respuesta sea obvia, pero progunto igual XD).
Un saludo.
Para recibir ayuda por parte de otros usuarios más rápidamente, recomendamos que pongas títulos descriptivos y no utilices abreviaturas (estilo MSN) en tus post de los foros. Recuerda que accediendo al Manual del perfecto forero y las Normas de la Comunidad aprenderas trucos para resolver tus dudas antes.
No preguntes por MP, mejor pregunta aquí.
Session Start y PHP
session_start(); es una funcion de PHP que funciona de forma similar a cookies. Lo que se pretende con esta funcion es guardar informacion del usuario en el ordenador de este para que al cambiar de pagina por ejemplo no se tenga que logear de nuevo.
Todas las funciones mysql que has escrito se encuentran en las librerias de PHP y te permite realizar toda serie de operaciones con bases bajo mysql.
NOTA IMPORTANTE: No debeis incluir el formulario de registro, ya que el objetivo es desarrollar unicamente las funciones. El siguiente paso que demos será realizar el formulario y unir las partes.
La funcion login debe ser de la siguiente forma:
EVO PSP = 2.01 > 2.60 > 1.5 > 3.02OE-A > 3.02OE-B > 3.03OE-A > 3.03OE-A' > 3.03OE-B > 3.03OE-C > 3.10OE-A > 3.10OE-A' > 3.52M33 > 3.52M33-2 > 3.52M33-3 > 3.52M33-4 > 3.71M33 > 3.71M33-3 > 3.7
Listas.
Ya estan terminadas las dos funciones. Aunque como nunca antes había trabajado con PHP o MySQL, seguramente son un poco 'simples' por asi decirlo...
Un saludo.
PD: Las funciones las posteo aquí o cómo nos organizaremos?
Para recibir ayuda por parte de otros usuarios más rápidamente, recomendamos que pongas títulos descriptivos y no utilices abreviaturas (estilo MSN) en tus post de los foros. Recuerda que accediendo al Manual del perfecto forero y las Normas de la Comunidad aprenderas trucos para resolver tus dudas antes.
No preguntes por MP, mejor pregunta aquí.