Dudas varias con PHP

Josepanaero

Saludos!

Estoy empezando con esto del php y me estoy haciendo un foro. Por ahora me funciona (se postean bien los mensajes, tengo controlados los posibles errores q pueden haber, como impedir q se introduzcan mensajes vacíos, no permitir q se introduzcan manualmente post con ids incorrectas y cosillas así). De todas formas, tengo varias dudas, a ver si alguien me puede aclarar un poco ^^

En primer lugar, he leído q es bueno siempre usar superglobales ($POST y todo eso) y mi pregunta es ¿por qué?
Pongo un ejemplo. Si tengo una variable en la página adios.php q se llame $id y se la paso desde hola.php mediante un formulario de tipo post, ¿pq habría que, en adios.php, recibir esa variable mediante $
POST[id] y no simplemente poniendo $id? Es para evitar que nadie la pueda poner directamente en la barra de direcciones??? Si es sólo por eso, si alquien quisiera, podría crearse una página con un formulario de tipo post que apuntase a adios.php y que le enviase la variable id, y el adios.php se la tendría q tragar, no???

Otra cosilla q me gustaría poner en el foro q estoy haciendo es esto: Seguro q habéis visto alguna vez los foros estos de phpbb en los q te salen una lista con los smileys q hay disponibles y, al hacer click en uno de ellos, te pone el código necesario (por ejemplo, :wink: ) en el cuadro de texto. Me gustaría saber si esto se hace mediante alguna función de php (supongo q no) o si se hace con javascript o algo por el estilo (esto parece más probable jeje).

Abreu

Lo primero es porque $id se puede referir a variables distintas mientras que $POST[id] es solo una. Ademas $POST[id] funcionara en cualquier servidor, $id depende de la configuracion.

Lo segundo se hace con JavaScript.

erdanblo

Te digo que he usado casi siempre $id en vez de $_POST[id] y estoy empezando a pensar que lo segundo es mucho mejor por lo que te han contestado ya...

Whose

Eso que dices de los smiles se hace con javascript y sustituir el codigo del smile por la imagen se puede hacer con la funcion str_replace() de PHP.

Josepanaero

#4, lo de sustituir el código con str_replace ya lo tenía ^^ Era lo otro lo q no sabía cómo se hace. Si alguien que sepa un poco de Javascript me puede poner la función que hace eso (o explicarme un poco), se lo agradecería un montón, pq de JavaScript estoy pegadísimo.

Respecto a lo que hablábamos del _POST... Ésa es la única razón? Osea, la única razón para usar POST es q si, por ejemplo, en un código de unas 600 líneas he usado otra variable q se llama $id y ya no lo recuerdo, para no confundirme con ésa y usar la q viene del formulario tendría q poner $POST, no? Sí es sólo por eso, paso de usar_POST xD

Un saludo

Carcass

#5 Es porque no funciona en muchos servidores. De hecho, creo que ya viene deshabilitado en las nuevas instalaciones.

Y es mejor usar $HTTP_POST_VARS que $_POST, que aún hay muchos servidores antiguos por ahí sueltos...

Josepanaero

Ok!

Otra duda: Estoy creando un sistema de registro de usuarios y tal. Me gustaría guardar las contraseñas en una base de datos, pero encriptadas, pq no quiero ver las contraseñas de la gente q se registra en mi web (no quiero ser cabronazo xD). Entonces había pensado encriptarlas con el algoritmo md5, pero claro, a partir de los 32 dígitos q genera dicho algoritmo, es imposible descifrar cuál fue su entrada original. El problema viene pq me gustaría hacer un formulario de estos típicos de "Recordar Contraseña", pero si la tengo encriptada de esta forma, pues no podría hacerlo. A ver si alguien me puede aconsejar sobre qué hacer al respecto.

Gracias.

Whose

Lo que dice skingorz es lo mejor, generar una nueva contraseña y enviarsela al email.

Josepanaero

Muchas gracias, #8 y #9. Lo de hacer q ponga su mail y lo de cambiar la contraseña en su perfil ya lo había pensado, pero lo de generar una aleatoria no se me había ocurrido, y es una muy buena idea :)

De todas formas, se me ocurre q puede haber algún gracioso q se dedique a darle a recordar password para toda la gente y entonces sería un caos pq podría cambiarle la contraseña a todo el mundo. Para solucionar esto se me ocurren dos soluciones:

1.- Crear un nuevo campo en la tabla de usuarios llamado password2 (el cual lo generaría con un valor aleatorio al darle a Recordar Password) y hacer que toda la gente pueda logearse usando el password original o el password2.

2.- Enviar a su correo un mail indicándole su nueva contraseña (generada aleatoriamente), la cual le será activada si visita un link en las próximas 24 horas. Dicho link será del estilo www.mipagina.com/recordar.php?key=1938459834593. Este número será de tipo de dato timestamp y corresponderá a la fecha en la que se pidió que se cambiara la password, para así poder compararlo fácilmente y ver si han pasado 24h desde que se pidió. De todas formas, si alguien descubriese q mi sistema funciona así, podría dedicarse a dar por culo, así q la única forma de asegurarme de q esto no sucede sería crear una nueva columna en la tabla de usuarios que valiese 1 si se ha solicitado un cambio de pass para ese nick o 0 en el caso contrario.

A mí el sistema que más me gusta es el segundo, pero me gustaría conocer la opinión de alguien más q pudiese tener un tercer sistema q fuese mejor, o una mejora de los dos que he dicho.

Un saludo!

Whose

El 2º esta mejor, tampoco creo que la gente tenga tan mala idea pero puedes hacer que al hacer un lost pass te envie un email con su ip y asi poder banearlo.

Usuarios habituales

  • Whose
  • Josepanaero
  • Carcass
  • erdanblo
  • Abreu