|
144
|
Programación / PHP / Re: Registro de usuarios sin base de datos MYSQL
|
en: 23 Septiembre 2010, 01:42 am
|
Shell Root tengo una pregunta, tengo un sistema de enviar noticias pero no me funciona y tampoco me dice si hay algun error aqui esta el codigo noticias.php <? // Incluimos archivo de configuracion @include("configuracion.php"); if (!$n) { ?> <? // Funcion para borrar los directorios function deldir($dir) { while (false!==($FolderOrFile = readdir($handle))) { if($FolderOrFile != "." && $FolderOrFile != "..") { } } { $success = true; } return $success; } if($borrar) { $_GET["borrar"]; @include("noticias/$borrar.php"); // si el usuario borra un mensaje if ($_COOKIE[ucnnick] == $nick_noticia or $_COOKIE[ucnnick] == $administador) { @unlink("noticias/$borrar.php") ; for($bn=0;$bn<1000;$bn++){ @unlink("noticias/$borrar/contador.txt") ; @unlink("noticias/$borrar/$bn.php") ; } deldir("noticias/$borrar"); echo "<p>La noticia <b>$titulo_noticia</b> ha sido borrada con éxito. Haz click <a href=index.php?id=noticias>aquí</a> para regresar.<br><br>" ; } } ?> <?php // Le damos valor a las variables de configuración $Config['Path'] = "noticias/"; // Directorio donde stan los archivos a mostrar. $Config['Show'] = 20; // Numero de archivos a mostrar por páginas. $Show['20 Anteriores'] = 0; // Por defecto no se mostrara 10 Anteriores $Show['20 Siguientes'] = 0; // Por defecto no se mostrara 10 Siguientes if ($c == "") $c = 0; // Si $c no tiene valor es porque es la primera vez que se visita la página. $dir = @opendir($Config['Path']); // Abrimos el directorio donde estan los archivos $Plus = $c; // Le damos el valor de $c a $plus porque el valor de $c se perdera y lo necessitaremos mas tarde. while ($c > 0 && $elemento = @readdir($dir)) // Mientras la variable $c sea mayor de 0 saltamos archivos. { $Show['20 Anteriores'] = 1; $c--; } $Counter = 0; // Ponemos a 0 el contador // Si es la primera vez que vez añadimos 2 filas, si no lo es se las quitamos. if ($Show['20 Anteriores'] == 0) $Counter=$Counter-2; else { $c = 2; while ($c > 0 && $elemento = @readdir($dir)) // Mientras la variable $c sea mayor de 0 saltamos archivos. { $Show['20 Anteriores'] = 1; $c--; } } // Mostramos el numero de archivos que se tienen que mostrar por página. while (($Counter != $Config['Show']) && ($elemento = @readdir($dir))) { $Counter++; if (strpos($elemento1, ".php") > 0 && $elemento != "index.php") { // Asignamos el archivo sin extension ?> <? require ("noticias/$elemento2.php"); // Dia en el que se envio la noticia corta $diassemana = array("Domingo","Lunes","Martes","Miércoles","Jueves","Viernes","Sábado") ; $mesesano = array("Ene","Feb","Mar","Abr","May","Jun","Jul","Ago","Sep","Oct","Nov","Dic") ; $diasemana = date(w ,$fecha_noticia) ; $diames = date(j ,$fecha_noticia) ; $mesano = date(n ,$fecha_noticia) - 1 ; $ano = date(Y ,$fecha_noticia) ; $fecha_noticia = "$diassemana[$diasemana] $diames de $mesesano[$mesano] del $ano" ; // Espacios en la noticia corta $noticia_contenido = str_replace("\r\n","<br>",$noticia_contenido) ; // Acortamos la noticia, por eso se llama noticia corta if (strlen($noticia_contenido) > 255) { $noticia_contenido = substr($noticia_contenido,0,255).".."; } } ?> <table width="100%" border="0" cellspacing="0" cellpadding="5" style='border: #757575 1 solid'> <tr> <td class="tabla_titulo"> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td><div class="t1"><? echo $titulo_noticia ?></div></td> <td><div align="right"><? echo $fecha_noticia ?></div></td> </tr> </table> </td> </tr> <tr> <td height="28" class="tabla_mensaje"><table width="100%" border="0" cellspacing="0" cellpadding="4"> <tr> <td colspan="3"><? echo $noticia_contenido ?></td> </tr> <tr> <td width="40%"><a href="index.php?id=noticias&n=<? echo $elemento2 ?>">Ver comentarios</a> <? if ($_COOKIE[ucnnick] == $nick_noticia or $_COOKIE[ucnnick] == $administador) { echo "| [<a href='index.php?id=noticias&borrar=$secciones$elemento2'>borrar</a>]"; } ?> </td> <td width="40%"><strong>Comentarios : <? // Usuarios en linea $path2 = "noticias/$elemento2/"; // Contar el total $i = 0; { if (strpos($elemento3, ".php") > 0) { $i++; } } echo $i ; } else { echo "0"; } ?> </strong></td> <td width="20%"><div align="right"><b>Enviada por: </b><? echo $nick_noticia ?> </div></td> </tr> </table> </td> </tr> </table> <br> <?php } } // Si sobran archivos pondremos el "10 Siguientes" { $Show['20 Siguientes'] = 1; } //Cerramos el directorio ?> <div align="right"> <?php // Mostraos si es necessario el "10 Anteriores" y "10 Siguientes". if ($Show['20 Anteriores'] == 1) echo("<a href=\"index.php?id=noticias&c=".($Plus-$Config['Show'])."\">20 Anteriores | </a>"); if ($Show['20 Siguientes'] == 1) echo(" <a href=\"index.php?id=noticias&c=".($Plus+$Config['Show'])."\">20 Siguientes</a></p>"); } ?> </div> <? if ($n) { require ("noticias/$n.php"); } // Dia en el que se envio la noticia extendida $diassemana = array("Domingo","Lunes","Martes","Miércoles","Jueves","Viernes","Sábado") ; $mesesano = array("Ene","Feb","Mar","Abr","May","Jun","Jul","Ago","Sep","Oct","Nov","Dic") ; $diasemana = date(w ,$fecha_noticia) ; $diames = date(j ,$fecha_noticia) ; $mesano = date(n ,$fecha_noticia) - 1 ; $ano = date(Y ,$fecha_noticia) ; $fecha_noticia = "$diassemana[$diasemana] $diames de $mesesano[$mesano] del $ano" ; // Ponemos los espacios en la noticia extendida $noticia_contenido = str_replace("\r\n","<br>",$noticia_contenido) ; // Si en la noticia extendida hay una direccion ftp o http la interpretamos para que pueda ser visitada $noticia_contenido = preg_replace("/(?<!')(?<!<a href=\")(?<!<img src=\")(http|ftp)(s)?:\/\/[^,<\'\"\s]+/i","<a href=\"\\0\" target=\"_blank\">\\0</a>",$noticia_contenido) ; ?> <table width=100% border=0 cellpadding=5 cellspacing=0 class='tabla_principal'> <tr> <td class="tabla_titulo"><p class=t1><? echo $titulo_noticia ?></p></td> <td class="tabla_titulo"><div align=right><? echo $fecha_noticia ?></div></td> </tr> <tr> <td colspan=2 class="tabla_mensaje"> <? echo $noticia_contenido ?><br> <br> <hr> <b>Enviada por:</b> <? echo $nick_noticia ?><br> <a href="index.php?id=noticias">· Regresar a la página principal</a> <p> <p><b>Total de comentarios:</b> <? // Usuarios en linea $path2 = "noticias/$n/"; // Contar el total $i = 0; { if (strpos($elemento2, ".php") > 0) { include("noticias/$n/$elemento2"); $i++; } } echo $i ; } else { echo "0" ; } ?> <br> <br> <?php // Le damos valor a las variables de configuración $Config['Path'] = "noticias/$n/"; // Directorio donde stan los archivos a mostrar. $Config['Show'] = 5; // Numero de archivos a mostrar por páginas. $Show['5 Anteriores'] = 0; // Por defecto no se mostrara 10 Anteriores $Show['5 Siguientes'] = 0; // Por defecto no se mostrara 10 Siguientes if ($c == "") $c = 0; // Si $c no tiene valor es porque es la primera vez que se visita la página. $dir = @opendir($Config['Path']); // Abrimos el directorio donde estan los archivos $Plus = $c; // Le damos el valor de $c a $plus porque el valor de $c se perdera y lo necessitaremos mas tarde. while ($c > 0 && $elemento = @readdir($dir)) // Mientras la variable $c sea mayor de 0 saltamos archivos. { $Show['5 Anteriores'] = 1; $c--; } $Counter = 0; // Ponemos a 0 el contador // Si es la primera vez que vez añadimos 2 filas, si no lo es se las quitamos. if ($Show['5 Anteriores'] == 0) $Counter=$Counter-2; else { $c = 2; while ($c > 0 && $elemento = @readdir($dir)) // Mientras la variable $c sea mayor de 0 saltamos archivos. { $Show['5 Anteriores'] = 1; $c--; } } // Mostramos el numero de archivos que se tienen que mostrar por página. while (($Counter != $Config['Show']) && ($elemento = @readdir($dir))) { $Counter++; if (strpos($elemento1, ".php") > 0 && $elemento != "index.php") { include("noticias/$n/$elemento1"); // Asignamos el archivo sin extension // fecha $mesesano = array("Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto", "Septiembre","Octubre","Noviembre","Diciembre") ; $diames = date(j ,$fecha_noticiacom) ; $mesano = date(n ,$fecha_noticiacom) - 1 ; $ano = date(Y ,$fecha_noticiacom) ; $hora = date("h:i A",$fecha_noticiacom) ; $fecha_noticiacom = "$diames $mesesano[$mesano] $ano $hora" ; // Espacios correspondientes en comentarios ?> <table width=100% border=0 cellpadding=5 cellspacing=0 class='tabla_principal'> <tr> <td class="tabla_subtitulo"><b><<? echo $nick_noticiacom ?>></b></td> <td class="tabla_subtitulo"><div align=right><b><? echo $fecha_noticiacom ?></b></div></td> </tr> <tr> <td height="4" colspan=2 class="tabla_mensaje"> <? echo $comentario_noticiacom ?> </td> </tr> </table> <br> <? } } // Si sobran archivos pondremos el "10 Siguientes" { $Show['5 Siguientes'] = 1; } //Cerramos el directorio ?> <div align="right"> <?php // Mostraos si es necessario el "10 Anteriores" y "10 Siguientes". if ($Show['5 Anteriores'] == 1) echo("<a href=\"index.php?id=noticias&c=".($Plus-$Config['Show'])."&n=$n\">5 Anteriores | </a>"); if ($Show['5 Siguientes'] == 1) echo(" <a href=\"index.php?id=noticias&c=".($Plus+$Config['Show'])."&n=$n\">5 Siguientes</a></p>"); } ?> </div> <p><br> <? if($enviar){ function quitar($texto) { return $texto ; } // distinge entre nick registrado y nick anonimo if ($_COOKIE[ucnnick]) { $cnnick = $_COOKIE[ucnnick]; } else { $cnnick = "No Registrad@"; } $cncomentario = quitar($cncomentario) ; $nuevo .= "<"."?\n"; $nuevo .="\$nick_noticiacom = \"$cnnick\";\n"; $nuevo .="\$fecha_noticiacom = \"$cnfechacom\";\n"; $nuevo .="\$noticiacom = \"$cnnoticia\";\n"; $nuevo .="\$comentario_noticiacom = \"$cncomentario\";\n"; $nuevo .= "?".">"; // añadimos la nueva noticia a contador.txt $file = "noticias/$n/contador.txt"; $nclicks = fopen($file,"r+"); $clicks = fgets($nclicks,1024); $clicks++; $new = fopen("noticias/$n/$clicks.php","w"); echo "<script>location='index.php?id=noticias&n=$n'</script>"; } ?> <br> <b>Escribir comentario</b> <form method=post action="index.php?id=noticias&n=<? echo $n?>"> <input type="hidden" name="cnnoticia" value="<? echo $n ?>" > Comentario:<br> <textarea name="cncomentario" cols="30" rows="5" class="form"></textarea><br><br> <input type="submit" name="enviar" value="Enviar" class="form"> </form> </td> </tr> </table> <? } ?>
noticiasenviar.php <? include("login.php") ; ?> <? if($enviar) { function quitar($texto) { return $texto ; } $cnnick = $_COOKIE[ucnnick]; $cntitulo = quitar($cntitulo) ; $cnnoticia = quitar($cnnoticia) ; $edita .= "<"."?\n"; $edita .="\$nick_noticia = \"$cnnick\";\n"; $edita .="\$fecha_noticia = \"$cnfecha\";\n"; $edita .="\$titulo_noticia = \"$cntitulo\";\n"; $edita .="\$noticia_contenido = \"$cnnoticia\";\n"; $edita .= "?".">"; // añadimos la nueva noticia a contador.txt $file = "noticias/contador.txt"; $nclicks = fopen($file,"r+"); $clicks = fgets($nclicks,1024); $clicks++; $edit = fopen("noticias/$clicks.php","w"); echo "Tu noticia ha sido enviada con exito. Haz click <a href=index.php?id=noticias>aquí</a> para regresar a la página principal.<br><br>" ; } ?> <p class="t1">Enviar noticias <p> <script> function revisar() { if(formulario.cnnoticia.value.length == 0) { alert('Debes poner un titulo a la noticia.') ; return false ; } if(formulario.cnnoticiaext.value.length > 255) { alert('La descripción supera los 255 caractéres.') ; return false ; } } </script> <form name="formulario" method="post" action="index.php?id=noticiasenviar" onsubmit="return revisar()"> <b>Titulo :</b><br> <input name="cntitulo" type="text" class="form" id="cntitulo" maxlength="40"> <br> <b>Noticia:</b><br> <textarea name="cnnoticia" cols="30" rows="5" class="form" id="cnnoticia"></textarea> <br><br> <input type="submit" name="enviar" value="Enviar" class="form"> </form>
Este codigo lo tengo hace mucho tiempo que no me funciona solo era que no habia preguntado por que no me funcionaba, es por que estoy haciendo otro diferente.
|
|
|
147
|
Programación / PHP / Re: Registro de usuarios sin base de datos MYSQL
|
en: 23 Septiembre 2010, 01:10 am
|
Despues les enseñare hacer otro mucho mejor el cual estoy haciendo para mi pagina. Tendra: *Un perfil que se le creara al usuario automaticamente. *Un panel donde los usuarios podran modificar sus datos. *Un sistema de mensajes donde los usuarios se podran mandarse mensajes. *Una pagina donde podran ver los usarios que se han registrado. *Los usuarios podran cambiar de avatar. *Una pagina donde podras ver el usuario que esta conectado y en que pagina esta. *Un sistema donde el usuario podra mandar sus propios links. *Diferentes formularios de contacto. *Libro de visitas. *contador de visitas. En proceso: *Sistema para bloquear usarios. *Sistema para agregar grupos de usuarios. *Sistema para enviar desgarga. *Sistema para cambiar de estilos de paginas. *Sistema que se agregue al perfil del usuario y que diga si esta conectado o no. *Sistema de olvide la contraseña si usar SMTP. Este sistema que estoy haciendo sin usar Mysql lo publicare en mi pagina donde los usuarios lo podran desgargaselo en diferentes estilos.
|
|
|
148
|
Programación / PHP / Re: Registro de usuarios sin base de datos MYSQL 3 parte
|
en: 23 Septiembre 2010, 00:10 am
|
En la Primera y segunda parte de esta mini guia creamos la estructura general de este sistema de ingreso, en esta oportunidad vamos a añadirle la posibilidad de subir avatars para cada usuario, una característica que va a permitir a todos aquellos que ingresan en tu pagina identificarse un poco mejor dependiendo del estilo de cada quien. Paso 1Primero vamos a crear una carpeta llamada “ avatar” dentro de la carpeta “ Usuarios” que es la carpeta donde tenemos nuestro archivo php que sirve de base de datos *La ruta de un avatar va a ser “ Usuarios/avatar/nombre.png” *Esta carpeta va a servir para guardar los avatars que suban nuestros usuarios, vamos a crear ahora la pagina que sirve para subir nuestras imágenes. *Dentro de esta carpeta guarda una imagen con el nombre “ default” en formato png que va a servir de default para todos los usuarios nuevos. Paso 2: Archivo avatar.php
*Al igual que en la guia anterior debemos iniciar la session, vamos a pegar lo siguiente en nuestro archivo php. <?php //INICIAMOS LA SESION DEL USUARIO //SI EL USUARIO NO ESTA LOGEADO, LO MANDAMOS AL INDEX if (empty($_SESSION['nombre'])) { } //DEFINIMOS ALGUNAS VARIABLES NECESARIAS CUANDO SUBIMOS EL ARCHIVO $status= ""; if ($_POST["action"] == "upload") { $tamano = $_FILES["archivo"]['size']; $tipo = $_FILES["archivo"]['type']; $archivo = $_SESSION['nombre'].".png"; if ($archivo != "") { $destino = "Usuarios/avatar/".$archivo; if (copy($_FILES['archivo']['tmp_name'],$destino)) { $status = "Avatar Cambiado con EXITO"; } else { $status = "Error al subir el archivo"; } } else { $status = "Error al subir archivo"; } } //OTRAS VARIABLES NECESARIAS PARA MOSRTAR EL AVATAR $nombredelarchivo = "Usuarios/avatar/".$_SESSION['nombre'].".png"; $default = "Usuarios/avatar/default.png"; ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Usuarios - Cambio de Avatar</title> </head> <body> <h1>TU AVATAR ACTUALMENTE ES</h1> <img src="<?php echo $nombredelarchivo?>" alt="Avatar Actual" /> <p>PUEDES:</p> <a href="borrar-a.php?nombre=<? echo $_SESSION['nombre']?>">BORRAR AVATAR!</a> | <a href="index.php">IR AL INDEX</a> <?php } else { ?> <img src="<?php echo $default?>" alt="Avatar Actual" /> <p>TU AVATAR ES EL DEFAULT, PUEDES CAMBIARLO</p> <form action="<? echo $_SERVER['REQUEST_URI']?>" method="post" enctype="multipart/form-data"> <input name="archivo" type="file" class="casilla" id="archivo" size="35" /><br /> <input name="enviar" type="submit" class="boton" id="enviar" value="Subir Avatar!" /> <input name="action" type="hidden" value="upload" /> </td> </form> <p style="color: red;"><?php echo $status?></p> <?php } ?> </body> </html>
Paso 3: archivo borrar-a.php<?php //INICIAMOS LA SESION DEL USUARIO //SI EL USUARIO NO ESTA LOGEADO, LO MANDAMOS AL INDEX if (empty($_SESSION['nombre'])) { } //SI EL NOMBRE DE LA URL NO CORRESPONDE AL DE LA SESION, ESTAS BORRANDO EL AVATAR DE OTRO if ($_SESSION['nombre'] != $_GET['nombre']) { die("Estas borrando el avatar de alguien mas, esta accion no esta permitida"); } //BORRAMOS EL AVATAR $archivo = "Usuarios/avatar/".$_GET['nombre'].".png"; ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Usuarios - Borrar Avatar</title> </head> <body> <h1>Avatar Borrado</h1> <a href="avatar.php">Subir otro Avatar</a> | <a href="index.php">Ir al Index</a> </body> </html>
Eso es todo aqui termina mi mini guia
|
|
|
149
|
Programación / PHP / Re: Registro de usuarios sin base de datos MYSQL 2 parte
|
en: 22 Septiembre 2010, 23:43 pm
|
Ahora nos toca hacer los archivos que van a permitir a nuestros usuarios conectarse, primero que nada vamos a hacer el formulario de ingreso, en este caso login.php. Archivo login.php
<?php if($_SESSION) { } else { ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Ingresa</title> </head> <body> <form action="ingreso.php" method="post"> <p> <label for="nombre">Nombre</label> <label for="campo1"><input type="text" name="nombre" value="" /></label> </p> <p> <label for="password">Password</label> <label for="campo2"><input type="password" name="pass" value="" /></label> </p> <p> <input type="submit" name="ingresar" value="Iniciar sesion"/></p> </form> </body> </html> <?php }?>
Ahora necesitamos hacer ingresar a los usuarios, primero vamos a hacer un archivo aparte llamado entrarusuarios.php que va a tener la función para que nuestros usuarios se conecten. Archivo entrarusuarios.php*Crea un nuevo archivo y llámalo entrarusuarios.php. *Como dije arriba, este archivo va a conectar a nuestros usuarios, tomando los datos del formulario (el nombre y el password) y buscando similares en nuestra base de datos. *Una forma con la que trabajo PHP (No sé si es la correcta) es pensar que nosotros mismos estamos realizando las tareas, por ejemplo: Supongamos que un usuario, llamado “usuarioa” te pide saber si esta registrado en tu fiesta, y tu usaste una cuaderno para anotar a los invitados con sus respectivas claves, cada invitado está en una hoja separada, ahora, para saber si el usuario esta registrado, divides el cuaderno en las diferentes hojas, buscas a un usuario cuyo nombre sea “usuarioa” y su clave sea “clavea”, en caso de que encuentres uno, le dices que si esta registrado, y en caso contrario le dices que no está registrado. Ahora el ejemplo anterior vamos a pasarlo a una función como la siguiente: <?php /* * ESTA ES LA FUNCION QUE ME HACE INGRESAR A LOS USUARIOS */ function conectar_usuarios($nombre_usuario, $password_usuario) { $RESULTADO = FALSE; //VERIFICAMOS QUE NO ESTEN VACIOS, SI LO ESTAN DEVUELVE FALSE if($nombre_usuario == '' || $password_usuario == '') { $RESULTADO = FALSE; } $ubicacion_usuarios = 'Usuarios/usuarios.php'; $array_todos_usuarios = explode('||', $contenido_usuarios); foreach ($array_todos_usuarios as $usuario_individual) { $datos_del_usuario = explode('|', $usuario_individual); if($nombre_usuario == $datos_del_usuario[2] && $password_usuario == $datos_del_usuario[3]) { $RESULTADO = TRUE; break; }//DEL IF }//DEL FOREACH return $RESULTADO; } ?>
Archivo ingreso.php
*Este archivo va a ser el que le dé una determinada variable de Sesión a cada usuario conectado, es como si le diéramos una identificación a cada invitado para que entre a tu fiesta. Crea un nuevo archivo php y llámalo ingreso.php, en el vas a comenzar colocando lo siguiente: <?php /* * VAMOS A INICIAR LA SESION, ESTO ES IMPORTANTE */ /* * COMENZAMOS DEFINIENDO ALGUNAS VARIABLES */ $nombre = $_POST['nombre']; $password = $_POST['pass']; $md5_pass = md5($password); require_once 'entrarusuarios.php'; /* * AQUI DEFINIMOS NUESTRAS VARIABLES DE SESSION SI EL INGRSO ES CORRECTO */ if(conectar_usuarios($nombre, $md5_pass)) { $INGRESO_DE_SESION = TRUE; $_SESSION['nombre'] = "$nombre"; $_SESSION['password'] = "$md5_pass"; } else { $INGRESO_DE_SESION = FALSE; echo "Login incorrecto, <a href='login.php'>intentalo otra vez</a>"; } ?>
*Cuando el usuario ingrese, va a ser llevado automáticamente al index donde va a poder ver contenido que es solo para usuarios registrados, vamos a ver como seria este archivo. Archivo Index.php
*Abre un nuevo archivo y llámalo index.php, ahí vamos a tener: Tanto contenido para usuarios conectado como contenido para usuarios no conectados y también contenido para ambos tipos de usuarios. Comenzamos al igual que los otros archivos, estableciendo la función de inicio de sesión. <?php //VARIABLES PARA EL AVATAR $avatar = "Usuarios/avatar/".$_SESSION['nombre'].".png"; $avatar = "Usuarios/avatar/default.png"; } ?>
*Luego de eso, vamos a agregar lo siguiente: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Ingreso</title> </head> <body> <h1>Index</h1> <p>Este es contenido comun que va a poder ser visto por cualquier usuario</p> <?php if (empty($_SESSION)) {?> <div id="contenido"> <h1>Este contenido es solo para usuarios registrados</h1> <p>Disculpa, pero no eres un usuario registrado o no has iniciado sesion</p> <p><a href="registrarse.php">Registrate</a> | <a href="login.php">Inicia Sesion</a></p> </div> <?php } else { ?> <div id="contenido"> <h1>Contenido para usuarios registrados</h1> <h2>TU AVATAR ES</h2> <img src="<?php echo $avatar?>" alt="Tu Avatar" /><br /> <a href="avatar.php">ADMINISTRAR AVATAR</a> <p>Este contenido lo ve quien este registrado</p> <p><?php echo $_SESSION['nombre'];?></p> <p><a href="logout.php">Cerrar sesion</a></p> </div> <?php }?> </body> </html>
*Ahora el usuario quiere cerrar sesión, para eso proporcionamos un link en el index que lleva hasta la pagina “ logout.php”, veamos que tiene esa página. <?php header('Location: index.php'); } else { } ?>
|
|
|
150
|
Programación / PHP / Re: Registro de usuarios sin base de datos MYSQL 1 primero
|
en: 22 Septiembre 2010, 23:08 pm
|
Paso 1: Creación del archivo donde se guardan los usuarios*Arriba dijimos que no íbamos a usar bases de datos MySQL para almacenar a nuestros usuarios, sin embargo necesitamos un lugar donde guardar a los mismos, eso vamos a hacerlo de la siguiente manera: *Crea una Nueva Carpeta llamada Usuarios, ahí crea un nuevo archivo PHP desde tu editor de código y añade lo siguiente a esa página: <?php die('Disculpa, No puedes ver esta pagina!!')?>
*Es importante que dejes un salto de línea después del código de arriba. *Guarda ese archivo como Usuarios.php, y lo que tenemos ahí es el archivo donde se van a guardar a los usuarios, el código que ves, simplemente evita que se recargue la pagina directamente para prevenir que cualquiera pueda ver los e-mails y los nombres de usuarios de tu web (el password va a estar cifrado). Ya terminamos con la carpeta de usuarios, ahí no vas a agregar nada más. Paso 2: Creación de la pagina con el formulario de ingresoCrea una nueva página llamada registrarse.php, aquí vamos a colocar el formulario que va a permitir a los usuarios registrarse en nuestra página: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Registrate</title> </head> <body> <h1>Registrate</h1> <form action="registro.php" method="POST"> <p> <label for="nombre">*Nombre de Usuario</label> <label for="campo1"><input name="nombre" type="text" value=""/></label> </p> <p> <label for="email">*Email</label> <label for="campo2"><input name="email" type="text" value=""/></label> </p> <p> <label for="password">*Password</label> <label for="campo3"><input name="pass" type="password" value=""/></label> </p> <p> <label for="passwordrepe">Repite el Password</label> <label for="campo4"><input name="passrepet" type="password" value=""/></label> </p> <p> <input name="submit" type="submit" value="Registrarme"/> </p> </form> </body> </html>
*Es importante que el “action”, el “method” y los “names” de los formularios NO varíen. Paso 3: Creación del archivo que procesa el formulario
Es hora de crear uno de los archivos más complejos de nuestro sistema de ingreso, es el que procesa los datos del registro y realiza la inscripción de los usuarios en nuestro archivo usado como base de datos. Crea un nuevo archivo y llámalo como registro.php. Este archivo va a tener tres partes fundamentales: 1- Definición de constantes 2- Frenar el registro en caso de error 3- Registrar al usuario Archivo de registro.php<?php /* * COMENZAMOS DEFINIENDO ALGUNAS VARIABLES */ $bd_usuarios = 'Usuarios/usuarios.php'; $nombre = $_POST['nombre']; $email = $_POST['email']; $password = $_POST['pass']; $passwordrep = $_POST['passrepet']; /* * VAMOS A FRENAR EL REGISTRO SI EL ARCHIVO DE USUARIOS NO EXISTE */ $error['noExiste'] = 'Disculpa, pero el archivo de base de datos de usuarios no existe'; } /* * AHORA FRENAMOS EL CASO EN QUE NO SEA ESCRIBIBLE EL ARCHIVO DE USUARIOS */ $error['noEscribe'] = 'Disculpa, pero el archivo de base de datos no admite escritura'; } /* * SI EL CAMPO NOMBRE ESTA VACIO GENERAMOS ERROR */ $error['nombreVacio'] = 'Disculpa, debes escribir un nombre de usuario'; } /* * SI EL CAMPO EMAIL ESTA VACIO GENERAMOS ERROR */ $error['emailVacio'] = 'Disculpa, debes escribir un email'; } /* * LOS ERRORES DEL PASSWORD, QUE ESTE VACIO O QUE NO COINCIDAN O QUE SEA MENOR A 4 CARACTERES */ $error['passwordVacio'] = 'Disculpa, debes escribir un password'; } elseif(strlen($password) <= 3) { $error['passwordCorto'] = 'Disculpa, el password debe ser de como minimo de 4 caracteres'; } elseif($password != $passwordrep) { $error['passwordNoCoincide'] = 'Disculpa, los dos password deben coincidir'; } /* * AQUI CHECAMOS QUE EL EMAIL DE USUARIO NO EXISTA */ $array_verificacion = explode('||', $contenido_verificacion); $cuento_los_usuarios = count($array_verificacion); for($i = 0; $i <= $cuento_los_usuarios; $i++) { $exploto_usuarios = explode('|', $array_verificacion[$i]); if($email == $exploto_usuarios[4]) { $error['EmailExistente'] = 'Disculpa, ese email ya ha sido registrado'; } } /* * AQUI CHECAMOS QUE EL NOMBRE NO EXISTA */ for($i = 0; $i <= $cuento_los_usuarios; $i++) { $exploto_usuarios = explode('|', $array_verificacion[$i]); if($nombre == $exploto_usuarios[2]) { $error['NombreExistente'] = 'Disculpa, ese nombre ya ha sido registrado'; } } /* * SI NO HAY ERROR, REGISTRAMOS EL USUARIO */ $array_usuarios = explode('||', $contenido_usuarios); $cuento_usuarios = count($array_usuarios); $abro = fopen($bd_usuarios, 'a+'); fwrite($abro, filemtime($bd_usuarios)."|$cuento_usuarios|$nombre|".md5($password)."|$email||"); $mensaje = 'Usuario Registrado con Exito'; } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Registrate</title> </head> <body> <h1>Registrate</h1> <?php if($error) { foreach ($error as $advertencia){ echo $advertencia; echo '<br />'; } } if($mensaje) { echo $mensaje; } ?> </body> </html>
Con estos archivos, vamos a tener listo el registro de los usuarios en nuestra página web, en el siguiente capítulo vamos a crear un archivo que permita a los usuarios iniciar sesión.
|
|
|
|
|
|
|