Foros del Web » Programando para Internet » PHP »

Capturar variable, concatenar y sustituir caracteres

Estas en el tema de Capturar variable, concatenar y sustituir caracteres en el foro de PHP en Foros del Web. Hola a tod@s, tengo un pequeño script para mandar emails con php que he sacado de las faqs y quiero modificarlo un poco, pero no ...
  #1 (permalink)  
Antiguo 31/08/2005, 03:49
Avatar de angel_dope  
Fecha de Ingreso: noviembre-2002
Ubicación: Valencia
Mensajes: 737
Antigüedad: 21 años, 4 meses
Puntos: 8
Capturar variable, concatenar y sustituir caracteres

Hola a tod@s, tengo un pequeño script para mandar emails con php que he sacado de las faqs y quiero modificarlo un poco, pero no tengo ni idea de php

El script que tengo es el siguiente

Código PHP:
<?php 
$sfrom
=""//cuenta que envia 
$sdestinatario=""//cuenta destino 
$ssubject=""//subject 
$shtml=""//mensaje 
$sheader="From:".$sfrom."\nReply-To:".$sfrom."\n"
$sheader=$sheader."X-Mailer:PHP/".phpversion()."\n"
$sheader=$sheader."Mime-Version: 1.0\n"
$sheader=$sheader."Content-Type: text/html"
mail($sdestinatario,$ssubject,$shtml,$sheader); 
echo 
"ENVIADO"
?>
Y lo que quiero hacer es que en un formulario anterior se introduzcan el destinatario y el texto del mensaje para mandarlo, de forma que al darle al enviar pase esos datos por post o get, los pille en esta página, concatene el nombre del remite con un texto predeterminado y después los inserte en el sitio que les corresponde. Además, antes de enviar, quiero sustituir todos los espacios por subrayados (_) es decir, al final quedaría algo asi

Código PHP:
<?php 

//capturamos los datos que se nos envian desde el form de la página anterior
//capturamos el campo REMITE y lo concatenamos con un texto preterminado
//para que quede REMITE@TEXTO y lo insertamosen la siguiente variable

$sfrom=""//cuenta que envia 

//insertamos el destinatario aqui
$sdestinatario=""//cuenta destino 

//insertamos el asunto
$ssubject=""//subject 

sustituimos todos los espacios del texto por subrayados y lo insertamos
$shtml
=""//mensaje 

$sheader="From:".$sfrom."\nReply-To:".$sfrom."\n"
$sheader=$sheader."X-Mailer:PHP/".phpversion()."\n"
$sheader=$sheader."Mime-Version: 1.0\n"
$sheader=$sheader."Content-Type: text/html"
mail($sdestinatario,$ssubject,$shtml,$sheader); 
echo 
"ENVIADO"
?>

Como debería hacer esto?? Weno, resumiendolas preguntas que tengo son: como debo declarar las variables, como les asignos los valores que vienen del form anterior, como concateno con otras variables o textos, como hago la sustitución de caracteres y... creo que ya está.

Muchas gracias por adelantado a tod@s, salu2
__________________
Vayamos por Partes :: Jack el Destripador
  #2 (permalink)  
Antiguo 31/08/2005, 04:20
 
Fecha de Ingreso: agosto-2005
Mensajes: 101
Antigüedad: 18 años, 7 meses
Puntos: 0
Vamos a ver, en el formulario tendrás que poner el método por el que lo envias, get o post, te lo pongo por si no lo sabes.

<form action="..." method="get">
<form action="..." method="post">

Luego a cada campo del formulario le pones el name, que es a partir de donde vas a sacar luego esos valores en la otra pagina.

En la siguiente pagina para acceder a los valores introducidos lo haces por medio de $_GET o $_POST de esta manera:

Si a un campo le habias puesto el nombre de email por ejemplo, ese valor se queda recogido en $_GET["email"] o $_POST["email"]

Para concatenar texto se pone el punto entre una cadena y otra, por ejemplo:

Código PHP:
$nombre "Pepito";
$apellido "Perez";

$nombreCompleto $nombre." ".$apellido
Para sustituir caracteres:

str_replace ( cadena_buscada, cadena_sustituta, cadena_original)

En tu caso, seria:
Código PHP:
$cadena str_replace(" ""_"tuCadena); 
Aqui tienes todas las funciones que hay en PHP para las cadenas:

http://es2.php.net/manual/es/ref.strings.php
  #3 (permalink)  
