PHP - actualizacion multiple de registros

 
Vista:
sin imagen de perfil
Val: 557
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

actualizacion multiple de registros

Publicado por zendi (1056 intervenciones) el 24/08/2020 17:12:19
estoy desarrollando un codigo para actualizar los registros de una tabla para una aplicacion aunque ya lo tengo bastante adelantado. Pero hasta ahora la actualizacion se esta repitiendo en todos los registros, alli es donde no se como hacerlo.


Es para una aplicacion de un condominio. La idea es crear una contraseña diferente para cada usuario. Se me pidio que le asignara una contraseña a cada usuario, he creado un numero aleatorio pero lo esta repitiendo en cada usuario como ya dije anteriormente. Y tampoco lo esta enviando a sus cuentas de correo.

registros
En negrita esta el UPADTE QUE ES DONDE DEBO ACTUALIZAR LA CONTRASEÑA. Mi pregunta es como debo preguntar para que discrimine de cada usuario?
Como pueden ver, en azul esta la contraseña que se repite; pero la idea es que sean diferentes para cada usuario.
Este es el formulario:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<!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=iso-8859-1" />
<title>Recuperar Contraseña</title>
</head>
<body>
<form action="generarcontrasena.php" method='POST'>
		<label>Escriba su Cuenta de Correos:</label>
		<input type="email" name="email"  title="Escriba su Cuenta de Correo" /><br />
		<input type="submit" value="Crear Contrase&ntilde;a" /><br  /><br />
  <?php
  error_reporting(E_ALL ^ E_WARNING ^ E_NOTICE);
	if(isset($_POST["respuesta"])){
	   echo "<span>".$_POST["respuesta"] ."</span>";
	}
  ?>
</form>
</body>
</html>


este es el codigo que crea el proceso:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<?php
$conexion = pg_connect("host=localhost port=5432 dbname=pediatria user=postgres password=tyru47");
error_reporting(E_ALL ^ E_WARNING ^ E_NOTICE);
require("PHPMailer-master/class.phpmailer.php");
require("PHPMailer-master/class.smtp.php");
$email = $_POST['email'];
$e_mail="SELECT email FROM usuarios WHERE email = '$email'";
$res = pg_query($conexion,$e_mail);
if(pg_num_rows($res)>0)
 {
     $cadena = '0123456789';
  	 $passw ='';
	 $lng_cadena = strlen($cadena);
	 $longitud = 6;
	 	for($x=1;$x<=$longitud;$x++)
		   {
				$aleatorio = mt_rand(0,$lng_cadena-1);
				$passw .= substr($cadena,$aleatorio,1);
				$contrasena = "UPDATE usuarios SET usuario_pass = '$passw'";
				$actualiza = @pg_query($conexion,$contrasena);
				///////
				$smtp=new PHPMailer();
				$smtp->IsSMTP();
				# Definimos el formato del correo con UTF-8
				$smtp->CharSet="UTF-8";
				$smtp->SMTPDebug = 0;
				# autenticación contra nuestro servidor smtp
				$smtp->SMTPAuth = true; // enable SMTP authentication
				$smtp->SMTPSecure = "tls";
				$smtp->Host = "smtp.live.com"; // sets MAIL as the SMTP server
				$smtp->Username = 'jose84@hotmail.com'; // MAIL username
				$smtp->Password = "1234"; // MAIL password
				$smtp->Port = 587;
                $smtp->SetFrom('jose84@hotmail.com');
            	$smtp->From = "jose84@hotmail.com";
				$smtp->FromName = "Jose"; // from mail name
				# Indicamos la dirección donde enviar el mensaje
				$smtp->AddAddress($email);
  		        $smtp->Subject = "Nueva CONTRASEÑA";
				//$smtp->Subject = $passw;
			    $smtp->Body = $passw;
				$smtp->WordWrap = 50;
				$smtp->Timeout=50;
				$smtp->IsHTML(true);
                $smtp->MsgHTML($passw);
 
		    }
				   if (!$smtp->Send())
					  {
						$respuesta ="El mensaje no se pudo enviar";
					echo $respuesta .="Error: " .$smtp->ErrorInfo;
					  }
				   else
					  {
						  echo "<script type='text/javascript'>
						 alert('Se ha enviado UNA NUEVA CONTRASEÑA');
						 window.location='passw.php';
						 </script>";
					  }
/////////////
}
else
{
   	 echo' <script language="javascript">alert("Atencion, su correo no existe");</script> ';
     echo "<script>location.href='passw.php'</script>";
 
}
 
 
?>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro
Val: 1.634
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

