Ver Mensaje Individual
  #33 (permalink)  
Antiguo 08/02/2008, 11:08
Avatar de Nemutagk
Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años, 1 mes
Puntos: 406
Re: que significan estos errores?

bueno, como vi que su codigo tiene varias deficiencias y errores mejor les doy otro, cada codigo va en diferentes archivos, tambien tienen que checar cada archivo, ya que cuando realice estos script no los hice con el nombre de su tabla ni con el nombre de sus campos, asi que modifiquen segun se necesite

archivo registro.php, aqui va el formulario de registro
Código PHP:
<!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=utf-8" />
<title>Documento sin t&iacute;tulo</title>
</head>

<body>
<!-- Este es el codigo para el formulario de registro -->
<?php
//ahora aqui verificamos si existe la variable $_GET["error"] para mandar un mensaje de error
if (isset($_GET["error"])) {
    echo 
'<p>'.urldecode($_GET["error"]).'</p>';
}
?>
<form id="form1" name="form1" method="post" action="registrar.php">
  <label for="user">Usuario</label>
  
  <input type="text" name="user" id="user" />
<p>
  <label for="pass">Contrase&ntilde;a</label>
  <input type="password" name="pass" id="pass" />
</p>
<p>
  <label for="pass2">Confirmar contrase&ntilde;a</label>
  <input type="password" name="pass2" id="pass2" />
</p>
<p>
  <label for="email">Correo electronico</label>
  <input type="text" name="email" id="email" />
</p>
<p>
  <label for="button"></label>
  <input type="submit" name="button" id="button" value="Enviar" />
</p>
</form>
</body>
</html>
archivo registrar.php, aqui se hacen las validaciones y se hace el registro en la db
Código PHP:
<?php
//validamos que no nos regresen ningun campo basios
//aqui recojemos todas las variables que bienen por post
$variables $_POST;

//ahora como guardamos todas las variables post en la variable $variables como un array
//tenemos ahora que separar y validar una por una
foreach($variables as $variable => $valor) {
    
//como no queremos validar el boton aqui filtramos las variables a validar
    
if ($variable != 'button') {
        
//ahora validamos que las variables no esten basias
        
if (empty($valor)) {
            
//ahora mandamos el mensaje de error y regresamos al formulario registro
            
$error urlencode('No has indicado un valor en el campo '.$variable);
            
header("location: registro.php?error=".$error);
            
//como les comente en un mensaje en el foro, despues de un header(location tiene que hacer
            //un exit para que php no continue ejecutando el codigo restante
            
exit;
        }
    }
}

//ahora incluimos el archivo config.php que tiene la conexion a mysql
include("config.php");

//ahora que ya validamos que ningun campo este basio pasemos al registro

//primero validamos si existe el usuario
//pero antes de hacer la consulta sql hay que limpiar la variable
$usuario addslashes($_POST["user"]);
//ahora realizamos la consulta
$sql=mysql_query("select * from tabla_usuarios where usuario = '".mysql_real_escape_string($usuario)."'",$conexion) or die (mysql_error());

//validamos si existe un usuario
if (mysql_num_rows($sql) != 0) {
    
$error=urlencode('El usuario indicado ya existe, por favor indica otro');
    
header("location: registro.php?error=".$error);
    exit;
}

//ahora como estamos seguros que el usuario es unico pasamos a validar su contraseña
if ($_POST["pass"] != $_POST["pass2"]) {
    
$error=urlencode('Las contraseñas indicadas no son iguales.');
    
header("location: registro.php?error=".$error);
    exit;
}

//ahora validamos el email
if (!ereg("^([a-zA-Z0-9\._]+)\@([a-zA-Z0-9\.-]+)\.([a-zA-Z]{2,4})$";,$email)){
    
$error=urlencode('El email indicado no es valido.');
    
header("location: registro.php?error=".$error);
    exit;
}

