Foros del Web » Programando para Internet » PHP »

scorro no lo entiendo!!!!!!

Estas en el tema de scorro no lo entiendo!!!!!! en el foro de PHP en Foros del Web. Hola phpdictos :D Navegando por la grandiosa red encontre un buen tutorial para hacer un sistema de users,pero quiero añadirle la opcion de ID y ...
  #1 (permalink)  
Antiguo 07/06/2004, 03:41
 
Fecha de Ingreso: junio-2004
Mensajes: 10
Antigüedad: 19 años, 10 meses
Puntos: 0
scorro no lo entiendo!!!!!!

Hola phpdictos :D

Navegando por la grandiosa red encontre un buen tutorial para hacer un sistema de users,pero quiero añadirle la opcion de ID y mas cosas ;)

Mi problema es que cuando modifico la tabla de la base de datos me da error al registrarme y me dice que no me ha podido registrar:(

Aqui esta el codigo de registro:

Código PHP:
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body bgcolor="#FFFFFF" text="#000000">
<?
session_start
(); 
include(
"database.php");

function 
usernameTaken($username){
   global 
$conn;
   if(!
get_magic_quotes_gpc()){
      
$username addslashes($username);
   }
   
$q "select username from users where username = '$username'";
   
$result mysql_query($q,$conn);
   return (
mysql_numrows($result) > 0);
}

function 
addNewUser($username$password){
   global 
$conn;
   
$q "INSERT INTO users VALUES ('$username', '$password')";
   return 
mysql_query($q,$conn);
}

function 
displayStatus(){
   
$uname $_SESSION['reguname'];
   if(
$_SESSION['regresult']){
?>

<h1>Registered!</h1>
<p>Thank you <b><? echo $uname?></b>, your information has been added to the database, you may now <a href="main.php" title="Login">log in</a>.</p>

<?
   
}
   else{
?>

<h1>Registration Failed</h1>
<p>We're sorry, but an error has occurred and your registration for the username <b><? echo $uname?></b>, could not be completed.<br>
Please try again at a later time.</p>

<?
   
}
   unset(
$_SESSION['reguname']);
   unset(
$_SESSION['registered']);
   unset(
$_SESSION['regresult']);
}

if(isset(
$_SESSION['registered'])){
?>

<html>
<title>Registration Page</title>
<body>

<? displayStatus(); ?>

</body>
</html>

<?
   
return;
}


if(isset(
$_POST['subjoin'])){
   if(!
$_POST['user'] || !$_POST['pass']){
      die(
'You didn\'t fill in a required field.');
   }

   
$_POST['user'] = trim($_POST['user']);
   if(
strlen($_POST['user']) > 30){
      die(
"Sorry, the username is longer than 30 characters, please shorten it.");
   }

   if(
usernameTaken($_POST['user'])){
      
$use $_POST['user'];
      die(
"Sorry, the username: <strong>$use</strong> is already taken, please pick another one.");
   }

   
$md5pass md5($_POST['pass']);
   
$_SESSION['reguname'] = $_POST['user'];
   
$_SESSION['regresult'] = addNewUser($_POST['user'], $md5pass);
   
$_SESSION['registered'] = true;
   echo 
"<meta http-equiv=\"Refresh\" content=\"0;url=$HTTP_SERVER_VARS[PHP_SELF]\">";
   return;
}
else{
?>

<html>
<title>Registration Page</title>
<body>
<h1>Register</h1>
<form action="<? echo $HTTP_SERVER_VARS['PHP_SELF']; ?>" method="post">
<table align="left" border="0" cellspacing="0" cellpadding="3">
<tr><td>Username:</td><td><input type="text" name="user" maxlength="30"></td></tr>
<tr><td>Password:</td><td><input type="password" name="pass" maxlength="30"></td></tr>
<tr><td colspan="2" align="right"><input type="submit" name="subjoin" value="Join!"></td></tr>
</table>
</form>
</body>
</html>


<?
}
?>


</body>
</html>
aqui la tabla "original":
Código PHP:
CREATE TABLE users (
    
username varchar(30),
    
password varchar(32)); 
mi tabla:
Código PHP:
CREATE TABLE users 
id bigint(7NOT NULL auto_increment
username varchar(30),
password varchar(32),
yahoo char(100NOT NULL,
MSN char(100NOT NULL,
avatar char(100NOT NULL,
KEY id (id)) 
Porfavor ayudadme no se donde esta el error :(

gracias ;)
  #2 (permalink)  
Antiguo 07/06/2004, 09:35
 
Fecha de Ingreso: junio-2004
Mensajes: 10
Antigüedad: 19 años, 10 meses
Puntos: 0
nadie puede ayudarme?porfavor ;(
  #3 (permalink)  
Antiguo 07/06/2004, 09:44
 
Fecha de Ingreso: junio-2004
Mensajes: 20
Antigüedad: 19 años, 10 meses
Puntos: 0
Hola no soy muy experta en esto pero creo tu error puede estar en que a la hora de registrarte no estas añadiendo los datos de yahoo, msn y avatar y en la creacion de tu tabla en mysql has declarado esos campos no nulos, creo que deberias modificar eso, pues no creo que todos tus usuarios adcionen estos datos. Ojala y esto te sirva de ayuda.

la_bruja
  #4 (permalink)  
Antiguo 07/06/2004, 10:02
 
Fecha de Ingreso: junio-2004
Mensajes: 4
Antigüedad: 19 años, 10 meses
Puntos: 0
intenta esto:

en la funcion addNewUser reemplaza:

$q = "INSERT INTO users VALUES ('$username', '$password')";

por

$q = "INSERT INTO users VALUES ('','$username', '$password', '', '', '')";
  #5 (permalink)  
Antiguo 07/06/2004, 11:23
 
Fecha de Ingreso: junio-2004
Mensajes: 10
Antigüedad: 19 años, 10 meses
Puntos: 0
parece ser que hera eso :D almenos lo parece ya que FUNCIONA gracias
  #6 (permalink)  
Antiguo 07/06/2004, 12:54
 
Fecha de Ingreso: junio-2004
Mensajes: 10
Antigüedad: 19 años, 10 meses
Puntos: 0
tengo un problema :(

este es el codigo luego el problema :D

Código PHP:
<?
include("database.php");

function 
confirmUser($username$password){
   global 
$conn;
   if(!
get_magic_quotes_gpc()) {
    
$username addslashes($username);
   }

   
$q "select password from users where username = '$username'";
   
$result mysql_query($q,$conn);
   if(!
$result || (mysql_numrows($result) < 1)){
      return 
1;
   }

   
$dbarray mysql_fetch_array($result);
   
$dbarray['password']  = stripslashes($dbarray['password']);
   
$password stripslashes($password);

   if(
$password == $dbarray['password']){
      return 
0;
   }
   else{
      return 
2;
   }
}


function 
checkLogin(){
   if(isset(
$_COOKIE['cookname']) && isset($_COOKIE['cookpass'])){
      
$_SESSION['username'] = $_COOKIE['cookname'];
      
$_SESSION['password'] = $_COOKIE['cookpass'];
   }


   if(isset(
$_SESSION['username']) && isset($_SESSION['password'])){
      if(
confirmUser($_SESSION['username'], $_SESSION['password']) != 0){
         unset(
$_SESSION['username']);
         unset(
$_SESSION['password']);
         unset(
$_SESSION['id']);
         return 
false;
      }
      return 
true;
   }
   else{
      return 
false;
   }
}

function 
displayLogin(){
   global 
$logged_in;
   if(
$logged_in){
      echo 
"<h1>Ya estas en el sistema!</h1>";
      echo 
"Bienvenido <b>$_SESSION[username]</b>.";
   }
   else{
?>
Me gustaria que junto al nombre y el password del usuario tambien se agregara a la sesion la ID del usuario,como lo podria hacer????Gracias

Última edición por Omegalpha; 07/06/2004 a las 13:04
  #7 (permalink)  
Antiguo 08/06/2004, 02:33
 
Fecha de Ingreso: junio-2004
Mensajes: 10
Antigüedad: 19 años, 10 meses
Puntos: 0
up......up.......lo subo haber si alguien me puede ayudar
  #8 (permalink)  
Antiguo 08/06/2004, 08:20
 
Fecha de Ingreso: junio-2004
Mensajes: 10
Antigüedad: 19 años, 10 meses
Puntos: 0
:(:(:( de verdad nadie puede?????
  #9 (permalink)  
Antiguo 08/06/2004, 10:47
 
Fecha de Ingreso: junio-2004
Mensajes: 10
Antigüedad: 19 años, 10 meses
Puntos: 0
e modificado la ultima parte y quedo asi:

Código PHP:
<?
   
}
}


if(isset(
$_POST['sublogin'])){
   
/* Check that all fields were typed in */
   
if(!$_POST['user'] || !$_POST['pass']){
      die(
'Debes rellenar los campos de Login y Password.');
   }
   
/* Spruce up username, check length */
   
$_POST['user'] = trim($_POST['user']);
   if(
strlen($_POST['user']) > 30){
      die(
"Lo sentimos, el nombre de usuario no puede superar los 30 caracteres,intentalo otra vez");
   }

   
$md5pass md5($_POST['pass']);
   
$result confirmUser($_POST['user'], $md5pass $_POST['id']);

   if(
$result == 1){
      die(
'El nombre de usuario no esta registrado en el sistema.');
   }
   else if(
$result == 2){
      die(
'Password incorrecto,intentelo otra vez.');
   }

   
$_POST['user'] = stripslashes($_POST['user']);
   
$_SESSION['username'] = $_POST['user'];
   
$_SESSION['password'] = $md5pass;
   
$_SESSION['id'] = $_POST['id'];

   if(isset(
$_POST['remember'])){
      
setcookie("cookname"$_SESSION['username'],$_SESSION['id'], time()+60*60*24*100"/");
      
setcookie("cookpass"$_SESSION['password'], time()+60*60*24*100"/");
   }


   echo 
"<meta http-equiv=\"Refresh\" content=\"0;url=$HTTP_SERVER_VARS[PHP_SELF]\">";
   return;
}


$logged_in checkLogin();

?>
Pero todo sigue igual :( ayudadme please
  #10 (permalink)  
Antiguo 08/06/2004, 13:13
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Supongo que tendras que crear una nueva cookie con setcookie(), de la misma forma que haces con username y password.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #11 (permalink)  
Antiguo 08/06/2004, 14:02
 
Fecha de Ingreso: junio-2004
Mensajes: 10
Antigüedad: 19 años, 10 meses
Puntos: 0
gracias por contestar pensaba que nadie me ayudaria ya

Aun poniendo una cooki mas sigue igual :( aqui te pongo el codigo completo.


Código PHP:
<?
include("conexionDB.php");

function 
confirmUser($username$password){
   global 
$conn;
   if(!
get_magic_quotes_gpc()) {
    
$username addslashes($username);
   }

   
$q "select password from users where username = '$username'";
   
$result mysql_query($q,$conn);
   if(!
$result || (mysql_numrows($result) < 1)){
      return 
1;
   }

   
$dbarray mysql_fetch_array($result);
   
$dbarray['password']  = stripslashes($dbarray['password']);
   
$password stripslashes($password);

   if(
$password == $dbarray['password']){
      return 
0;
   }
   else{
      return 
2;
   }
}


function 
checkLogin(){
   if(isset(
$_COOKIE['cookname']) && isset($_COOKIE['cookpass']) && isset($_COOKIE['cookid'])){
      
$_SESSION['username'] = $_COOKIE['cookname'];
      
$_SESSION['password'] = $_COOKIE['cookpass'];      
      
$_SESSION['id'] = $_COOKIE['cookid'];
      
   }


   if(isset(
$_SESSION['username']) && isset($_SESSION['password']) ){
      if(
confirmUser($_SESSION['username'], $_SESSION['password']) != 0){
         unset(
$_SESSION['username']);
         unset(
$_SESSION['password']);
         unset(
$_SESSION['id']);
         return 
false;
      }
      return 
true;
   }
   else{
      return 
false;
   }
}

function 
displayLogin(){
   global 
$logged_in;
   if(
$logged_in){
      echo 
"
Aqui lo que aparece cuando estas registrado."
;
   }
   else{
?>
Aqui el codigo que aparece cuando no estas registrado

<?
   
}
}


if(isset(
$_POST['sublogin'])){
   
/* Check that all fields were typed in */
   
if(!$_POST['user'] || !$_POST['pass']){
      die(
'Debes rellenar los campos de Login y Password.');
   }
   
/* Spruce up username, check length */
   
$_POST['user'] = trim($_POST['user']);
   if(
strlen($_POST['user']) > 30){
      die(
"Lo sentimos, el nombre de usuario no puede superar los 30 caracteres,intentalo otra vez");
   }

   
$md5pass md5($_POST['pass']);
   
$result confirmUser($_POST['user'], $md5pass);

   if(
$result == 1){
      die(
'El nombre de usuario no esta registrado .');
   }
   else if(
$result == 2){
      die(
'Password incorrecto');
   }

   
$_POST['user'] = stripslashes($_POST['user']);
   
$_SESSION['username'] = $_POST['user'];
   
$_SESSION['password'] = $md5pass;

   if(isset(
$_POST['remember'])){
      
setcookie("cookname"$_SESSION['username'], time()+60*60*24*100"/");
      
setcookie("cookpass"$_SESSION['password'], time()+60*60*24*100"/");
      
setcookie("cookid"$_SESSION['id'], time()+60*60*24*100"/");
   }


   echo 
"<meta http-equiv=\"Refresh\" content=\"0;url=$HTTP_SERVER_VARS[PHP_SELF]\">";
   return;
}


$logged_in checkLogin();

?>
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:10.