Sistema de registro de usuarios

Ahora solo permiten la descarga a los members... :evil: :!: :!: :!:
Hola, el script está bueno, el problema es que checkeas los datos con javascript, lo cual no está mal pero también se debe checkear con php porque javascript se puede desactivar e incluso modificar, pero php no!
No digo que lo quites, porque para el que se registra es muy cómodo...

Saludos
7.- Por ultimo !!! Solo nos falta proteger las paginas .. OJO, en al paso numero 5 , nosotros creamos el ARCHIVO con el codigo que impedira a los visitantes acceder a las paginas que nosotros deseemos ... Ahora falta invocar ese archivo en cada pagina protegida ...
para invocar el archivo , insertaremos al principio de cada pagina que vayamos a proteger ...el siguiente codigo

<? require 'login.php' ?>
-------------------------------------------------------------------------------------
me duda es este codigo <? require 'login.php' ?> ya lo colo al principio de la pagina que quiero proteger pero no pasa nada no bloquea la página observa el codigo la pagina que quiero bloquear .Este es solo la parte principal ahora donde coloco el codigo ya lo he colocado antes de <head> y despues y no pasa nada que hago
----------------------------------------------------------------------------------

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="-???-" lang="-???-" dir="ltr">
<? require 'login.php' ?>
<head>
<title>Store</title>

<!-- Contents -->
<meta http-equiv="Content-Type" content="text/html; charset=-???-" />
<meta http-equiv="Content-Language" content="-???-" />
<meta http-equiv="last-modified" content="24/02/2011 00:00:00" />
<meta http-equiv="Content-Type-Script" content="text/javascript" />
<meta name="description" content="Venta de Productos de Primera Calidad" />
<meta name="keywords" content="Articulos de Primera Calidad" />
<!-- imCustomHead -->
<meta http-equiv="Expires" content="0" />
<meta name="Resource-Type" content="document" />
<meta name="Distribution" content="global" />
<meta name="Robots" content="index, follow" />
<meta name="Revisit-After" content="21 days" />
<meta name="Rating" content="general" />
<!-- Others -->
<meta name="Author" content="Mistiko0123" />
<meta name="Generator" content="Incomedia WebSite X5 Evolution 8.0.15 - www.websitex5.com" />
<meta http-equiv="ImageToolbar" content="False" />
<meta name="MSSmartTagsPreventParsing" content="True" />
<TITLE>Importadora Releance</TITLE>
<META NAME="author" CONTENT="mistiko0123">
<META NAME="subject" CONTENT="Negocios, productos, accesorios y mas...">
<META NAME="Description" CONTENT="Productos de alta calidad">
<META NAME="Classification" CONTENT="Lo que buscas lo encuentras">
<META NAME="Keywords" CONTENT="Armas, municiones y accesorios">
<META NAME="Geography" CONTENT="Guatemala">
<META NAME="Language" CONTENT="Español">
<META HTTP-EQUIV="Expires" CONTENT="never">
<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="PUBLIC">
<META NAME="Copyright" CONTENT="Corporación L.B. S.A.">
<META NAME="Designer" CONTENT="mistiko0123">
<META NAME="Publisher" CONTENT="mistiko0123">
<META NAME="Revisit-After" CONTENT="21">
<META NAME="distribution" CONTENT="Global">
<META NAME="Robots" CONTENT="INDEX,FOLLOW">
<META NAME="city" CONTENT="Guatemala">
<META NAME="country" CONTENT="Guatemala">
hola, buenas soy nuevo en todo esto y no tengo mucha idea, lei el curso paso a paso de cctw sobre como crear una web en html y bueno he hecho por mera aficion algunas paginas, el tema es que en una de ellas le quiero poner un sistema de registro de usuarios para que solo los miembros puedan ver el contenido de algunas secciones, he estado siguiendo el manual de esta pagina y me surge el siguiente problema.
He creado en un menu de la pagina index.html dos botones que son login y registro, los cuales los he enlazado <a href="entrar.php">login</a> y <a href="registrar.php">registro</a>, lo que me pasa es que al darle a login o registro se me abre una ventana del gestor de descargas para descargarlos como si fueran archivos y no tengo ni idea de que hago mal o como deberia hacerlo, espero puedan ayudarme.
Primeramente me gusto mucho esta web y me ayudo muchisimo con todo lo relacionado a la creacion de paginas web, un aplauso muy grande por el merecido esfuerzo.

ahora bien quisiera incluir en el archivo entrar.php un mensaje de bienvenida (tal como hola javier, pepe o quien sea quien este entrando a la web) espero me podais ayudar y os lo agradezco desde ya.

Un saludo