actualizacion multiple de registros

Publicado por Alejandro (839 intervenciones) el 25/08/2020 00:02:35
  • Alejandro se encuentra ahora conectado en el
  • chat de PHP
En la linea 7 tienes la respuesta
1
$e_mail="SELECT email FROM usuarios WHERE email = '$email'";

1
$contrasena = "UPDATE usuarios SET usuario_pass = '$passw' WHERE email = '$email'";

Pero ademas me parece que tu código esta mal, tienes el for que parece es para obtener cada uno de los caracteres de la contraseña y dentro esta el update y el email. En teoría actualizas la contraseña de todos los usuarios 6 veces al igual que le envías 6 correos. Lo bueno es que no te envía correos jejeje.

Es útil saber si presenta algún error.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 557
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

actualizacion multiple de registros

Publicado por zendi (1056 intervenciones) el 25/08/2020 17:31:21
Si me dices que el UPDATE esta dentro del FOR. Aunque ya lo habia intentado como me señalas:

1
$contrasena = "UPDATE usuarios SET usuario_pass = '$passw' WHERE email = '$email'";
. bueno lo probare y te aviso a ver.

gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 557
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

actualizacion multiple de registros

Publicado por zendi (1056 intervenciones) el 26/08/2020 16:30:39
Hola como me indicaste tampoco lo hace de manera multiple, la idea es que a medida que se ejecuta el codigo coloque diferentes contraseñas a cada usuario, ya que es el objetivo, ya que los usuarios deben tener su contraseña privada para consultar a su deuda del condominio. Claro este codigo lo aplique en otra aplicacion que era para actualizar un unico registro.
Tambien le coloque una linea de codigo para enviarlo a cada cuenta de correo de cada usuario.

Utilicè un
1
for
pero no ejecuta la accion.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
<?php
$conexion = pg_connect("host=localhost port=5432 dbname=administra user=postgres password=Wrap*/1808");
error_reporting(E_ALL ^ E_WARNING ^ E_NOTICE);
require("PHPMailer-master/class.phpmailer.php");
require("PHPMailer-master/class.smtp.php");
// $email = $_POST['email'];
// $e_mail="SELECT cta_correo FROM propietarios WHERE cta_correo = '$email'";
// $res = pg_query($conexion,$e_mail);
// if(pg_num_rows($res)>0)
//  {
     $cadena = 'abcdefghijklmnopqrstuvwxyz';
  	 $passw ='';
	 $lng_cadena = strlen($cadena);
	 $longitud = 6;
	 	for($x=1;$x<=$longitud;$x++)
		{
 	/////////////////////proceso que crea un número aleatorio
				$aleatorio = mt_rand(0,$lng_cadena-1);
				$passw .= substr($cadena,$aleatorio,1);
				for($i=0;$i<=sizeof($pasww;$i++)){
					$contrasena = "UPDATE propietarios SET contrasena = '$passw'";
				}
			        $actualiza = @pg_query($conexion,$contrasena);
				///////
				$smtp=new PHPMailer();
				$smtp->IsSMTP();
				# Definimos el formato del correo con UTF-8
				$smtp->CharSet="UTF-8";
				$smtp->SMTPDebug = 0;
				# autenticación contra nuestro servidor smtp
				$smtp->SMTPAuth = true; // enable SMTP authentication
				$smtp->SMTPSecure = "tls";
				$smtp->Host = "smtp.live.com"; // sets MAIL as the SMTP server
				$smtp->Username = 'jose84@hotmail.com'; // MAIL username
				$smtp->Password = "1234"; // MAIL password
				$smtp->Port = 587;
                $smtp->SetFrom('jose84@hotmail.com');
            	$smtp->From = "jose84@hotmail.com";
				$smtp->FromName = "Alejandro"; // from mail name
				# Indicamos la dirección donde enviar el mensaje
				$smtp->AddAddress($email);
  		        $smtp->Subject = "CONTRASEÑA PARA CONOCER LA DEUDA";
				//$smtp->Subject = $passw;
			    $smtp->Body = $passw;
				$smtp->WordWrap = 50;
				$smtp->Timeout=50;
				$smtp->IsHTML(true);
                $smtp->MsgHTML($passw);
        }
 
 
	//////////////////fin del proceso del número aleatorio//////
 
