Foros del Web » Programando para Internet » PHP »

un script tonto!!

Estas en el tema de un script tonto!! en el foro de PHP en Foros del Web. Hola,miren,yo tengo este script: <?php require_once('conexion.php'); session_start(); if (isset($_SESSION['Auth']) && $_SESSION['Auth'] == 'YES') { // Aquí tiene acceso }else{ // Aquí no tiene acceso header ...
  #1 (permalink)  
Antiguo 24/07/2005, 15:05
Saldu
Invitado
 
Mensajes: n/a
Puntos:
un script tonto!!

Hola,miren,yo tengo este script:

<?php
require_once('conexion.php');
session_start();
if (isset($_SESSION['Auth']) && $_SESSION['Auth'] == 'YES') {
// Aquí tiene acceso
}else{
// Aquí no tiene acceso
header ("Location: prohibido.php?error=No tiene acceso al sistema!!");
}
$consulta = "SELECT * FROM usuarios where codigo = '".$_SESSION["codigoUsuario"]."'";
$sentencia = mysql_db_query(tryman,$consulta) or die($consulta."<br>".mysql_error());
$row = mysql_fetch_array($sentencia,MYSQL_ASSOC);
echo $row['nombre'];
echo $row['apellido'];
echo $row['user_email'];
?>

Bueno, ese script funciona bárbaro,lo que pretendo dar con eso,es que el usuario que hizo login,pueda ver sus datos,de la tabla usuarios... la pregunta es... cómo hago,para que el usuario tenga la opción de cambiar sus datos? osea, que el pueda cambiar su email,su contraseña? (la contraseña está encriptada en MD5)...

Quiero,que (asi nomas) ponga su contraseña actual,y luego 2 veces la nueva... si las 2 nuevas son =les,que las cambie,se puede hacer ? please,haganme un ejemplo
  #2 (permalink)  
Antiguo 24/07/2005, 19:25
 
Fecha de Ingreso: febrero-2005
Mensajes: 670
Antigüedad: 12 años, 10 meses
Puntos: 0
Hacé un formulario editable con los datos que obtenés de la base de datos y usá la consulta UPDATE para modificar la información guardada por la que envía el usuario a través de ese formulario. Claro que antes verifica que las contraseñas sean iguales y cualquier otro tipo de chequeo necesario.

Información acerca de Update

Es algo como:

Código HTML:
UPDATE tabla SET columna='valor', columna2='valor2' WHERE columna_id='valor_id'
Suerte
Fede
__________________
Federico H. García
Desarrollo Web
www.federicog.com.ar
  #3 (permalink)  
Antiguo 24/07/2005, 23:47
Saldu
Invitado
 
Mensajes: n/a
Puntos:
Cita:
Iniciado por thunder.scripts
Hacé un formulario editable con los datos que obtenés de la base de datos y usá la consulta UPDATE para modificar la información guardada por la que envía el usuario a través de ese formulario. Claro que antes verifica que las contraseñas sean iguales y cualquier otro tipo de chequeo necesario.

Información acerca de Update

Es algo como:

Código HTML:
UPDATE tabla SET columna='valor', columna2='valor2' WHERE columna_id='valor_id'
Suerte
Fede




Bueno... entonces, suponete, yo arme un archivo que se llame procesaformulario.php que es el encargado de recibir los datos que se van a cambiar, e insertarlos en la tabla... el procesaformulario.php sería algo asi??


Código:
<?php 
session_start(); 
require_once('conexion.php');
if(isset($_SESSION['codigoUsuario']) && intval($_SESSION['codigoUsuario'])>0) {
       $consulta="UPDATE usuarios SET password=['user_password'], email=['user_email'] WHERE codigo = '".intval($_SESSION["codigoUsuario"])."'";

	$sentencia = mysql_db_query($dbname,$consulta) or die($consulta."<br>".mysql_error()); 
	$row = mysql_fetch_array($sentencia,MYSQL_ASSOC);

}else{
	echo "<script>alert('Usted no tiene permiso para ver este contenido...');window.close();</script>";
	exit;
}

?>

Eso seria lo que procesa los datos, corrijanme si está mal,como lo hize,o lo trate de hacer... pero yo.. supongo, que en el datos.php,para el formulario,haria algo como esto:


Código:
<?php 

session_start(); 
require_once('conexion.php'); 
print("<body bgcolor=#009900 text=#FFFFFF link=#FFFFFF>");
if(isset($_SESSION['codigoUsuario']) && intval($_SESSION['codigoUsuario'])>0) {
	$consulta = "SELECT * FROM usuarios where codigo = '".intval($_SESSION["codigoUsuario"])."'";
	$sentencia = mysql_db_query($dbname,$consulta) or die($consulta."<br>".mysql_error()); 
	$row = mysql_fetch_array($sentencia,MYSQL_ASSOC);


	echo "<b>Nombre:</b>". $row['nombre'] . "<br>";
	echo "<b>Apellido:</b>". $row['apellido'] . "<br>";
	echo "<b>User Email:</b>". $row['user_email'] . "<br>";
	echo '<tag>
<form method="post" name="form" action="procesaformulario.php">
<INPUT TYPE='text' value=". $row['user_email'] . " NAME='email'></tab>';



}else{
	echo "<script>alert('Usted no tiene permiso para ver este contenido...');window.close();</script>";
	exit;
}

?>
Sé que está mal, pero hize mi esfuerzo, vean si me pueden corregir... porfavor, necesito hacer eso...
Y la verdad, que no tengo ni idea,de como hacer, que ponga la contraseña actual, y que luego ponga la nueva 2 veces, y que haga una comparación, de esa forma lo inserta...si pueden solucionarme eso, les agradeceria muchísimo...
  #4 (permalink)  
Antiguo 24/07/2005, 23:58
 
Fecha de Ingreso: febrero-2005
Mensajes: 670
Antigüedad: 12 años, 10 meses
Puntos: 0
Fijate en la consulta:
Código HTML:
$consulta="UPDATE usuarios SET password=$_POST['user_password'], email=$_POST['user_email'] WHERE codigo = '".intval($_SESSION["codigoUsuario"])."'";
Te olvidaste de $_POST para acceder a las variables, y nunca aparece en el formulario user_email.

Cita:
que ponga la contraseña actual, y que luego ponga la nueva 2 veces, y que haga una comparación, de esa forma lo inserta
1. 3 campos de texto: pass, passnuevo1 y passnuevo2
2. chequeas que pass sea igual al guardado en la base de datos (supongo que encriptarás en el medio)
3. si coincide, compará passnuevo1 y passnuevo2, sino que devuelva un error (contraseña incorrecta)
4. si coinciden los nuevos, encriptalos y guardalos, sino devolvé error.

Suerte
Fede

EDIT: ¿<tag>?
__________________
Federico H. García
Desarrollo Web
www.federicog.com.ar
  #5 (permalink)  
Antiguo 25/07/2005, 05:05
Saldu
Invitado
 
Mensajes: n/a
Puntos:
Cita:
Iniciado por thunder.scripts
Fijate en la consulta:
Código HTML:
$consulta="UPDATE usuarios SET password=$_POST['user_password'], email=$_POST['user_email'] WHERE codigo = '".intval($_SESSION["codigoUsuario"])."'";
Te olvidaste de $_POST para acceder a las variables, y nunca aparece en el formulario user_email.



1. 3 campos de texto: pass, passnuevo1 y passnuevo2
2. chequeas que pass sea igual al guardado en la base de datos (supongo que encriptarás en el medio)
3. si coincide, compará passnuevo1 y passnuevo2, sino que devuelva un error (contraseña incorrecta)
4. si coinciden los nuevos, encriptalos y guardalos, sino devolvé error.

Suerte
Fede

EDIT: ¿<tag>?

Bueno, entonces, suponganse, que ahora todo queda asi:

Código:
<?php 
session_start(); 
require_once('conexion.php');
if(isset($_SESSION['codigoUsuario']) && intval($_SESSION['codigoUsuario'])>0) {
       $consulta="UPDATE usuarios SET password=$_POST['user_password'], email=$_POST['user_email'] WHERE codigo = '".intval($_SESSION["codigoUsuario"])."'";
	$sentencia = mysql_db_query($dbname,$consulta) or die($consulta."<br>".mysql_error()); 
	$row = mysql_fetch_array($sentencia,MYSQL_ASSOC);

}else{
	echo "<script>alert('Usted no tiene permiso para ver este contenido...');window.close();</script>";
	exit;
}

?>

Bueno, eso sería el procesaformulario.php, yo ahora,en el datos.php pondría esto:


<?php

session_start();
require_once('conexion.php');
print("<body bgcolor=#009900 text=#FFFFFF link=#FFFFFF>");
if(isset($_SESSION['codigoUsuario']) && intval($_SESSION['codigoUsuario'])>0) {
$consulta = "SELECT * FROM usuarios where codigo = '".intval($_SESSION["codigoUsuario"])."'";
$sentencia = mysql_db_query($dbname,$consulta) or die($consulta."<br>".mysql_error());
$row = mysql_fetch_array($sentencia,MYSQL_ASSOC);


echo "<b>Nombre:</b>". $row['nombre'] . "<br>";
echo "<b>Apellido:</b>". $row['apellido'] . "<br>";
echo '<tag>
<form method="post" name="form" action="procesaformulario.php">
<INPUT TYPE='text' value=". $row['user_email'] . " NAME='email'><br>


<INPUT TYPE='text' value=". $row['user_password'] . " NAME='password'><br>
<INPUT TYPE='text' value=$_POST['user_email'] NAME='passwordnuevo'><br>
<INPUT TYPE='text' value=$_POST['user_email'] NAME='passwordnuevo1'><br>





</tab>';





}else{
echo "<script>alert('Usted no tiene permiso para ver este contenido...');window.close();</script>";
exit;
}

?>



COMO HAGO LA COMPARACION? Y TODA LAS COSAS QUE ME NOMBRASTE? PORDIOS,SOY UN BURRO!!! AYUDA
  #6 (permalink)  
Antiguo 27/07/2005, 21:39
Saldu
Invitado
 
Mensajes: n/a
Puntos:
Al final no me quedó muy claro todo... fede, porfas, poneme bien cómo tengo q poner en cada archivo... ahí están todas las bases de los 2 archivos... porfas ayudame y arreglalo cosa de que funcione... si no podés vos q lo haga cualquier otro,pero fijense mi último mensaje que ahí deje todo!!!!!!!!!!!!!!!!!!!! alguien que pueda,directamente ponga el datos.php y el procesaformulario.php cómo yo debería ponerlo! porfas
Bueno,muchas gracias....
  #7 (permalink)  
Antiguo 28/07/2005, 09:32
Avatar de aristotelisco  
Fecha de Ingreso: marzo-2005
Ubicación: Oxnard CA USA
Mensajes: 151
Antigüedad: 12 años, 8 meses
Puntos: 0
Código

Muy bien Tomás, aquí está el código, no lo revisé y no estoy seguro de que funcione bien, pero creo que la idea queda clara y cualquier modificación requerida se la podrás hacer con facilidad.

Datos.php

Código:
<?php 
/*
	**JAR**
	Con PHP, Obtiene los valores del usuario desde la Base de Datos y los muestra en una tabla
	HTML con la opcion de sobreescribir el e-mail.
	
	Con JavaScript, Valida que los campos Password contengan un valor y que los campos de 
	NuevoPassword 1 y 2 sean iguales.
*/
session_start(); 
require_once('conexion.php'); 
if(isset($_SESSION['codigoUsuario']) && intval($_SESSION['codigoUsuario'])>0) 
{
	$sql = "Select * From usuarios Where codigo = ".intval($_SESSION["codigoUsuario"])." ";
	$result = mysql_query($sql) or die(mysql_error()); 	
	$row = mysql_fetch_array($result,MYSQL_ASSOC);
}
?>

<html>
<head>
<title>Page</title>
<script language="javascript" type="text/javascript">
validarForm()
{
var error;
error = 0; // No hay error
	if ((document.all.Password.value == "") || (document.all.NuevoPassword1.value == "") ||(document.all.NuevoPassword2.value == ""))
		{
		error = 1; // Hay error y no mandamos el form
		alert ("Debes escribir un valor en los passwords"); 
		}
		
	if ( document.all.NuevoPassword1.value != document.all.NuevoPassword2.value)	
		{
			error = 1; // Error porque los nuevos passwords no son igual
			alert ("Los valores del nuevo password deben de ser iguales"); 
		}
	if (error = 0)	
		{
			document.all.form1.submit();
		}
}
</script>

</head>
<body>
<form action="procesaformulario.php" method="post" name="form1" id="form1">
<table width="80%"  border="1" align="center">
  <tr>
    <td>Nombre</td>
    <td><?php echo $row["nombre"]." ".$row["apellido"]?></td>
  </tr>
  
  <tr>
    <td>E-Mail</td>
    <td><input name="email" type="text" value="<?php echo $row["email"]?>"></td>
  </tr>
  <tr>
    <td>Password</td>
    <td><input name="Password" type="password" value=""></td>
  </tr>
  <tr>
    <td>Nuevo Password</td>
    <td><input name="NuevoPassword1" type="password" value=""></td>
  </tr>
  <tr>
    <td>Repetir Nuevo Password</td>
    <td><input name="NuevoPassword2" type="password" value=""></td>
  </tr>
  <tr>
    <td colspan="2"><div align="center">
      <input name="btnSubmit" type="button" value="Aceptar" onClick="validarForm();">
    </div></td>
  </tr>
</table>
</form>
</body>

</html>

Y es procesado por

ProcesaFormulario.php

Código:
<?php 
session_start(); 
require_once('conexion.php'); 
if(isset($_SESSION['codigoUsuario']) && intval($_SESSION['codigoUsuario'])>0) 
{
	$pass = md5($_POST["Password"]); // Almaceno el MD5 de Password porque así está almacenado en la tabla
	$npass = md5($_POST["NuevoPassword1"]); // Solo trabajamos con NuevoPassword1. NuevoPassword2 fué solo para verificar que el usuario no cometía errores tipográficos.
	
	// Verificamos que el usuario sea quien dice ser.
	$sql = "Select password From usuarios Where codigo = ".intval($_SESSION['codigoUsuario'])." ";
	$res = mysql_query($sql);
	$row = mysql_fetch_array($res,MYSQL_ASSOC);
	
	if ($row["password"] == $pass) // Verificamos que los passwords coincidan
	{
		$sql = "Update usuarios Set mail = '".$_POST["email"]."', password = '".$npass."' Where codigo = ".intval($_SESSION["codigoUsuario"])."  and password = '".$pass."' ";
		$result = mysql_query($sql) or die(mysql_error()); 	
		if (mysql_affected_rows() == 1)
		{
			echo "Datos Actualizados";
		}
		else
		{
			echo "Ocurrió algún problema";
		}
	}	
	else
	{
	echo "El Password no coincide.";
	}

}
?>
Ojalá sirva de algo.
__________________
Atte:
Alex Reyes

www.alexreyes.net
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 10:46.