Foros del Web » Programando para Internet » PHP »

Les suplico ayuda!! script que no entiendo como hacer..

Estas en el tema de Les suplico ayuda!! script que no entiendo como hacer.. en el foro de PHP en Foros del Web. Miren... supongo que esto es simple.. pero yo no lo sé hacer... y posta,que no encontré alguna explicación que se pueda aplicar con esto... tengo ...
  #1 (permalink)  
Antiguo 30/08/2005, 20:46
Saldu
Invitado
 
Mensajes: n/a
Puntos:
Les suplico ayuda!! script que no entiendo como hacer..

Miren... supongo que esto es simple.. pero yo no lo sé hacer... y posta,que no encontré alguna explicación que se pueda aplicar con esto... tengo 3 archivos de registro.. que implican los 3 pasos a seguir para registrarse un usuario... pero les voy a mostrar solo el 3 paso,que es el importante.. que es el que registra Todos los datos,en la base de datos...

Registrar.php:


Código:
<html>
<head>
</head>
<body>
<body bgcolor=#009900 text=#FFFFFF link=#FFFFFF alink=#FFFFFF vlink=#FFFFFF>
<?php
error_reporting(E_ALL);
require_once("conexion.php");  
$nombre = $_POST['nombre']; 
$apellidos = $_POST['apellido']; 
$pais = $_POST['paisregistro']; 
$ciudad = $_POST['ciudad'];
$telefono = $_POST['telefono'];
$domicilio = $_POST['domicilio']; 
$numdomicilio = $_POST['numdomicilio']; 
$username = $_POST['username']; 
$password = $_POST['user_password'];
$password2 = md5($password);
$email = $_POST['user_email']; 

 function quitar($mensaje){ 
	$mensaje = str_replace("<","&lt;",$mensaje); 
	$mensaje = str_replace(">","&gt;",$mensaje); 
	$mensaje = str_replace("\'","'",$mensaje); 
	$mensaje = str_replace('\"',"&quot;",$mensaje); 
	$mensaje = str_replace("\\\\","\",$mensaje); 
	return $mensaje; 
}
if(trim($_POST['username']) != "" && trim($_POST['user_email']) != "" &&  trim($_POST['user_password']) != "" &&  trim($_POST['nombre']) != "" &&  trim($_POST['apellido']) != "") 
{ 
$sql ="SELECT codigo FROM usuarios WHERE username='".quitar("$username")."'"; 
$result = mysql_query($sql); 
if(mysql_num_rows($result)>0)
{ 
echo "Error,el nick escogido,o el nombre de equipo ya han sido registrados,porfavor vuelva a intentar";  
} else {
$sql = "INSERT INTO usuarios (nombre,apellido,pais,ciudad,telefono,domicilio,numdomicilio,username,user_password,user_email) VALUES ('$nombre','$apellidos','$pais','$ciudad','$telefono','$domicilio','$numdomicilio','$username','$password2','$email')"; 
mysql_query($sql); 
echo "Registro exitoso!,ahora mismo le enviaremos un email para activar su cuenta"; 
} 
mysql_free_result($result); 
} 
else 
{ 
echo "Debe completar Todo el formulario para poder continuar..."; 
} 


$mailFrom="[email protected]" ; //cuenta que envia
$sdestinatario=$email; //cuenta destino
$ssubject="Completando tu registro!"; #Subject

$shtml = "<html><body bgcolor=#009900 text=#FFFFFF>
Aca,de alguna manera,voy a poner un randomizador de passwords... asi el mail tiene algún sentido...<br>
Tu mail es: ".$email."

</body></html>
"; #Email


$headers  = "From: ".$mailFrom."
Return-Path: ".$mailFrom."
Reply-To: ".$mailFrom."
MIME-Version: 1.0
Content-Type: text/html; charset=\"iso-8859-1\"
Content-Transfer-Encoding: 8bit";
@ini_set( "sendmailFrom", $mailFrom );
if( mail( $sdestinatario, $ssubject, $shtml, $headers ) ){
	/*echo "<script>alert('Si')</script>";*/
}else{
	echo "<script>alert('NO has completado el registro,pon un campo de email valido')</script>";
}

?>


Esto funciona.. pero está mal hecho... está mal puesto.. les ruego que me ayuden,y que lo ordenen como realmente se debe ordenar... el problema.. es que yo quiero que... verifique si todos los campos fueron llenos... si el usuario cumplió con todo,que mande el mail con "una contraseña al azar" y si no lo llenó completamente,que salte error.. pero si salta error,que no mande el mail.. se entiende???

Otra cosa,que es MUY importante.y no lo sé hacer.. es cómo hago la contraseña al azar.. yo,en el 2do paso del sistema de registros hago que el usuario elija qué contraseña quiere... lo que yo deseo,es que algún randomizador,haga una contraseña al azar,y la mande al mail en el "cuerpo" del mensaje, creo que sería así (tu contraseña es:".$password.") El script está hecho(el del registro) pero me gustaría que esté bien ordenado,y que funcione de 10... y que,de alguna manera,se cree un randomizador de passwords,y que mande el password,lo suba a la bd,y se lo mande por email al usuario.. al email escogido por el usuario...
Si necesitan el formulario.php pidanmelo,que se los doy...Gracias..
  #2 (permalink)  
Antiguo 30/08/2005, 22:09
 
Fecha de Ingreso: junio-2005
Mensajes: 981
Antigüedad: 12 años, 6 meses
Puntos: 2
Hola, mira realmente no entiendo del todo lo que deseas. Para verificar que los datos esten completos dispones de la funcion empty(). Para la generación de un password aleatorio puedes hacer lo siguiente.
Código PHP:
<?php
srand
((double)microtime()*1000000); //Ejemplo sacado del manual

$pass rand(100000,1000000000); //Utilizo esos limites para que lo que genere osile entre 6 y 10 caracteres
?>
Este codigo genera un password de entre 6 y 10 caracteres pero solamente numeros, si deseas que también incluya letras puedes hacer algo así.
Código PHP:
<?php
srand
((double)microtime()*1000000); //Ejemplo sacado del manual

$pass rand(100000,1000000000); //Utilizo esos limites para que lo que genere osile entre 6 y 10 caracteres

$cant strlen($pass);

$pass substr(md5($pass),0,$cant);
?>
Este ultimo codigo produce 30 mil password totalmente diferentes, despues de los 30 mil empieza a repetir, nosé si te servira como dato pero tenia ganas de saber sobre eso .

Saludos.

------ EDIT ---------
OJO: Que despues de los 30 mil empieza a repetir, pero siempre y cuando se utilice el mismo micro segundo, esto lo digo porque tal vez no le tengas confianza, y a mi parecer es totalmente confiable, y tal vez si buscas encontraras una forma mas eficiente de producir esto y sin coincidencias.

Última edición por DarioDario; 30/08/2005 a las 22:12 Razón: Esta marcado ;-)
  #3 (permalink)  
Antiguo 02/09/2005, 15:21
Saldu
Invitado
 
Mensajes: n/a
Puntos:
Ta bien te entiendo..pero más allá de todo,cómo aplico esto? :
<?php
srand((double)microtime()*1000000); //Ejemplo sacado del manual

$pass = rand(100000,1000000000); //Utilizo esos limites para que lo que genere osile entre 6 y 10 caracteres

$cant = strlen($pass);

$pass = substr(md5($pass),0,$cant);
?> (tu segundo ejemplo)

Dónde,y cómo aplico el generador de passwords al azar? oseea, el generador dónde lo pongo? en el archivo de registro(el que puse al principio de todo) o lo pongo en el formulario? y después cómo hago para insertar ese password al azar y para mandarlo al mail (creo que para mandarlo al mail,hay que poner en el cuerpo del mensaje ".$password." pero no se cómo es la aplicación,dónde ponerlo y cómo.. alguien me pasa un ejemplo(en caso de que sea el formulario) y en caso de que sea en el mismo registrar.php que me pasen porffavor,cómo lo tendría que poner... Gracias..
  #4 (permalink)  
Antiguo 04/09/2005, 01:32
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
... ... ...
Si vaz a mandar el password resultante --solo-- por correo lo más lógico es que lo pongas en el mismo archivo que te hace el envio del correo... antes de enviarlo obviamente.

Cita:
Iniciado por Saldu
creo que para mandarlo al mail,hay que poner en el cuerpo del mensaje ".$password." pero no se cómo es la aplicación
Correcto. El "cuerpo del mensaje" no es más que una cadena que tú mismo vaz armando... no hay mayor ciencia:
Código PHP:
$pass"El resultado de mi función"// aplicas, obtienes un resultado

$cuerpo"El cuerpo. Añadimos el pass generado: ".$pass// concatenas
mail($para$subject$cuerpo); // etc... 
www.php.net/function.mail
www.php.net/language.types.string
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
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 15:16.