//////////envia mensaje a cada usuario en su cuenta.
$conexion = pg_connect("host=localhost port=5432 dbname=administra user=postgres password=Wrap*/1808");
 
    $mailTo = "SELECT nombres,cta_correo FROM propietarios";
    $mailTo = @pg_query($conexion,$mailTo);
          while($select3 = @pg_fetch_array($mailTo))
               {
                $name = $select3['nombres'];
          	    $mail = $select3['cta_correo'];
 
                $smtp->ClearAllRecipients();
                $smtp->AddAddress($mail,$name);
 
                   if (!$smtp->Send())
                      {
                         $respuesta ="El mensaje no se pudo enviar";
                         //$respuesta .="Error: " .$mail->ErrorInfo;
                         $respuesta .="Error: " .$smtp->ErrorInfo;
                  	  }
                	 else
                  	  {
                    	 $respuesta ="El mensaje ha sido enviado a todos los Propietarios";
                	    }
               }
/////////////
// }
// else
// {
//    	 echo' <script language="javascript">alert("Atencion, su correo no existe");</script> ';
//      echo "<script>location.href='passw.php'</script>";
 
// }
 
 
?>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de javier
Val: 1.542
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

actualizacion multiple de registros

Publicado por javier (547 intervenciones) el 26/08/2020 16:46:31
Hola

debherias usar un bucle while y tambien extyraer en la consulta la id de cada user

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<?php
include ('solo_clases/includes.php');
 
 
 