upsss tambien se me olvido decir q claro el mensaje de bienvenida lo querria llevar a todas las paginas tal como lo teneis aki jeje, q en mi caso es bienvenido serpy y ya lo de notificaciones, perfil y demas no os lo pido porque seria echarle muxa cara jajajaja. Gracias de nuevo
queonda carnales, espero que alguien me pueda ayudar con este erro...
al entrar a la pagina 'registrar.php' me da un error cuando me registro y todo el rollo es este:



Warning: mysql_result(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\registro2\registrar.php on line 14
Has sido registrad@ satisfactoriamente. Haz click aquí para regresar a la página principal e iniciar sesión


ayudenme porfavor¨!!!! es muy frustante tratar de resolverlo y no poder
Hola, el sistema de registro funciona muy bien, pero, si le quisiera añadir un sistema antispam, es decir por ejemplo una pregunta o captcha como se haría???????gracias
Hola:

Lo más simple es agregar una pregunta común y corriente como "¿Cuánto es 2 más 2?". Esto es mejor que captcha porque es accesible incluso para los discapacitados visuales, porque el lector de pantalla (Jaws, Nvidia u Orca) no reconocen los códigos captcha.

Jose Ornaldos y Jose Ortiz se encargaron de crear una especie de formulario accesible y lo único que debes hacer es agregar algunas líneas al código HTML y al código que procesa las respuestas de los usuarios.

Los archivos necesarios son: captcha.php, pregunta.php, un formulario (en tu caso, el formulario de registro) y el archivo que procesa los datos ingresados.

pregunta.php
Cu&aacute;nto es dos mas dos? (responde con palabras no con n&uacute;mero),cuatro
Escribe la tercera palabra de: Hoy est&aacute; lloviendo,lloviendo
Escribe la segunda palabra de: Ayer tuve frio,tuve

Este archivo es el que contiene las preguntas y respuestas, y tiene un formato especial: debes separar cada par pregunta/respuesta por un salto de línea (enter) y no dejar una línea vacía al final del archivo, sino lo tomará como otra línea en la que no hay pregunta ni respuesta. Puedes añadir las preguntas-respuestas que quieras mientras mantengas el formato.

[captcha.php]
<?php
/*******************************************************************************
*  Titulo: Captcha Accesible
*  Version: 0.1 @ 23 Marzo, 2009
*  Autor: Jose Miguel Arnaldos
*  Autor: Jose Maria Ortiz
*  Website: http://www.josemiguelarnaldos.com
*  website: http://www.accesoparatodos.net
********************************************************************************
*  Licencia Creative Commons 3.0
*
*  Reconocimiento-No comercial-Sin obras derivadas 3.0 España
*******************************************************************************/
  // Le hice un par de modificaciones al archivo original
  session_start(); // Comienza a guardar las sesiones
  $lineas = file( 'pregunta.php' ); // Guarda las líneas del archivo en un array ($lineas)
  $count = count( $lineas ) - 1; // Cuenta el largo del arreglo ($count)
  $aleatorio = 0;
  if( isset( $_SESSION['lastRand'] ) ) // Si el índice 'lastRand' existe, hará lo siguiente
    while( ( $aleatorio = rand( 0, $count ) ) == $_SESSION['lastRand'] ); // Itera hasta que $aleatorio sea distinto de el último número aleatorio (para que no se repita el número aleatorio)
  else // Sino, simplemente asignará el valor random
    $aleatorio = rand( 0, $count );
  $map = explode( ",", $lineas[$aleatorio] ); // Convierte la línea en un arreglo con dos valores. $map[0] será la pregunta y $map[1] la respuesta.
  echo $map[0];
  $_SESSION['resp'] = md5( $map[1] ); // Cifra la respuesta con md5.
  $_SESSION['lastRand'] = $aleatorio; // Guarda el último número aleatorio.
?>

Este archivo es el que lee el archivo de preguntas (pregunta.php). Creo que con los comentarios está bien explicado, pero si necesitas más explicaciones me avisas.

Ahora lo que necesitas es añadir un campo al formulario que registra los usuarios. Por ejemplo:

registro.php
<form action='procesar_registro.php' method='post'>
  <p><label for='alias'>Alias/Nombre de Usuario: </label><input type='text' name='alias' /></p>
  <!-- Otros campos como nombre, apellido email, password, etc. -->
  <p>Pregunta:<br /><?php include( 'captcha.php' ); ?></p><!-- Esta línea incluye el archivo que procesa los captcha. -->
  <input type='text' name='captcha' />
  <input type='submit' value='enviar' />
</form>

La idea es que aparezca la pregunta (include('captcha.php')) se envíe la respuesta (en este caso, la respuesta será input name='captcha').

procesar_registro.php
<?php
  session_start(); // Debe ser la primera línea del archivo (antes de cualquier función que muestre algo por la pantalla).
  $output = '';
  $captcha = htmlentities( $_POST['captcha'] );
  // aquí iría la validación de los demás campos: nombre, usuario, email, password, etc.
  if( ! isset( $captcha) || strlen( $captcha ) == 0) // Si no se respondió la pregunta:
    $output .= '<p class="error">Debe responder la pregunta anti-spam.</p>';
  if( strtolower( md5( $captcha ) ) != $_SESSION['resp'] ) // Si la respuesta no es igual a la que aparece en el archivo pregunta.php
    $output .= '<p class="error">La respuesta es inválida.</p>';
?>

Eso es todo. Esa es una forma de prevenir el spam de manera accesible para todos. Espero que te sirva y te haya quedado claro, de lo contrario vuelves a preguntar :D.

Saludos.
Me da siempre fallo. Bueno he intentado agregar esto que me has puesto al sistema de registro del post pero nada me da siempre fallo, e incluso he intentado agregar solo el sistema de pregunta pero me sigue dando fallo, quisiera que alguien me dijera como agregar al sistema de registro este un sistema de pregunta o captcha para evitar los spam solo eso, no hablo de otro sistema de registro solo de mejorar el del post, graciasssss por vuestra ayuda!!!
@Ulises31:

¿Que dice el error? También sería bueno que publicaras el código.
el sistema de registros está muy bien pero, por alguna razón no se registran algunos datos del formulario, alguien podría ayudarme porque no se cuál es el error. Los datos que NO se registran son: estado, ocupación, fecha, ninos y estatus que en myadmin lo puse por default 'Activo' Así lo tengo:


<?
if($_POST) {
require 'config.php' ;
function quitar($texto) {
$texto = trim($texto) ;
$texto = htmlspecialchars($texto) ;
$texto = str_replace(chr(160),'',$texto) ; # Elimina espacios que no pueden ser borrados por trim()
return $texto ;
}
$usuario = quitar($_POST) ;
$email = quitar($_POST[correo eliminado]) ;
$con = mysql_query("select count(id) from usuarios where usuario='$usuario' or email='$email'") ;
if(mysql_result($con,0,0)) {
echo 'El usuario ya existe en la base de datos o ya está registrado el email. Haz click <a href="javascript:history.back(-1)">aquí</a> para regresar.' ;
}
else {
$fecha = time() ;
$contrasena = md5(md5(quitar($_POST))) ;
$sexo = quitar($_POST) ;
mysql_query("insert into usuarios (fecha,usuario,contrasena,email,sexo,edad,estado,ocupacion,ninos,ip,estatus) values ('$fecha','$usuario','$contrasena','$email','$sexo','$edad','$estado','$ocupacion','$ninos','$_SERVER[REMOTE_ADDR]','$estatus')") ;
echo 'Has sido registrad@ satisfactoriamente. Haz click <a href="index.php">aquí</a> para regresar a la página principal e iniciar sesión' ;
}
}
else {
?>

</script>
<form name="formulario" method="post" action="<?=$_SERVER[PHP_SELF]?>" onsubmit="return revisar()">
<tr>
<td>Escribe un nombre de usuario:</td>
<td><input type="text" name="usuario" maxlength="20"/></td>
</tr><br/>

<tr>
<td>Contraseña:</td>
<td><input type="password" name="contrasena" maxlength="10"/></td>
</tr><br/>

<tr>
<td>Confirmar contraseña:</td>
<td><input type="password" name="c_contrasena" maxlength="10"/></td>
</tr><br/>

<tr>
<td>Email:</td>
<td><input type="text" name="email" maxlength="40"/></td>
</tr><br/>

<tr>
<td>Género:</td>
<td> <input type="radio" name="sexo" value="M"/> Masculino
<input type="radio" name="sexo" value="F"/> Femenino <br/>
</td>
</tr>

<tr>
<td>Edad:</td>
<td><input type="text" name="edad" maxlength="2" size="2"/></td>
</tr><br/>

<tr>
<td>Estado de la República Mexicana donde vives:</td>
<td><select name="estado">
<option></option>
<option value="Ags">Aguascalientes</option>
<option value="BCN">Baja California Norte</option>
<option value="BCS">Baja California Sur</option>
<option value="Camp">Campeche</option>
<option value="Coah">Coahuila</option>
</select>
</td>
</tr><br/>

<tr>
<td>Ocupación Principal:</td>
<td><select name="ocupacion">
<option>ocupacion</option>
<option value="t_completo">Trabajador(a) tiempo completo</option>
<option value="t_parcial">Trabajador(a) tiempo parcial</option>
<option value="estudiante">Estudiante</option>
<option value="jubilado">Jubilado(a) o pensionado</option>
<option value="desempleado">Desempleado</option>
<option value="hogar">Hogar</option>
</select>
</td></tr><br/>

<tr>
<TD>¿De cuántos niños en primaria o secundaria eres padre o tutor?</TD>
<td><select name="ninos">
<option>num. de niños</option>
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5 o mas</option>
</select>
</td>
</tr><br/>

<tr>
<td><input type="hidden" name="fecha" value="$date"/></td>
</tr>

<tr>
<td><input type="hidden" name="estatus" value="Activo"/></td>
</tr>

<input type="submit" name="enviar" value="Registrar"/>
</form>

<?
}
Amigo según puedo notar en tu código el error teda debido a que no estas definiendo todos los POST,

Recuerda que cuando envías un formulario este se envía por GET o por POST (en este caso POST) y para introducirlo en tu BD debes crear un una variable POST para cada nuevo dato y después limpiarla con la función quitar, ósea en códigos iría algo así
$estado = quitar($_POST[estado]); 
$ocupacion = quitar( $_POST[ocupacion]);
$ninos = quitar($_POST[ninos]);

Ahora en cuanto a la fecha la culpa esta en el que no estas definiendo el formato de la fecha ósea Y=año m=mes d=día, en códigos podría ir algo así

$fecha = time(Y/m/d);

Esto debería bastar para solucionar tu problema.
Muchas gracias por tu apoyo, quedó solucionado lo del ingreso de los datos que faltaban con excepción de la fecha que al ingresar los datos en el formato de registro de usuarios me marca error y el la base de datos no se registra este campo, ¿alguna otra sugerencia?
ups jeje ya vi el error XD
la causa es que estas usando el formato time no el formato date, el time sirve para la hora, el date para la fecha y la configuración que te di es para date no para time xD
corrigiendo esto el código quedaría de este modo

$fecha = date(Y/m/d);  
Sigue marcando el siguiente error:

Warning: Division by zero in line 17

y la línea 17 la corregí como me dijiste:

$fecha = date(Y/m/d) ;
tu vercionde php me interpreta las / como signos de división en la función date jaja que cosas XD

en fin prueba con esta otra date("F j, Y, g:i a");
es extraída de php manual asi que debería funcionar
codomodragon escribió:ups jeje ya vi el error XD
la causa es que estas usando el formato time no el formato date, el time sirve para la hora, el date para la fecha y la configuración que te di es para date no para time xD
corrigiendo esto el código quedaría de este modo

$fecha = date(Y/m/d);  

No es que lo interprete como division , si no que debe ir dentro de comillas

$fecha = date("Y/m/d");

Un saludo
ala madres O_O mis ojos me traicionan como no me fije de eso
ok ya entiendo beber 10 tasas de cafe al día no hace nada de bien >_<
y todo esto dnd va?? XDD

Jajajajajaja XD. Tendrás que aprender HTML, SQL (bases de datos - MySQL) y PHP, sino no entiendes nada.

Las partes donde se habla de PHP van en archivos .php dentro del servidor según hayas organizado las carpetas de tu sitio web. El "formulario" va en un archivo .html (o php, pero con la estructura HTML - <html><head></head><body></body></html>) o donde quieras prohibir el acceso.

Hacer un registro no es tan fácil como copiar y pegar, especialmente si no entiendes lo que haces.

En CCTW hay tutoriales para todo lo que necesitas.
Muy buen tutorial, pero a mí no me protege las páginas. Pongo al principio de todo el código
<? require 'login.php' ?>
pero no protege nada... que hago mal?
hola me podeis ayudar por favor.
he intentado hacer el formulario de registro. pero me sale esto en la pagina junto al formulario

Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /homepages/18/d443085515/htdocs/reg.php:32) in /homepages/18/d443085515/htdocs/reg.php on line 46

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /homepages/18/d443085515/htdocs/reg.php:32) in /homepages/18/d443085515/htdocs/reg.php on line 46

Luego si relleno los campos y le doy a enviar me pone esto otro

Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /homepages/18/d443085515/htdocs/registro.php:30) in /homepages/18/d443085515/htdocs/registro.php on line 44

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /homepages/18/d443085515/htdocs/registro.php:30) in /homepages/18/d443085515/htdocs/registro.php on line 44

Warning: mysql_fetch_array() expects parameter 1 to be resource, null given in /homepages/18/d443085515/htdocs/registro.php on line 65