//como el registro en este punto ya paso todas las validaciones podemos ingresarlo en la base de datos
$sql_txt "insert into tabla_usuarios (
        campo_usuario,
        campo_pass,
        campo_email) values (
        '"
.mysql_real_escape_string(addslashes($_POST["user"]))."',
        '"
.mysql_real_escape_string(addslashes($_POST["pass"]))."',
        '"
.mysql_real_escape_string(addslashes($_POST["email"]))."')";
        
//ahora hacemos al consutla a mysql
mysql_query($sql_txt,$conexion) or die (mysql_error());

//ahora el registro ya se llevo a acabo, ahora solo queda reedirigir al usuario a otra pagina
header("location: index.php");
?>
archivo inciar_sesion.php, aqui esta el formulario para iniciar sesion
Código PHP:
<!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=utf-8" />
<title>Documento sin t&iacute;tulo</title>
</head>

<body>
<?php
//ahora aqui verificamos si existe la variable $_GET["error"] para mandar un mensaje de error
if (isset($_GET["error"])) {
    echo 
'<p>'.urldecode($_GET["error"]).'</p>';
}
?>
<form id="form1" name="form1" method="post" action="login.php">
  <label for="user">Usuario</label>
  
  <input type="text" name="user" id="user" />
<p>
  <label for="pass">Contrase&ntilde;a</label>
  <input type="password" name="pass" id="pass" />
</p>
<p>
  <label for="button"></label>
  <input type="submit" name="button" id="button" value="Iniciar sesion" />
</p>
</form>
</body>
</html>
archivo login.php aqui se valida y se inicia la session
Código PHP:
<?php
//antes que nada y verificando que antes de <?php no existan caracteres ni espacios iniciarmos session_start();
session_start();

//ahora validamos los campos
//aqui lo haremos manual porque solo son dos campos
if (empty($_POST["user"])) {
    
$error=urlencode('Tienes que indicar un usuario');
    
header("location: iniciar_sesion.php?error=".$error);
    exit;
}

if (empty(
$_POST["pass"])) {
    
$error=urlencode('Tienes que indicar un a contraseña');
    
header("location: iniciar_sesion.php?error=".$error);
    exit;
}

//ahora incluimos el archivo config.php que tiene la conexion a mysql
include("config.php");

//ahora que ya validamos los campos hay que validar el usuario y contraseña en la db
$usuario addslashes($_POST["user"]);
$pass addslashes($_POST["pass"]);

$sql=mysql_query("select * from tabla_usuarios where usuario = '".mysql_real_escape_string($usuario)."' and pass = '".mysql_real_escape_string($pass)."'",$conexion) or die (mysql_error());

//validamos si el usuario existe y si la contraseña es correcta
if (mysql_num_rows($sql) == 0) {
    
$error=urlencode('El usuario o contraseña son erroneos');
    
header("loction: iniciar_sesion.php?error=".$error);
    exit;
}

//ahora que vemos que el usuario en verdad existe y que su contraseña es la correcta iniciamos la sesion
$_SESSION["user"] = $usuario;
//aqui encriptaremos la contraseña por seguridad, ahora, cuando quieran utilizar
//o validar de nuevo la contraseña solo tienen que hacer un $pass = base64_decode($_SESSION["pass"]);
$_SESSION["pass"] = base64_encode($pass);

//y ahora solo queda reedirigir al usuario a otra pagina
header("location: index.php");
?>
archivo config.php, aqui se realiza la conexion a db
Código PHP:
<?php
$mysql_usuario 
'';            //su usuario de mysql
$mysql_pass '';                //la contraseña de mysql
$mysql_server 'localhost';    //el url del server, normalmente es localhost
$mysql_db '';                    //nombre de la base de datos

$conexion mysql_connect($mysql_server,$mysql_usuario,$mysql_pass) or die (mysql_error());
mysql_select_db($mysql_db,$conexion);
?>
espero que les sea de ayuda y si tienen alguna duda o problema solo diganlo!!!
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)

Última edición por Nemutagk; 08/02/2008 a las 11:19