$conexion = pg_connect("host=localhost port=5432 dbname=pediatria user=postgres password=tyru47");
error_reporting(E_ALL ^ E_WARNING ^ E_NOTICE);
require("PHPMailer-master/class.phpmailer.php");
require("PHPMailer-master/class.smtp.php");
$email = $_POST['email'];
$e_mail="SELECT id, email FROM usuarios WHERE email = '$email'";
$res = pg_query($conexion,$e_mail);
if(pg_num_rows($res)>0)
 {
     $cadena = '0123456789';
  	 $passw ='';
	 $lng_cadena = strlen($cadena);
	 $longitud = 6;
   while ($row = pg_fetch_row($res)) {
 
        $email = $row['email'];
				$aleatorio = mt_rand(0,$lng_cadena-1);
        $passw .= substr($cadena,$aleatorio,1);
 
        //es esta query asumo que el nombre del campo id autoincrement de la tabla se llama ID
        // si no cambialo
				$contrasena = "UPDATE usuarios SET usuario_pass = '$passw' WHERE id = ".$row['id']." ";
				$actualiza = @pg_query($conexion,$contrasena);
				///////
				$smtp=new PHPMailer();
				$smtp->IsSMTP();
				# Definimos el formato del correo con UTF-8
				$smtp->CharSet="UTF-8";
				$smtp->SMTPDebug = 0;
				# autenticación contra nuestro servidor smtp
				$smtp->SMTPAuth = true; // enable SMTP authentication
				$smtp->SMTPSecure = "tls";
				$smtp->Host = "smtp.live.com"; // sets MAIL as the SMTP server
				$smtp->Username = 'jose84@hotmail.com'; // MAIL username
				$smtp->Password = "1234"; // MAIL password
				$smtp->Port = 587;
                $smtp->SetFrom('jose84@hotmail.com');
            	$smtp->From = "jose84@hotmail.com";
				$smtp->FromName = "Jose"; // from mail name
				# Indicamos la dirección donde enviar el mensaje
				$smtp->AddAddress($email);
  		        $smtp->Subject = "Nueva CONTRASEÑA";
				//$smtp->Subject = $passw;
			    $smtp->Body = $passw;
				$smtp->WordWrap = 50;
				$smtp->Timeout=50;
				$smtp->IsHTML(true);
                $smtp->MsgHTML($passw);
 
		    }
				   if (!$smtp->Send())
					  {
						$respuesta ="El mensaje no se pudo enviar";
					echo $respuesta .="Error: " .$smtp->ErrorInfo;
					  }
				   else
					  {
						  echo "<script type='text/javascript'>
						 alert('Se ha enviado UNA NUEVA CONTRASEÑA');
						 window.location='passw.php';
						 </script>";
					  }
/////////////
}
else
{
   	 echo' <script language="javascript">alert("Atencion, su correo no existe");</script> ';
     echo "<script>location.href='passw.php'</script>";
 
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 557
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

actualizacion multiple de registros

Publicado por zendi (1056 intervenciones) el 26/08/2020 16:58:12
Hola Javier, bueno lo voy a probar y te aviso.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 557
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

actualizacion multiple de registros

Publicado por zendi (1056 intervenciones) el 28/08/2020 17:00:13
Hola Javier, probe tu codigo y no funcionó. Bueno la idea es que la variable
1
$passw
sea diferente para cada usuario o propietario.

Tendria que ser una iteracion en la creacion de la contraseña:

estoy haciendo esto:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$cadena = '0123456789';
  	 $passw ='';
	 $lng_cadena = strlen($cadena);
	 $longitud = 6;
	 	for($x=1;$x<=$longitud;$x++)
		   {
				$aleatorio = mt_rand(0,$lng_cadena-1);
				$passw .= substr($cadena,$aleatorio,1);
 
					if ($passw > 0){
						do {
							$contrasena = "UPDATE usuarios SET usuario_pass = '$passw'";
						} while ($passw > 0);
					}
				$actualiza = @pg_query($conexion,$contrasena);

pero no doy con el resultado. Es decir al crear la contraseña actualiza el campo contraseña, termina con ese y leugo crea otra contraseña y la asigna al siguiente registro de la tabla de la BBDD.
Ahi estoy utilizando un do while pero no funciona.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de javier
Val: 1.542
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

actualizacion multiple de registros

Publicado por javier (547 intervenciones) el 28/08/2020 17:27:41
ahora no ppuedo, cuando este en casa te digo, has de crear la contraseña fuera del bucle while, y has de usar una sentencia WHERE en la consulta por que si no a cada vuaelta del bucle actualiza todas las contraseñas y lo suyo es que lo haga de una en una.

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 557
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

actualizacion multiple de registros

Publicado por zendi (1056 intervenciones) el 28/08/2020 17:41:07
Esta bien Javier, de todos modos seguire encima de esto, pero no dejes de darle un ojo a ver si puedes ayudarme. Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de javier
Val: 1.542
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

actualizacion multiple de registros

Publicado por javier (547 intervenciones) el 29/08/2020 08:40:04
a ver si funciona ya, esta sin probar

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
$conexion = pg_connect("host=localhost port=5432 dbname=pediatria user=postgres password=tyru47");
error_reporting(E_ALL ^ E_WARNING ^ E_NOTICE);
require("PHPMailer-master/class.phpmailer.php");
require("PHPMailer-master/class.smtp.php");
$email = $_POST['email'];
$e_mail="SELECT email, id FROM usuarios";
$res = pg_query($conexion,$e_mail);
 
if(pg_num_rows($res)>0)
 {
     $cadena = '0123456789';
	 $lng_cadena = strlen($cadena);
	 $longitud = 6;
 
 
 
		   while ($row = pg_fetch_array($res)){
 
 
				//dentro del for la contraseña solo
	        	$passw ='';
	        	for($x=1;$x<=$longitud;$x++)
		        {
					$aleatorio = mt_rand(0,$lng_cadena-1);
					$passw .= substr($cadena,$aleatorio,1);
		        }
 
 
		  		 $idUser = $row['id'];
 
 
				$contrasena = "UPDATE usuarios SET usuario_pass = '$passw' WHERE id = '$idUser' ";
				$actualiza = @pg_query($conexion,$contrasena);
				///////
				$smtp=new PHPMailer();
				$smtp->IsSMTP();
				# Definimos el formato del correo con UTF-8
				$smtp->CharSet="UTF-8";
				$smtp->SMTPDebug = 0;
				# autenticación contra nuestro servidor smtp
				$smtp->SMTPAuth = true; // enable SMTP authentication
				$smtp->SMTPSecure = "tls";
				$smtp->Host = "smtp.live.com"; // sets MAIL as the SMTP server
				$smtp->Username = 'jose84@hotmail.com'; // MAIL username
				$smtp->Password = "1234"; // MAIL password
				$smtp->Port = 587;
                $smtp->SetFrom('jose84@hotmail.com');
            	$smtp->From = "jose84@hotmail.com";
				$smtp->FromName = "Jose"; // from mail name
				# Indicamos la dirección donde enviar el mensaje
				$smtp->AddAddress($email);
  		        $smtp->Subject = "Nueva CONTRASEÑA";
				//$smtp->Subject = $passw;
			    $smtp->Body = $passw;
				$smtp->WordWrap = 50;
				$smtp->Timeout=50;
				$smtp->IsHTML(true);
                $smtp->MsgHTML($passw);
 
 
				   if (!$smtp->Send())
					  {
						$respuesta ="El mensaje no se pudo enviar";
					echo $respuesta .="Error: " .$smtp->ErrorInfo;
					  }
				   else
					  {
						  echo "<script type='text/javascript'>
						 alert('Se ha enviado UNA NUEVA CONTRASEÑA');
						 window.location='passw.php';
						 </script>";
					  }
 
			}
 
 	}
else
{
   	 echo' <script language="javascript">alert("Atencion, su correo no existe");</script> ';
     echo "<script>location.href='passw.php'</script>";
 
}

Aunque tambien deberias comprobar que no insertas dos contraseñas iguales a user diferentes
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 557
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

actualizacion multiple de registros

Publicado por zendi (1056 intervenciones) el 29/08/2020 22:32:58
OK Javier, de acuerdo, pondre tu sugerencia en practica y te aviso.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 557
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

actualizacion multiple de registros

Publicado por zendi (1056 intervenciones) el 02/09/2020 15:06:51
Hola Javier, la sugerencia que me señalas solo lo hace para un solo registro, ¿Como se haria para crear en un loop para que sea diferente la variable:
1
$passw?
, por ahi es donde esta la situacion.

algo asi como:

si $passw != $var
update contraseña set $passw, pero no se como reseñar eso en el codigo. Lo he intentado de muchas formas.
Y gracias por tu ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de javier
Val: 1.542
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

actualizacion multiple de registros

Publicado por javier (547 intervenciones) el 02/09/2020 19:50:57
No, no lo hace para un solo registro, a cada vuelta del bucle WHILE que dará tantas vueltas como registros traiga la consulta,
asigna una passw diferente, pues primero se iguala a vacio


1
$passw ='';

y luego se crea la passw, de la forma que lo haces, que yo lo haria diferente

1
2
3
4
5
6
7
8
public function numAleatorio($min = 1, $max=1000) {
 
    $num=mt_rand($min,$max);
    return $num;
 
}
 
$numero =  numAleatorio(1,999999);

sin hacer ningun bucle no hace falta, para tu caso que generas unas contraseñas tan sencillas es suficiente.

pero ya te digo a cada vuelta del bucle primero $passw se iguala a vacio
y despues se crea, si que ha de ser diferente por cada user.

Mira, antes del bucle, tal cual esta el codigo que te di coloca esto

1
2
print_r($row);
exit;

justo antes dek WHILE que es como generas el loop que mencionas.
WHILE es un loop que dará tantas vueltas como registros traiga la consulta a la bbdd.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 557
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

actualizacion multiple de registros

Publicado por zendi (1056 intervenciones) el 04/09/2020 22:25:42
hola javier ya estoy por aca, no tenia internet. Esa funcion la colocaria antes del WHILE? o solo esta funcion ue me das? esoy bastante confuso.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 557
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

actualizacion multiple de registros

Publicado por zendi (1056 intervenciones) el 05/09/2020 16:36:47
Hola Javier disculpa lo que me indicas hace que me confunda. El codigo o la funcion:
1
2
3
4
public function numAleatorio($min = 1, $max=1000) {
    $num=mt_rand($min,$max);
    return $num;
}
debo colocarla en vez de esta:?

1
2
3
4
5
6
7
8
9
10
11
$cadena = '0123456789';
$lng_cadena = strlen($cadena);
$longitud = 6;
while ($row = pg_fetch_array($res)){
    //dentro del for la contraseña solo
    $passw ='';
    for($x=1;$x<=$longitud;$x++)
    {
        $aleatorio = mt_rand(0,$lng_cadena-1);
        $passw .= substr($cadena,$aleatorio,1);
    }
por favor indicame mejor, te agradezco.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de javier
Val: 1.542
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

actualizacion multiple de registros

Publicado por javier (547 intervenciones) el 07/09/2020 07:11:18
a ver lee bien el script, hay comentarios donde te explico

pero que ingresa un email diferente por user

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
$conexion = pg_connect("host=localhost port=5432 dbname=pediatria user=postgres password=tyru47");
error_reporting(E_ALL ^ E_WARNING ^ E_NOTICE);
require("PHPMailer-master/class.phpmailer.php");
require("PHPMailer-master/class.smtp.php");
//este  $email sobra
$email = $_POST['email'];
$e_mail="SELECT email FROM usuarios";
$res = pg_query($conexion,$e_mail);
 
//aqui puedes colocar la funcion del numero aleatorio
//pero lo mejor es tenerla en otro archivo y llamarla con un include.a
function numAleatorio($min = 1, $max=1000) {
 
  $num=mt_rand($min,$max);
  return $num;
 
}
//fin funcion
 
 
 
  if(pg_num_rows($res)>0)
  {
 
 
 /*esta parte de codigo que voy a poner abajo (te marcaré el final) es para que me digas
 que imprime en pantalla el secript, despues quitalo, es unha prueba*/
 $row = pg_fetch_array($res);
 echo '<pre>';
 print_r($row);
 echo '</pre>';
 exit;
/*hasta aquí has de eliminar, primero ejecutas, me muestras lo que sale en pantalla, o parte si
es mucho y despues eliminas estas 5 lineas de arriba*/
 
 
 
 
 
		   while ($row = pg_fetch_array($res)){
 
 
			    	//seteamos a vacio la passw para generar una nueva
            $passw ='';
            //llamamos a la funcion que crea la passw diferente para cada
            $passw =  numAleatorio(1,999999);
 
 
            //este ha de ser el emal del usuario actual para cambiar pass y enviar mail
		  		  $email = $row['email'];
 
 
            $contrasena = "UPDATE usuarios SET usuario_pass = '$passw' WHERE email = '$email' ";
            $actualiza = @pg_query($conexion,$contrasena);
            ///////
            $smtp=new PHPMailer();
            $smtp->IsSMTP();
            # Definimos el formato del correo con UTF-8
            $smtp->CharSet="UTF-8";
            $smtp->SMTPDebug = 0;
            # autenticación contra nuestro servidor smtp
            $smtp->SMTPAuth = true; // enable SMTP authentication
            $smtp->SMTPSecure = "tls";
            $smtp->Host = "smtp.live.com"; // sets MAIL as the SMTP server
            $smtp->Username = 'jose84@hotmail.com'; // MAIL username
            $smtp->Password = "1234"; // MAIL password
            $smtp->Port = 587;
            $smtp->SetFrom('jose84@hotmail.com');
            $smtp->From = "jose84@hotmail.com";
            $smtp->FromName = "Jose"; // from mail name
            # Indicamos la dirección donde enviar el mensaje
 
            $smtp->AddAddress($email);
            $smtp->Subject = "Nueva CONTRASEÑA";
            //$smtp->Subject = $passw;
            $smtp->Body = $passw;
            $smtp->WordWrap = 50;
            $smtp->Timeout=50;
            $smtp->IsHTML(true);
            $smtp->MsgHTML($passw);
 
 
              if (!$smtp->Send())
                {
                   $respuesta ="El mensaje no se pudo enviar";
                   echo $respuesta .="Error: " .$smtp->ErrorInfo;
                }
              else
                {
                   echo "<script type='text/javascript'>
                         alert('Se ha enviado UNA NUEVA CONTRASEÑA');
                         window.location='passw.php';
                         </script>";
                }
 
          }
 
}
else
{
   	 echo' <script language="javascript">alert("Atencion, su correo no existe");</script> ';
     echo "<script>location.href='passw.php'</script>";
 
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar