Foros del Web » Programando para Internet » PHP »

me pueden ayudar porfavor?!

Estas en el tema de me pueden ayudar porfavor?! en el foro de PHP en Foros del Web. Hola , como les va? , bueno vengo a solicitar su ayuda porque tengo un problemilla , resulta que yo andaba buscando un sistema de ...
  #1 (permalink)  
Antiguo 12/05/2003, 11:47
Avatar de aprendiz_82  
Fecha de Ingreso: diciembre-2002
Ubicación: algun lugar....
Mensajes: 535
Antigüedad: 15 años
Puntos: 0
me pueden ayudar porfavor?!

Hola , como les va? , bueno vengo a solicitar su ayuda porque tengo un problemilla , resulta que yo andaba buscando un sistema de recomendación de sitios web y me encontre con un script muy agradable y muy sencillo , el script estaba en ingles y modifique algunas cosas para pasarlas al español , pero el problema es :

Se supone que cuando uno ingresa una dirección de correo , si la dirección esta mal escrita debe darse una advertencia , para que el usuario pueda corregir la dirección , pues resulta que en este script no sucede eso , ya que si se ingresa un nombre , el sistema se va directamente al mensaje de agradecimiento y no avisa del error , entonces:

A que dirección se enviara el mensaje , si lo que se a escrito es un simple nombre?

Por eso les quisiera dejar el codigo del script para que ustedes lo vean y talvez me pudieran ayudar a corregir el error , ademas yo tengo un sitio donde pruebo los scripts les voy a dejar la dirección para que lo vean , de antemano gracias.

http://index1.webcindario.com/index.html

------------------------------------------------------------------------------------

INDEX.PHP

<!-- PleaseTell Script by JND Designs, 8th March 2002 -->
<!-- Pls visit www.jnddesigns.net or email us : [email protected] -->
<!-- PLS DO NOT REMOVE THIS NOTICE -->
<?
// Check the Install.txt file for installation help
include('config.php');
?>
<style>
body,td{font-family:verdana,arial;font-size:9pt}
</style>
<title>
<?=$PageTitle;?>
</title>
<SCRIPT LANGUAGE="JavaScript">
<!-- Begin
function createForm(number) {
data = "";
inter = "'";
if (number < 16 && number > -1) {
for (i=2; i <= number; i++) {
if (i < 10) spaces=" ";
else spaces=" ";
data = data + "Amigo " + i + " :" + spaces + "<input type='text' size=35 name='f[]'><br>";
}
if (document.layers) {
document.layers.cust.document.write(data);
document.layers.cust.document.close();
}
else {
if (document.all) {
cust.innerHTML = data;
}
}
}
else {
window.alert("Please select up to 15 entries.");
}
}

// End -->
</script>
<h2 align="center"><?=$PageHeader;?></h2>
<?
If(!$sub){
?>
<form name=counter>
<div align="center">
<table width="60%" border="0" cellspacing="1" cellpadding="0" bgcolor="#000066" align="center">
<tr>
<td>
<table width="100%" border="0" cellspacing="1" cellpadding="0" bgcolor="#99ccff">
<tr>
<td align="center"><b>Numero de Emails a Enviar</b>:
<select name="number">
<option value="1" SELECTED>1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
</select>
<input type=button value="Actualizar" onClick="createForm(counter.number.value);" name="button" class="but">
</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
</form>
<form action="<?=$PHP_SELF;?>" method="POST" name="webform">
<table width="60%" align="center" bgcolor="#333333" cellspacing="1" cellpadding="0">
<tr><td>
<table width="100%" align="center" cellpadding="2" cellspacing="0" bgcolor="#99ccff">
<tr>


<td align="center"><b>Tu Nombre</b>:
<input type="text" name="Name" size="35"></td>
</tr>
<tr>

<td align="center"><b>Tu Email</b>:
<input type="text" name="Email" size="35"></td>
</tr>
<tr valign="bottom">
<td align="center" height="31"><b>Ingresa El Mail De Destino</b></td>
</tr>
<tr><td></td></tr>
<tr><td align="center"><b>Amigo 1</b> : <input type="text" name="f[]" size="35"><br>
<span id="cust" style="position:relative;"></span>
</td></tr>
<tr><td align="center"><br><b>Tu Mensaje</b>:<br><textarea name="Message" cols="35" rows="5"><?=$PreMessage?></textarea></td></tr>
<tr align="center">
<td> <input type="submit" name="sub" value=" Enviar " class="but"></td>
</tr>
</table>
</td></tr></table>
</form>
<div align="center"><font size="-2">Created by <a href="http://www.jnddesigns.net">JND Designs</a> the PHP specialists</font></div>
<?
} else{
Function error($req){
echo"<br><br><h3 align=\"center\"><font color=\"#FF0000\">$req needed</font><br><a href=\"javascript:history.back()\">&laquo; Back</a></h3>";exit;
}
If(!$Name){error('Name');}
If(!$Email){error('Email');}
if($f[0] == ""){error('Friend 1 Email');}
$count= count($f);
For ($i= 1; $i <= $count; $i++) {
if (!$f[$i] == ""){
if(!eregi("[0-9a-z]([-_.+]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,}$", $f[$i])) {
$friend=$i+1;
echo"<br><br><h3 align=\"center\">El Mail De Tu Amigo $friend, <br><b><font color=\"#FF0000\">$f[$i]</font></b>, <br>Parece No Ser Valido. </h3><br><h3 align=\"center\"><a href=\"javascript:history.back(-1);\">&laquo; Back</a></h3>"; exit; }
}
}
If(!$Message){error('Message');}

echo"<h3 align=\"center\">Gracias Por Recomendarnos.</h3>";
for ($i= 0; $i <= $count; $i++) {
mail($f[$i], $Subject, $Message,"From: $Name<$Email>\r\nReply-To: $Name<$Email>\r\n");
}

If(isset($MailToMe)){
$msg= "Name: $Name
Email: $Email
-------------------------------------------------------------------
Mails sent to:\n";
$msg .=implode("\n", $f);
$msg .="\n-------------------------------------------------------------------";
mail($AdminEmail,"PleaseTell Form",$msg,"From: $Name<$Email>\r\nReply-To: $AdminEmail\r\n");
}

}

------------------------------------------------------------------------------------

CONFIG.PHP


<?
// PleaseTell Script by JND Designs, 8th March 2002
// Pls visit www.jnddesigns.net or email us : [email protected]
// PLS DO NOT REMOVE THIS NOTICE

$PageTitle="PleaseTell v.1.0 by JND Designs"; // On that top bar :)
$PageHeader="PleaseTell v.1.0"; // Page Header

$Subject = "Un Amigo Te Invita A Su Casa!"; //Subject of the mail sent out
$AdminEmail="[email protected]"; // This is Your Email address
$PreMessage ="La Familia Halliwell Quiere Invitarte A Su Casa , Entra En: http://lacasahalliwell.ya.st , Esperamos Que Te Agrade."; // Message to be seen in the form
$MailToMe="1" // 0 - No, 1 - Yes
?>
__________________
El Poder De Uno , El Poder De Todos:pirata:
Que Pasa
Femenina Online
  #2 (permalink)  
Antiguo 12/05/2003, 13:49
 
Fecha de Ingreso: noviembre-2002
Ubicación: Barcelona - España
Mensajes: 270
Antigüedad: 15 años
Puntos: 0
Aqui tienes un script para validar la dirección de correo

Código PHP:
<HTML>
<HEAD>
   <TITLE>Validación de direcciones de correo</TITLE>
</HEAD>
<BODY>
<CENTER>
<H1>VALIDACIÓN DE DIRECCIONES DE CORREO</H1>
<FORM ACTION="valida_correo.php" METHOD="POST">
<?php
   
echo '<P><INPUT TYPE="TEXT" NAME="cadena" VALUE="',
        
$cadena'" SIZE=50>';
?>
   <P><INPUT TYPE="SUBMIT" VALUE="VALIDAR">
      <INPUT TYPE="RESET" VALUE="LIMPIAR">
</FORM>
<?php
// Función que comprueba que no haya dos puntos seguidos
function comprobar_puntos($cadena)
   {
   
$seguir true;
   
// Se obtiene la posición del primer punto
   
$posicion strpos($cadena'.');
   
// Se comprueba que exista
   
while (($posicion) && ($seguir))
      {
      
// Se comprueba que el anterior y el siguiente no son . o @
      
if (($cadena[$posicion 1] != '.') &&
          (
$cadena[$posicion 1] != '.') &&
          (
$cadena[$posicion 1] != '@') &&
          (
$cadena[$posicion 1] != '@'))
          
// Se obtiene la subcadena a partir del punto
          
$cadena substr($cadena$posicion 1);
      else
          
$seguir false;
      
// Se vuelve a obtener la posición del primer punto
      
$posicion strpos($cadena'.');
      }
   return 
$seguir;
   }

