Foros del Web » Programando para Internet » PHP »

a ver si me podeis ayudar con este codigo

Estas en el tema de a ver si me podeis ayudar con este codigo en el foro de PHP en Foros del Web. Bueno pues mi problema esq tengo un sistema de registro para 1 web q es el siguiente: <? include("config.php") ; if($registrar) { function quitar($texto) { ...
  #1 (permalink)  
Antiguo 23/03/2004, 16:03
 
Fecha de Ingreso: marzo-2004
Mensajes: 44
Antigüedad: 13 años, 8 meses
Puntos: 0
Pregunta a ver si me podeis ayudar con este codigo

Bueno pues mi problema esq tengo un sistema de registro para 1 web q es el siguiente:

<?
include("config.php") ;
if($registrar) {
function quitar($texto) {
$texto = trim($texto) ;
$texto = htmlspecialchars($texto) ;
return $texto ;
}
$nick = quitar($nick) ;
$email= quitar($email) ;
// Comprobar que el usuario existe en la base de datos
$resp = mysql_query("select id from usuarios where nick='$nick' or email='$email'") ;
if(mysql_num_rows($resp) != 0) {
echo "Ya existe un usuario con ese nick o email en la base de datos. Haz click <a href=javascript:history.back()>aquí</a> para regresar." ;
}
else {
$fecha = time() ;
$contrasena = quitar($contrasena) ;
$ip = $REMOTE_ADDR ;
$rango = 1 ;
$encryptar = md5($contrasena);
mysql_query("insert into usuarios (fecha,nick,contrasena,email,ip,rango) values ('$fecha','$nick','$contrasena','$email','$ip','$r ango')");
$destino = $email ;
$asunt = "Confirmación de Registro BlizzSpain";
$mensaje = "Usuario $nick\n\n A continuación se le han asignado los siguientes datos";
mail($destino,$asunt,$mensaje,"From: [email protected]");
echo "Usuario $nick registrado correctamente, en breve recibirá un email para la activación de su cuenta." ; }
}
else {
?>
<p>Los datos marcados con un asterisco (*) son obligatorios.
<script>
function revisar() {
if(formulario.nick.value.length < 3) { alert('El nick debe contener por lo mínimo 3 caractéres') ; return false ; }
if(formulario.contrasena.value.length < 5) { alert('La contraseña debe contener por lo mínimo 5 caractéres') ; return false ; }
if(formulario.email.value.length == 0) { alert('Debes poner un email válido') ; return false ; }
}
</script>
<form name="formulario" method="post" action="index.php?id=uregistrar" onsubmit="return revisar()">
<b>* Nick:</b><br>
<input type="text" name="nick" maxlength="20" class="form"><br>
<b>* Contraseña:</b><br>
<input type="password" name="contrasena" maxlength="20" class="form"><br>
<b>* Email:</b><br>
<input type="text" name="email" maxlength="40" class="form"><br><br>
<input type="submit" name="registrar" value="Registrar" class="form">
</form>
<?
}
mysql_close($conectar) ;
?>

Pues bien, cuando voy a registrar a 1 usuario, lo hace todo correctamente (mete toda la info en la base de datos), pero lo q no consigo es q mande el email con los datos.
Tengo el PostCast como Servidor SMTP de correo y he intentado mandar 1 mail desde el mismo programa y lo hace correctamente, osea q el problema esq el codigo php no manda bien el mail al servidor para q este luego lo mande al destinatario.
Por si sirve de algo uso Windows XP, y el php.ini lo tengo "creo" bien configurado la funcion mail().

A ver si podeis ayudarme, muchas gracias de antemano

Última edición por Gotrek; 23/03/2004 a las 16:06
  #2 (permalink)  
Antiguo 23/03/2004, 16:14
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Podrias usar un condicional para el mail() ya que este devuelve un "true" si puedo entregar el e-mail al MTA disponieble (en tu caso ese servidor SMTP que usas ..) y un "false" si no lo pudo entregar.

Código PHP:
if (mail(.....)){
echo 
"se envio OK...";
} else {
echo 
"no se envio...";

por lo demás ..la configuración de PHP en tu php.ini .. la directiva:

SMTP = .. debe apuntar a la IP (local) de tu servidor SMTP (donde esté ejecutandose) o bien "localhost" si está en el mismo PC que corre PHP. (prueba por IP tambien si está en "localhost": 127.0.0.1

Revisa también los log's de conexiónes de tu servidor SMTP a ver si hay algún intento de enviar e-mail pero estos no salgan por alguna razón .. o incluso esté bloqueando el envio del e-mail sobre todo si configurastes tu servidor con "Requiere autentificación para usar SMTP" (si es que ese servidor SMTP dispone de esa funcionalidad) ...

Configura un cliente de correo tipo Outlook para usar tu servidor SMTP y así compruebas que acepte conexiones (fuera del própio software del servidor ..).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 23/03/2004, 16:26
 
Fecha de Ingreso: marzo-2004
Mensajes: 44
Antigüedad: 13 años, 8 meses
Puntos: 0
q rapidez Cluster

weno por partes.. xD

este es mi php.ini (weno el mail fuction)

[mail function]
; For Win32 only.
SMTP = 127.0.0.1

; For Win32 only.
sendmail_from = [email protected]

He probado a poner localhost, mi IP de conexion y esa y nada. tb probe a desactivar el sendmail_from...

Y aqui te pongo el error q me da q antes se me olvido

Warning: mail(): "sendmail_from" not set in php.ini or custom "From:" header missing in C:\www\swcomunity\uregistrar.php on line 25

He revisado los logs del servidor y nada, solo consta q he mandado 1 mail y fue el q hice desde el propio servidor a mi propio correo y llego perfectamente, pero ni intentos fallidos ni na de na

Cita:
o incluso esté bloqueando el envio del e-mail sobre todo si configurastes tu servidor con "Requiere autentificación para usar SMTP"
Instale el PostCast Server xq vi en otro post q hablaste de el pero vamos q no veo por ningun sitio lo de "Requiere autentificación para usar SMTP"

Acabo de probar mandando 1 mail desde el outlook con el servidor local y lo manda perfectamente tb, sale el email en el servidor y acto seguido lo manda al destinatario...

Gracias otra vez ;)

Última edición por Gotrek; 23/03/2004 a las 16:35
  #4 (permalink)  
Antiguo 23/03/2004, 18:26
 
Fecha de Ingreso: marzo-2004
Mensajes: 44
Antigüedad: 13 años, 8 meses
Puntos: 0
Acabo de probar ha mandar 1 mail con este simple codigo:

<?
$enviar = mail("[email protected]","Probando funcion mail","esto es el texto del mail");
?>

y me sigue dando este error:

Warning: mail(): "sendmail_from" not set in php.ini or custom "From:" header missing in C:\www\new_SW\mail.php on line 2

He intentado hacerlo desde un hostin gratuito (hotpop.com, q te deja mandar mails mediante SMTP sin necesidad de autentificarte), he configurado el php.ini :

[mail function]
; For Win32 only.
SMTP = smtp.hotpop.com

; For Win32 only.
sendmail_from = [email protected]

y me da el mismo error:

Warning: mail(): "sendmail_from" not set in php.ini or custom "From:" header missing in C:\www\new_SW\mail.php on line 2


Ya si q no tengo ni idea de xq puede ser
  #5 (permalink)  
Antiguo 23/03/2004, 18:44
 
Fecha de Ingreso: abril-2003
Mensajes: 656
Antigüedad: 14 años, 7 meses
Puntos: 1
Para enviar mail, debes tener un servidor de correo en tu PC, hay varios que aconsejan en las facs, pero para mi es mejor usar la calse phpmailler,
http://www.programacion.com/php/articulo/phpmailer/
en este URL tienes un tutorial de como usarla, sin necesidad e configurar tu php.ini, ni tener server STP

Saludos
  #6 (permalink)  
Antiguo 23/03/2004, 19:17
 
Fecha de Ingreso: marzo-2004
Mensajes: 44
Antigüedad: 13 años, 8 meses
Puntos: 0
muchas gracias Jord1 me tira perfectamente la clase ;)
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 20:13.