Foros del Web » Programando para Internet » PHP »

Como limitar el cambio de contraseña de un usuario nuevo

Estas en el tema de Como limitar el cambio de contraseña de un usuario nuevo en el foro de PHP en Foros del Web. De antemano muchas gracias!. Bueno, lo que quiero es que una vez sea creado un usuario nuevo y se le asigne una contraseña, al ingresar ...
  #1 (permalink)  
Antiguo 03/08/2010, 18:59
 
Fecha de Ingreso: julio-2010
Mensajes: 28
Antigüedad: 14 años, 3 meses
Puntos: 0
Como limitar el cambio de contraseña de un usuario nuevo

De antemano muchas gracias!.

Bueno, lo que quiero es que una vez sea creado un usuario nuevo y se le asigne una contraseña, al ingresar por primera vez le solicite el cambio de su contraseña, pero que lo haga únicamente y exclusivamente la primera vez que ingresa y no cada vez que ingrese.
Este es el codigo que manejo para cambiar la contraseña pero no se como limitarlo para que se haga una sola vez:

<?php require_once('XXXX.php');

session_start();
if (isset($_SESSION['XXXX']))
{

if(isset($_POST['enviar']))
{
$Pass=$_POST['password'];
$Pass2=$_POST['pass2'];
if ($Pass==$Pass2){
$loginUsername=$_SESSION['XXXX'];


mysql_select_db($database_conectar, $conectar);

$query_usuario = "update usuarios set password='$Pass' WHERE username='$loginUsername'";
$usuarios = mysql_query($query_usuario, $conectar) or die(mysql_error());

?>
<SCRIPT>
alert('Se ha cambiado su contraseña');
location.href='XXXX2.php';
</SCRIPT>


<?
}
else {
?>
<SCRIPT>
alert('Las contraseñas no coinciden');

</SCRIPT>


<?
}

}



?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>.::PRUEBA::.</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>


<div align="center">
<table width="600" border="1" align="center" class="table_decoration">
<tr>

<td colspan="2"> </td>
</tr>
<tr>
<td colspan="2"><img src="x.jpg" width="760" height="145"></td>
</tr>
<tr>
<td width="751">

<form name="form2" method="POST" action="<?php echo $editFormAction; ?>">
<p>&nbsp;</p>
<table width="228" border="0" align="center" class="table_auth">
<tr>
<td width="168">Id_Usuario
: </td>
<td width="115"><?=$_SESSION['XXXX']?></td>
<td width="115">&nbsp;</td>
</tr>
<tr>
<td>Contrase&ntilde;a:
</td>
<td><input name="password" type="password" class="textfield"></td>
<tr>
<td>Repita su Contraseña:
</td>
<td><input name="pass2" type="password" class="textfield"></td>
<td><input name="enviar" type="submit" class="button" value="Enviar"></td>
</tr>
</table>
</form>
</td>
</tr>
</table>
</div>
</body>
</html>

<?
}
else
{
?>
<SCRIPT>
alert ('Debe loguearse para ingresar aqui!');
location.href='login_X.php';
</SCRIPT>
<?
}
?>
  #2 (permalink)  
Antiguo 03/08/2010, 19:10
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años, 7 meses
Puntos: 406
Respuesta: Como limitar el cambio de contraseña de un usuario nuevo

En tu tabla de usuarios podrías crear un nuevo campo que se llamara pass_original, cuando inicias sesión verifica si la contraseña es la misma que se creo cuando se registro, si son iguales (pass == pass_original) es que no la ah cambiado entonces mandas la petición al usuario que cambie su contraseña, si no son iguales deja que continué sin enviar el mensaje
__________________
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 =)
  #3 (permalink)  
Antiguo 03/08/2010, 22:25
 
Fecha de Ingreso: julio-2010
Mensajes: 28
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Como limitar el cambio de contraseña de un usuario nuevo

Cita:
Iniciado por Nemutagk Ver Mensaje
En tu tabla de usuarios podrías crear un nuevo campo que se llamara pass_original, cuando inicias sesión verifica si la contraseña es la misma que se creo cuando se registro, si son iguales (pass == pass_original) es que no la ah cambiado entonces mandas la petición al usuario que cambie su contraseña, si no son iguales deja que continué sin enviar el mensaje
Me parece bastante coherente tu respuesta y con base en ella he insertado un nuevo campo en la B.D. llamado pass_original, además he intentado modificar el codigo del formulario principal de ingreso, sin embargo aunque no me arroja errores, no he podido obtener el resultado deseado. Por ello quisiera agradecerte si me puedes colaborar encontrando el posible error. El codigo es el siguiente:

<?php require_once('conexion.php'); ?>
<?php


// *** Valida la peticion de conexion a este sitio
session_start();


if (isset($_POST['usuario'])) {
$loginUsername=$_POST['usuario'];
$password=$_POST['pass'];
$Tipo=$_POST['Tipo'];
$MM_fldUserAuthorization = "";
$MM_redirectLoginSuccess2 = "areas.php";
$MM_redirectLoginSuccess = "areas.php";
$MM_redirectLoginFailed = "ingreso.php";
$MM_redirecttoReferrer = false;
mysql_select_db($database_conexion, $conexion);


$query_usuario = "SELECT * FROM usuarios WHERE username='$loginUsername' AND password=$password AND Tipo=$Tipo";
$usuario = mysql_query($query_usuario, $conexion) or die(mysql_error());
$row_usuario = mysql_fetch_assoc($usuario);

$LoginRS__query=sprintf("SELECT * FROM usuarios WHERE username='%s' AND password='%s' AND Tipo='$Tipo'",
get_magic_quotes_gpc() ? $loginUsername : addslashes($loginUsername), get_magic_quotes_gpc() ? $password : addslashes($password), get_magic_quotes_gpc() ? $Tipo : addslashes($Tipo));

$LoginRS = mysql_query($LoginRS__query, $conexion) or die(mysql_error());
$loginFoundUser = mysql_num_rows($LoginRS);
$MM_redirectLoginSuccess = "xxxx.php";
if ($loginFoundUser) {

echo 'Bienvenido','&nbsp;', $_SESSION['XXXX'];

//declaro la variable y la asigno
$GLOBALS['XXXX'] = $loginUsername;


//registro de sesion de variables
session_register("XXXX");


if (isset($_SESSION['PrevUrl']) && false) {
$MM_redirectLoginSuccess = $_SESSION['PrevUrl'];
}
if ($row_usuario['Estado']=='1')
{

if($row_usuario['tipo']=='1' ) {header("Location: " . $MM_redirectLoginSuccess );}
if($row_usuario['tipo']=='2') {header("Location: " . $MM_redirectLoginSuccess );
if($row_usuario['tipo']=='3' ) {header("Location: " . $MM_redirectLoginSuccess );

//Aqui lo nuevo que inserte!!!!

if($row_usuario['pass_original']==$password){


?>

<input type="hidden" name="pass" value="<?=$loginUsername?>">

<?
}
}
}
else{

?>

<SCRIPT>
alert ('POR FAVOR CAMBIE SU CONTRASEÑA !');
location.href='cambio_pass.php';
</SCRIPT>
<?
}
}


else {
?>
<SCRIPT>
alert ('Ingreso exitoso!');
header("Location:"index.php");
</SCRIPT>
<?
}
}

else {
?>
<SCRIPT>
alert ('Usuario o Contraseña Inválidos o Tipo de Usuario no corresponde!');
header("Location: ". $MM_redirectLoginFailed);
</SCRIPT>
<?
}
}


?>

<title>Ingreso de Usuarios</title><form name="form1" method="post" action="">
<?
include 'index.php'; ?>
<p>&nbsp;</p>
</form>
<form id="form2" name="form2" method="post" action="">
<legend><strong>Ingreso al Sistema</strong></legend>
</div>
<fieldset>
<div align="center">
<table width="338" border="0">
<tr>
<td width="126"><legend>Tipo Usuario(*)</legend></td>
<td width="144"><select name="Tipo" id="tipo usuario2">
<option>Seleccione...</option>
<option value="1">Coordinador</option>
<option value="2">Estudiante</option>
<option value="3">Docente</option>
</select></td>
</tr>
<tr>
<td width="168"><legend>Usuario(*)</legend></td>
<td width="115"><input name="usuario" type="text" class="textfield"></td>
<td width="115">&nbsp;<img src="Imagenes/key-icon.png" width="54" height="53" alt="Key" /></td>
</tr>
<tr>
<td><legend>Contrase&ntilde;a(*)</legend></td>
<td><input name="pass" type="password" class="textfield"></td>
<td><input name="Submit" type="submit" class="button" value="Enviar"></td>
</tr>
</table>
</div>
</form>
<p align="center" class="Estilo1">&nbsp;</p>
<script type="text/javascript">
swfobject.registerObject("FlashID");
</script>
<legend>Los campos con (*) son obligatorios!</legend>
  #4 (permalink)  
Antiguo 04/08/2010, 04:43
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años, 7 meses
Puntos: 406
Respuesta: Como limitar el cambio de contraseña de un usuario nuevo

La verdad es que tu código es un marañal de variables, es muy difícil seguir donde termina y comienza el otro if.... pero bueno, después de ir descifrando tu código estas haciendo un header(location) antes siquiera de validar las contraseñas por eso jamas te va a enviar el mensaje, ahora, no se como tengas configurado PHP, pero seguro deberia mandarte un error, ya que estas haciendo un "echo" antes de session_start() y header(location), eso es error seguro...

Otra cosa, sabes para que existen el tag highliht?? es para mejorar la legibilidad del código, así que por favor utiliza dicha herramienta para mostrar el código así evitamos que los que lo leemos nos quedemos ciegos!!!
__________________
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 =)
  #5 (permalink)  