Antiguo 31/08/2005, 04:39
Avatar de angel_dope  
Fecha de Ingreso: noviembre-2002
Ubicación: Valencia
Mensajes: 737
Antigüedad: 21 años, 4 meses
Puntos: 8
Muchas gracias, lo acabo de probar, pero no me acaba de funcionar. Os explico un poco mejor lo que estoy haciendo, porque puede ayudar. Lo que estoy haciendo es un minisistema de envio de sms a moviles amena, es un poco cutre, pero funciona. Los moviles amena, pueden darse de alta en la web de amena para tener una cuenta de correo que es [email protected] y se se le envia un email a este correo, al movil llega un sms con el remite del correo. De esta manera podemos enviar correos a esa dirección poniendo como remite el texto que queremos enviar y de esta manera el destinatario puede leerlo, y eso es lo que estoy haciendo, asi que por ahora tengo un formulario donde se pide el destinatario y el texto y la página de envio. Algo debo de haber hecho mal, porque ahora ya no funciona, pero antes si que iba, os pongo el código del formulario, el del php que tengo ahora y que no funciona y el del php que si que funciona por si alguien ve el error.

Este Funciona perfectamente pero claro, hay que modificar a mano cada vez el destinatario y el texto del remite para que le llegue bien
Código PHP:
<?php 
$sfrom
="Hola_esto_es_una_prueba_para_recibir_este_texto_en_el_movil"//cuenta que envia 
$sdestinatario="[email protected]"//cuenta destino 
$ssubject="Envio sms"//subject 
$shtml="Q tal,esto es un sms q t he enviado.El texto se corresponde con el remite :P"//mensaje 
$sheader="From:".$sfrom."\nReply-To:".$sfrom."\n"
$sheader=$sheader."X-Mailer:PHP/".phpversion()."\n"
$sheader=$sheader."Mime-Version: 1.0\n"
$sheader=$sheader."Content-Type: text/html"
mail($sdestinatario,$ssubject,$shtml,$sheader); 
echo 
"ENVIADO"
?>

Este es el formulario completo, he puesto un máximo de 122 caracteres pero varia en funcion del servidor desde donde se envia.

Código PHP:
<html>
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<
title>Documento sin t&iacute;tulo</title>
</
head>

<
body>
<
form name="form1" method="post" action="sms.php">
  <
table width="80%"  border="1" cellspacing="0" cellpadding="0">
    <
tr>
      <
td width="43%"><b><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Destinatario:</font></b></td>
      <
td width="25%"><b><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
        <
input name="destino" type="text" id="destino" maxlength="9">
      </
font></b></td>
      <
td width="32%"><b><font size="2" face="Verdana, Arial, Helvetica, sans-serif">M&oacute;vil al que quieres enviarlo. </font></b></td>
    </
tr>
    <
tr>
      <
td><b><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Texto del mensaje: </font></b></td>
      <
td><b><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
        <
input name="texto" type="text" id="texto" value="" maxlength="122">
      </
font></b></td>
      <
td><b><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Texto a enviarM&aacute;ximo 122 caracteresUsa solo letrasnumerosespaciospuntos o subrayados.Si pones cualquier otro simbolo el mensaje no llegara. </font></b></td>
    </
tr>
    <
tr>
      <
td>&nbsp;</td>
      <
td colspan="2"><b><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
        <
input type="submit" name="Submit" value="Enviar">
      </
font></b></td>
    </
tr>
  </
table>
  <
p>&nbsp;</p>
  <
p>&nbsp;  </p>
  <
p>&nbsp;    </p>
</
form>
</
body>
</
html
Y este es el php modificado que por ahora no me funciona, algo debo haber hecho mal. Lo de los espacios es porque si se meten espacios en el remite, no funciona.

Código PHP:
<?php 
$destino 
$_POST["destino"]
$texto $_POST["texto"]
$texto str_replace " ""_"$texto)

$sfrom=$texto//cuenta que envia 
$sdestinatario=$destino"@amena.com"//cuenta destino 
$ssubject="Envio sms"//subject 
$shtml="Q tal,esto es un sms q t he enviado.El texto se corresponde con el remite :P"//mensaje 
$sheader="From:".$sfrom."\nReply-To:".$sfrom."\n"
$sheader=$sheader."X-Mailer:PHP/".phpversion()."\n"
$sheader=$sheader."Mime-Version: 1.0\n"
$sheader=$sheader."Content-Type: text/html"
mail($sdestinatario,$ssubject,$shtml,$sheader); 
echo 
"ENVIADO"
?>
A ver si me podeis echar una mano, y de paso, quien quiera aprovechar y utilizarlo... los dos unicos requisitos son que el destinatario sea amena y que esté dado de alta en el servicio de email. Salu2
__________________
Vayamos por Partes :: Jack el Destripador
  #4 (permalink)  
Antiguo 31/08/2005, 04:48
 
Fecha de Ingreso: agosto-2005
Mensajes: 101
Antigüedad: 18 años, 7 meses
Puntos: 0
Te falta el punto y coma en las 3 primeras lineas.
  #5 (permalink)  
Antiguo 31/08/2005, 04:52
Avatar de angel_dope  
Fecha de Ingreso: noviembre-2002
Ubicación: Valencia
Mensajes: 737
Antigüedad: 21 años, 4 meses
Puntos: 8
Joe es verdad!!!! Era eso, claro, la costumbre de trabajar en asp, que ahi las sentencias no se acaban jejeje
__________________
Vayamos por Partes :: Jack el Destripador
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 03:01.