Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - neopuerta360

#141
PHP / Re: Ponerle estilos a mi sitio web con php
23 Septiembre 2010, 22:10 PM
hola atodos necesito otro codigo que no se este para agregarle varios estilos a mi sitio web.
#142
PHP / Re: Expirar descargas en PHP
23 Septiembre 2010, 21:21 PM
como voy a usar base de datos si no me funciona.
#143
PHP / Re: Expirar descargas en PHP
23 Septiembre 2010, 17:50 PM
Como se hace sin base de datos.
#144
PHP / Re: Registro de usuarios sin base de datos MYSQL
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

Código (php) [Seleccionar]


<?
// Incluimos archivo de configuracion
@include("configuracion.php");
if (!$n) {
?>
<?
// Funcion para borrar los directorios
function deldir($dir)
{
 $handle = opendir($dir);
 while (false!==($FolderOrFile = readdir($handle)))
 {
    if($FolderOrFile != "." && $FolderOrFile != "..")
    {
    }
 }
 closedir($handle);
 if(rmdir($dir))
 { $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 && $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 && $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++;
  
  
$elemento1 strtolower($elemento);
  
  if (
strpos($elemento1".php") > && $elemento != "index.php") {
   
// Asignamos el archivo sin extension
   
$elemento2 str_replace(".php","",$elemento);
?>

<?
if(file_exists("noticias/$elemento2.php")) {
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 :
<?
if(file_exists("noticias/$elemento2/")) {
// Usuarios en linea
$path2 = "noticias/$elemento2/";
// Contar el total
$dir2 = opendir($path2);
$i = 0;
while ($elemento = readdir($dir2))
{
$elemento3 = strtolower($elemento);
if (strpos($elemento3, ".php") > 0) {
$i++;
}
}
echo $i ;
closedir($dir2);
}
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"
if ($elemento = @readdir($dir))
{
  
$Show['20 Siguientes'] = 1;
}

//Cerramos el directorio
@closedir($dir);
?>

<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("&nbsp;<a href=\"index.php?id=noticias&c=".($Plus+$Config['Show'])."\">20 Siguientes</a></p>");
}
?>

</div>
<? if ($n) {
if(file_exists("noticias/$n.php")) {
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>
<?
if(file_exists("noticias/$n/")) {
// Usuarios en linea
$path2 = "noticias/$n/";
// Contar el total
$dir2 = opendir($path2);
$i = 0;
while ($elemento = readdir($dir2))
{
$elemento2 = strtolower($elemento);
if (strpos($elemento2, ".php") > 0) {
include("noticias/$n/$elemento2");
$i++;
}
}
echo $i ;
closedir($dir2);
}
else {
echo "0" ;
}
?>
<br>
<br>
<?php
if(file_exists("noticias/$n/")) {
                                 
// 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 && $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 && $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++;
$elemento1 strtolower($elemento); 
if (
strpos($elemento1".php") > && $elemento != "index.php") {
include(
"noticias/$n/$elemento1");
// Asignamos el archivo sin extension
$elemento2 str_replace(".php","",$elemento);
// 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) - $ano date(Y,$fecha_noticiacom) ; $hora date("h:i A",$fecha_noticiacom) ;
$fecha_noticiacom "$diames $mesesano[$mesano] $ano $hora;
// Espacios correspondientes en comentarios
$comentario str_replace("\r\n","<br>",$comentario
?>

<table width=100% border=0 cellpadding=5 cellspacing=0 class='tabla_principal'>
       <tr>
         <td  class="tabla_subtitulo"><b>&lt;<? echo $nick_noticiacom ?>&gt;</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"
if ($elemento = @readdir($dir))
{
 $Show['5 Siguientes'] = 1;
}
//Cerramos el directorio
@closedir($dir);
?>
     <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("&nbsp;<a href=\"index.php?id=noticias&c=".($Plus+$Config['Show'])."&n=$n\">5 Siguientes</a></p>");
}
?>

</div>

<p><br>
<?
if($enviar){
function quitar($texto) {
$texto = trim($texto) ;
$texto = htmlspecialchars($texto) ;
$texto = stripslashes($texto) ;
return $texto ;
}
// distinge entre nick registrado y nick anonimo
if ($_COOKIE[ucnnick]) {
$cnnick = $_COOKIE[ucnnick];
}
else {
$cnnick = "No Registrad@";
}

$cnfechacom = time() ;
$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
if(!file_exists("noticias/$n/")) { mkdir("noticias/$n/", 0777); }
if(!file_exists("noticias/$n/contador.txt")) { $ncrea = fopen("noticias/$n/contador.txt","w"); fwrite($ncrea, "0"); fclose($ncrea); }

$file = "noticias/$n/contador.txt";
$nclicks = fopen($file,"r+");
$clicks = fgets($nclicks,1024);
$clicks++;
rewind($nclicks);
fwrite($nclicks,$clicks);
fclose($nclicks);

$new = fopen("noticias/$n/$clicks.php","w");
fputs($new,$nuevo);
fclose($new);

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

Código (php) [Seleccionar]


<?
include("login.php") ;
?>
<?
if($enviar) {

function quitar($texto) {
$texto = trim($texto) ;
$texto = htmlspecialchars($texto) ;
$texto = stripslashes($texto) ;
return $texto ;
}
$cnnick = $_COOKIE[ucnnick];
$cnfecha = time() ;
$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
if(!file_exists("noticias/contador.txt")) { $ncrea = fopen("noticias/contador.txt","w"); fwrite($ncrea, "0"); fclose($ncrea); }

$file = "noticias/contador.txt";
$nclicks = fopen($file,"r+");
$clicks = fgets($nclicks,1024);
$clicks++;
rewind($nclicks);
fwrite($nclicks,$clicks);
fclose($nclicks);

$edit = fopen("noticias/$clicks.php","w");
fputs($edit,$edita);
fclose($edit);
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. :D
#145
PHP / Re: Registro de usuarios sin base de datos MYSQL
23 Septiembre 2010, 01:36 AM
Para aquellas personas que quieran un registro de usuarios que no use MYSQL.
#146
PHP / Re: Registro de usuarios sin base de datos MYSQL
23 Septiembre 2010, 01:23 AM
como?????
#147
PHP / Re: Registro de usuarios sin base de datos MYSQL
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
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 1

Primero 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.

Código (php) [Seleccionar]

<?php
//INICIAMOS LA SESION DEL USUARIO
session_start();
 
//SI EL USUARIO NO ESTA LOGEADO, LO MANDAMOS AL INDEX
if (empty($_SESSION['nombre'])) {
header('Location:index.php');
}
//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>
<?php if (file_exists($nombredelarchivo)) {?>
<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

Código (php) [Seleccionar]

<?php 
//INICIAMOS LA SESION DEL USUARIO
session_start();
 
//SI EL USUARIO NO ESTA LOGEADO, LO MANDAMOS AL INDEX
if (empty($_SESSION['nombre'])) {
header('Location:index.php');
}
 
//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";
unlink($archivo);
?>


<!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  :-*  :D
#149
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


Código (php) [Seleccionar]

<?php 
session_start
();
if(
$_SESSION) {
header('Location:index.php');
} 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:

Código (php) [Seleccionar]

<?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';
$contenido_usuarios file_get_contents($ubicacion_usuarios);
$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:

Código (php) [Seleccionar]

<?php
/*
 * VAMOS A INICIAR LA SESION, ESTO ES IMPORTANTE
 */
session_start();
/*
 * 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_register('nombre');
@
session_register('password');
$_SESSION['nombre'] = "$nombre";
$_SESSION['password'] = "$md5_pass";
header('Location:index.php');
} 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.

Código (php) [Seleccionar]

<?php 
session_start
();
//VARIABLES PARA EL AVATAR
$avatar "Usuarios/avatar/".$_SESSION['nombre'].".png";
if (!
file_exists($avatar)) {
$avatar "Usuarios/avatar/default.png";
}
?>



*Luego de eso, vamos a agregar lo siguiente:

Código (php) [Seleccionar]


<!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.

Código (php) [Seleccionar]


<?php
session_start
();
if(empty(
$_SESSION)) {
header('Location: index.php');
} else {
session_unset();
session_destroy();
header('Location:index.php');
}
?>






#150
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:

Código (php) [Seleccionar]

<?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 ingreso

Crea 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:

Código (php) [Seleccionar]

<!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

Código (php) [Seleccionar]

<?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
 */
if(!file_exists($bd_usuarios)){
$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
 */
if(!is_writable($bd_usuarios)) {
$error['noEscribe'] = 'Disculpa, pero el archivo de base de datos no admite escritura';
}
/*
 * SI EL CAMPO NOMBRE ESTA VACIO GENERAMOS ERROR
 */
if(empty($nombre)) {
$error['nombreVacio'] = 'Disculpa, debes escribir un nombre de usuario';
}
/*
 * SI EL CAMPO EMAIL ESTA VACIO GENERAMOS ERROR
 */
if(empty($email)) {
$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
 */
if(empty($password)) {
$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
 */
$contenido_verificacion file_get_contents($bd_usuarios);
$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
 */
if(empty($error)) {
$contenido_usuarios file_get_contents($bd_usuarios);
$array_usuarios explode('||'$contenido_usuarios);
$cuento_usuarios count($array_usuarios);
$abro fopen($bd_usuarios'a+');
fwrite($abrofilemtime($bd_usuarios)."|$cuento_usuarios|$nombre|".md5($password)."|$email||");
fclose($abro);
$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.
;-)