Antiguo 04/08/2010, 08:08
 
Fecha de Ingreso: julio-2010
Mensajes: 28
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Como limitar el cambio de contraseña de un usuario nuevo

Cita:
Iniciado por Nemutagk Ver Mensaje
La verdad es que tu código es un marañal de variables, es muy difícil seguir donde termina y comienza el otro if.... pero bueno, después de ir descifrando tu código estas haciendo un header(location) antes siquiera de validar las contraseñas por eso jamas te va a enviar el mensaje, ahora, no se como tengas configurado PHP, pero seguro deberia mandarte un error, ya que estas haciendo un "echo" antes de session_start() y header(location), eso es error seguro...

Otra cosa, sabes para que existen el tag highliht?? es para mejorar la legibilidad del código, así que por favor utiliza dicha herramienta para mostrar el código así evitamos que los que lo leemos nos quedemos ciegos!!!
Es verdad, es complicado seguir este codigo, la verdad lo tengo asi pq debo trabajar con sesiones de usuarios, intentos de acceso por URL y porsupuesto validacion. Tambien es cierto lo del "echo" antes de session start, era una prueba para identificar al usuario entrante en todo momento, pero se me olvido quitarlo!. No obstante el formulario funciona asi sin sacar ningun mensaje de error ni de sintaxis diferente a los de los scripts, pero como vos dices esta compledo adivinar en donde ubicaria dicha validacion con el pass_original. Lo del "tag highlight" no lo conozco, busque en google y pues poca informacion valiosa. Como te digo funciona al 90%, por tanto empezare a jugar o probar en donde debo hacer la validacion correspondiente antes de abandonar este formulario (codigo)
  #6 (permalink)  
Antiguo 04/08/2010, 08:46
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años, 7 meses
Puntos: 406
Respuesta: Como limitar el cambio de contraseña de un usuario nuevo