function 
validar_correo ($cadena)
   {
   
// Primero se comprueba que sólo aparezca una arroba
   // y que al menos exista un punto decimal. Para lo que
   // se calcula la frecuencia de los caracteres
   
$caracteres count_chars($cadena);
   if ((
$caracteres[ord('@')] == 1) && ($caracteres[ord('.')]>0))
      {
      
// Se comprueba que sólo existan caracteres alfabéticos
      
$caracteres count_chars($cadena3);
      
$i 0;
      
$seguir true;
      while ((
$i strlen($cadena)) && $seguir)
         {
         
$posicion ord($cadena[$i]);
         if (
$posicion ord('0'))
            {
            
// El código del carácter no es numérico
            
if ($posicion != ord('.'))  // y no es el punto
                
$seguir false;
            }
         elseif ((
$posicion ord('9')) && ($posicion ord('@')))
            
$seguir false;  // Entre números y letras mayúsculas
         
elseif (($posicion ord('Z')) && ($posicion ord('a')))
            
$seguir false;  // Entre mayúsculas y minúsculas
         
elseif ($posicion ord('z'))
            
$seguir false;  // mayor que letras minúsculas
         
$i++;
         }
      if (
$seguir// Si de momento es correcto
         
{
         
// comprobar que detrás de @ hay caracteres
         //  y al menos un punto
         
$posicion1 strpos($cadena'@');
         
$posicion2 strrpos($cadena'.');
         
$seguir = (($posicion1 <= $posicion2) &&
                    (
$posicion2 < (strlen($cadena) - 1)) &&
                    (
$posicion1 <> 0));
         if (
$seguir)
            
$seguir comprobar_puntos($cadena);
         }

      return 
$seguir;
      }
   else
      {
      
// No tiene una arroba, ni un punto.
      
return  false;
      }
   }

   
// Determina si hay o no cadena de caracteres
   
if (!empty($cadena))
      if (
validar_correo($cadena))
         echo 
"'$cadena' es una dirección de correo válida<BR>";
      else
         echo 
"'$cadena' no es una dirección de correo válida<BR>";
?>
</CENTER>
</BODY>
</HTML>
  #3 (permalink)  
Antiguo 12/05/2003, 15:49
Avatar de aprendiz_82  
Fecha de Ingreso: diciembre-2002
Ubicación: algun lugar....
Mensajes: 535
Antigüedad: 15 años
Puntos: 0
perdon...

perdon por mi ignorancia y mi terquedad , solo una preguntilla si no es molestia , como te abras dado cuenta el script lo baje , no es mio y las cosas que cambie las modifique segun lo que fui entendiendo , como lo vi algo sencillo , pero en realidad yo no manejo php y quisiera saber:

donde coloco el codigo que me has proporcionado cocker? , nuevamente gracias y disculpas por la molestia
__________________
El Poder De Uno , El Poder De Todos:pirata:
Que Pasa
Femenina Online

Última edición por aprendiz_82; 12/05/2003 a las 20:29
  #4 (permalink)  
Antiguo 12/05/2003, 21:00
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Con expresiones regulares .. en un par de línes puedes validar una dirección de e-mail:

Código PHP:
if (!ereg("^([a-zA-Z0-9\._]+)\@([a-zA-Z0-9\.-]+)\.([a-zA-Z]{2,4})$",$_POST["email"])){
echo 
"el e-mail no es válido";
exit; 
// se para la ejecución del script ..

Por cierto .. tu código (ese que has puesto) ya valída la sintax de una dirección de e-mail usando expresiones regulares:

Código PHP:
if(!eregi("[0-9a-z]([-_.+]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,}$"$f[$i])) { 
$friend=$i+1;
echo
"<br><br><h3 align=\"center\">El Mail De Tu Amigo $friend, <br><b><font color=\"#FF0000\">$f[$i]</font></b>, <br>Parece No Ser Valido. </h3><br><h3 align=\"center\"><a href=\"javascript:history.back(-1);\">« Back</a></h3>"; exit; }


Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 12/05/2003 a las 21:03
  #5 (permalink)  
Antiguo 12/05/2003, 23:38
Avatar de drcyber  
Fecha de Ingreso: julio-2002
Mensajes: 826
Antigüedad: 15 años, 4 meses
Puntos: 2
Que script tan complejo para enviar un mail !!!...

Analiza bien el código y trata de determinar donde está el error. Ponerse a buscar el error es tedioso, pero vale la pena.

Saludos...
__________________
Dr. Cyber
Ingeniarte.com
(soy el mismo Takitei)
  #6 (permalink)  
Antiguo 13/05/2003, 00:02
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
drcyber ...

Por enviar un e-mail .. con una línea tipo mail(....) te sobrariá .. pero ese script que puso hace mas que eso ...

Si ves un poco el código por encima se vé que permite enviar un e-mail con cópia tanto al que recomiendan el servicio como al "webmaster" del sitio (ademas se lo controla con opcion .. enviar si o no copia ..) .. El e-mail lo valida (en su sintax) usando expresiones regulares .. Y parce que permite elegir a cuantos e-mails vas a enviar esa recomendación de esa web (el mensaje en definitiva) ..

Como veras .. es una "aplicación" para algo especifico como el de "recomendar esta web" con algunas opciones y funcionalidades.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #7 (permalink)  
Antiguo 13/05/2003, 00:37
Avatar de nuevo  
Fecha de Ingreso: mayo-2003
Ubicación: Spain
Mensajes: 2.009
Antigüedad: 14 años, 7 meses
Puntos: 2
hola

ok... lo entendi CLUSTER perdona...
__________________
3w.valenciadjs.com
3w.laislatv.com

Última edición por nuevo; 13/05/2003 a las 00:45
  #8 (permalink)  
Antiguo 13/05/2003, 00:43
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
nuevo .. las "ofertas" que tengas como las que mencionas .. sería recomendable que lo hicieras por privado al interesado via por ejemplo MP (mensaje privado) ...

No quiero que este mensaje se convierta un: "yo quiero tal script nuevo .. ¿me lo envias a tal e-mail?". (como suele pasar a veces cuando alquien ofrece o dice tener algo ..). Los interesados, please, contactesen en privado.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #9 (permalink)  
Antiguo 13/05/2003, 12:03
Avatar de aprendiz_82  
Fecha de Ingreso: diciembre-2002
Ubicación: algun lugar....
Mensajes: 535
Antigüedad: 15 años
Puntos: 0
puedo preguntar?

hola otra vez , disculpen mi terquedad , si despues de hacer esta pregunta ya no me quieren responder pues lo entendere , por ser tan necio , pero estube probando el script , si uno deja los campos de mail en blanco , uno recibe una advertencia para rellenar los campos , pero en caso que una ponga algo como esto:

e-mail: julio

y no le ponga la arroba , el script lo toma como bueno y no da ninguna advertencia , cluster me decia que el script ya valida los simbolos y eso es cierto , pero que sucede en caso de que uno no ponga la arroba , a donde enviara el mensaje ? , no va a ningun lado porque no es una direccion de mail , solo es un nombre , entonces , se puede hacer algo para solucionar eso o solo es cuestion de que el usuario se fije en lo que escribe , como dije si no me quieren contestar lo entendere ya que a veces soy un poco necio y algo torpe , pero si me contestan de ante mano les doy las gracias.
__________________
El Poder De Uno , El Poder De Todos:pirata:
Que Pasa
Femenina Online
  #10 (permalink)  
Antiguo 13/05/2003, 12:42
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
el aprendiz_82 ...

A veces sucede que en un mensaje se crean otros temas o preguntas paralelas .. Espero que lo entiendas.

Sobre tu problema ..

El código que usas del Sr.: <!-- Pls visit www.jnddesigns.net or email us : [email protected] -->

Tiene bastantes fallos .. en:
Código PHP:
If(!$Name){error('Name');}
If(!
$Email){error('Email');}
if(
$f[0] == ""){error('Friend 1 Email');} // aquí mira si el e-mail 1º se puso .. pero la expresion regular como veras está abajo .. no aquí ...
// tampoco entiendo para que hace esto .. pues el for iniciado en $i=0 pódrías eliminar esta comparación if($f[0])  .. 
// o usar bucles foreach() q es lo normal para recorrer arrys .. como $f[] ..

$countcount($f);
For (
$i1$i <= $count$i++) { 
if (!
$f[$i] == ""){
if(!
eregi("[0-9a-z]([-_.+]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,}$"$f[$i])) {  // abría que ver si esta expresión regular funciona bien .. 
$friend=$i+1;
echo
"<br><br><h3 align=\"center\">El Mail De Tu Amigo $friend, <br><b><font color=\"#FF0000\">$f[$i]</font></b>, <br>Parece No Ser Valido. </h3><br><h3 align=\"center\"><a href=\"javascript:history.back(-1);\">« Back</a></h3>"; exit; }
}

El principal .. es que si observas el código ... sólo valida la dirección de e-mail del 2º e-mail que coloques como destinatarios para recomendar esa web .. Y no valida por la expresion regular (ereg() ) ni el e-mail del remitente ni el la 1ª dirección del e-mail a quien recomiendan .. Eso, entre otras cosas que puede tener el script.

Te recomiendo que te pongas en contacto con dicho autor de esa aplicación para avisarle del problema y que te dé alguna solución . .. o bien descartes ese script y uses cualquier otro de recomendar una web.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #11 (permalink)  
Antiguo 13/05/2003, 13:23
Avatar de aprendiz_82  
Fecha de Ingreso: diciembre-2002
Ubicación: algun lugar....
Mensajes: 535
Antigüedad: 15 años
Puntos: 0
ahora si......

ya lo estuve probando y tienes razon , tratare de contactarlo y comunicarle esto , pero gracias por la ayuda y me disculpo por tanto molestar gracias. , cualquier ayuda que necesites en html me pueden preguntar y si esta dentro de mi alcance con gusto les ayudare ya que html si lo manejo mejor aunque no todo.
__________________
El Poder De Uno , El Poder De Todos:pirata:
Que Pasa
Femenina Online
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 08:34.