Cita:
Es verdad, es complicado seguir este codigo, la verdad lo tengo asi pq debo trabajar con sesiones de usuarios, intentos de acceso por URL y porsupuesto validacion
Eso en absoluto no es una escusa para no tener el código ordenado, tengo código muchísimo mas complejo que el tuyo pero lo tengo ordenado y comentado, así que si dejas el código tal como esta solo indica tu falta de organización programando...

Ahora, volviendo al error, te eh comentado que estas haciendo un "header(location)" antes de validar las contraseñas, así JAMAS va a validar y enviar dicho mensaje, primero tienes que validar y después reedireccionar

Lo del tag highliht es una herramienta de este foro para publicar código, cuando estas escribiendo tu post/comentario/entrada arriba tienes una barra de herramientas (b, i , u, etc), al final de la segunda hilera esta un campo select que dice "highliht" despliegas el select y escoges el lenguaje de programación que vas a publicar, en este caso PHP
__________________
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 =)
  #7 (permalink)  
Antiguo 04/08/2010, 11:41
 
Fecha de Ingreso: julio-2010
Mensajes: 28
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Como limitar el cambio de contraseña de un usuario nuevo

Cita:
Iniciado por Nemutagk Ver Mensaje
Eso en absoluto no es una escusa para no tener el código ordenado, tengo código muchísimo mas complejo que el tuyo pero lo tengo ordenado y comentado, así que si dejas el código tal como esta solo indica tu falta de organización programando...

Ahora, volviendo al error, te eh comentado que estas haciendo un "header(location)" antes de validar las contraseñas, así JAMAS va a validar y enviar dicho mensaje, primero tienes que validar y después reedireccionar

Lo del tag highliht es una herramienta de este foro para publicar código, cuando estas escribiendo tu post/comentario/entrada arriba tienes una barra de herramientas (b, i , u, etc), al final de la segunda hilera esta un campo select que dice "highliht" despliegas el select y escoges el lenguaje de programación que vas a publicar, en este caso PHP
Tal vez sea atrevido al hacer este comentario y pues esa no es mi intencion:

Los "header (location)" estan incluidos en los <?<scripts>?> (mensajes). Una vez ingresados los valores de las variables para los campos username y password son capturados por la variable LoginUsername quien es quien genera la ejecucion de las acciones y mensajes consignados en los scripts por tanto no importa q yo primero haga el header(location) y luego la validacion o captura de las variables, si no fuera asi me generaria errores!

Como te digo funciona SIN NINGUN error, iclusive genera la accion de cambio de contraseña y/o datos incorrectos si no corresponden a los datos de la tabla de B.D.

Si es cierto que esto esta desordenado, porsupuesto lo voy a organizar y en ese orden de ideas no quiero tersiverjar mas, pues a leguas vos sabes mucho mas que yo.
Por todo lo que siguieres muchas gracias!
  #8 (permalink)  
Antiguo 04/08/2010, 11:54
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años, 7 meses
Puntos: 406
Respuesta: Como limitar el cambio de contraseña de un usuario nuevo

Creo que no entiendes el concepto, al tu realizar un "header('location');" automáticamente te va a reedireccionar cuando termine de ejecutar el script actual, en este caso el script que tiene todo el código que has publicado, cuando termine, ejecutará el script "areas.php" SIN TOMAR EN CUENTA LOS ECHOS QUE TENGA EL SCRIPT ORIGINAL, entiendes?, nunca vas a ver los errores, ni tampoco se ejecutará los script de Javascript porque PHP jamas va a enviar el resultado al navegador, porque cuando termina el primer script ya esta ejecutando el segundo, y al final,la salida (lo que veras en el navegador) será del segundo script, no del primero, esto no quiere decir que no se ejecute el código PHP del primero, al contrario, lo ejecuta y descarta la salida que tenga para poder procesar el segundo
__________________
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 =)

Etiquetas: contraseña, limitar, usuarios, cambios
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 21:27.