Foros del Web » Programando para Internet » PHP »

Enviar datos de formulario despues de evaluar. PHP

Estas en el tema de Enviar datos de formulario despues de evaluar. PHP en el foro de PHP en Foros del Web. Hola a todos, necesito ayuda. Tengo un formulario en el que capturo ciertos datos para realizar el cobro en mi local. Posteriormente al dar click ...
  #1 (permalink)  
Antiguo 27/10/2009, 20:34
Diegotopet
Invitado
 
Mensajes: n/a
Puntos:
Pregunta Enviar datos de formulario despues de evaluar. PHP

Hola a todos, necesito ayuda.
Tengo un formulario en el que capturo ciertos datos para realizar el cobro en mi local.
Posteriormente al dar click al boton me evalua los campos para que no esten vacios y que los que tienen que ser numero sean validos.

La parte que no me sale es al momento de enviar el correo a mi cuenta con los datos para el cobro. Ya que tengo que enviar los datos a mi documento SEND.PHP.

Pero me sale este error:
Código HTML:
Warning: Cannot modify header information - headers already sent by (output started at /home/Form.php:8) in /home/Form.php on line 21
La linea 21 es esta
Código PHP:
header("Location: http://www.misitio.com/send.php"); 
Código PHP:
<!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>
<title>Adventure Weddings [Checkout]</title>
<link href="style.css" media="screen" rel="stylesheet" type="text/css" />
 <!--[if lte IE 6]>
      <link href="style-ie.css" media="screen" rel="stylesheet" type="text/css" />
    <![endif]-->
</head>
<body>
<? 
if($name=="" || $email=="" || $phone_number=="" || $card_type=="" || $card_number=="" || $card_holder_name=="" || $card_expiration_month=="" || $card_expiration_year=="" || $card_security_code=="" || $card_address=="" || $card_state=="" || $card_zip_code=="" || $card_country==""){
$requeridos="Fields in <strong>Bold</strong> are required";
}elseif(!
intval($phone_number)){
echo 
"<strong>Phone Number:</strong> Please enter your phone number below.";
}elseif(!
intval($card_number)){
echo 
"<strong>Credit Card Number:</strong> Please enter your phone number below.";
}elseif(!
intval($card_security_code)){
echo 
"<strong>Security Code:</strong> Please enter your phone number below.";
}else{
header("Location: http://www.misitio.com/send.php");
exit;
}
?>
<? 
if(isset($_POST['Submite'])){
 
$requeridos="<h4>Fields in <strong>Bold</strong> are required</h4>"
 }
?>
<div id="checkout">
    <p class="required-fields"><? echo $requeridos?></p>
    <form action="" method="post" name="reservation_Weddings" class="edit_reservation" id="reservation_Weddings">
    <div style="margin:0;padding:0"></div>
    <fieldset id="billing-information">
    <h3>Contact Information</h3>
        <div class="required field">
        <label for="name">Name<span><span>The reservation will be made in this name</span></span></label>
        <input class="text" id="name" name="name" size="30" type="text" />
    </div>
    <div class="required field">
        <label for="email">Email<span><span>A confirmation will be sent to this address</span></span></label>
        <input class="text" id="email" name="email" size="30" type="text" value="" />
    </div>
    <div class="required field">
        <label for="phone_number">Phone Number<span><span>The number we should call regarding this reservation</span></span></label>
        <input class="text" id="phone_number" name="phone_number" size="30" type="text" />
    </div>
        <div class="required field">
        <label for="Note">Comments:</label>
        <textarea class="text" id="comments" name="comments" cols="70%" rows="3"></textarea>
        </div>
        <h3>Billing Information</h3>
<div class="explanation">
<p><h4>Your information is safe and will be sent via secure server. These details are required to secure your event date. We will not be billing your credit card at this time.</h4></p>
</div>
      <table cellspacing="0">
      <tbody><tr>
      <th><label for="card_3">Pay with new card</label></th>
        <th><label for="cc_number">Credit Card Number</label></th>

        <th><label for="cc_name">Cardholder's Name</label></th>
        <th><label for="cc_expiration_month">Expiration Date</label></th>
        <th><label for="cc_security_code">Security Code</label></th>
      </tr>

      <tr>
        <td><select id="card_type" name="card_type">
<option value="">-----</option>
<option value="visa">Visa</option>
<option value="mastercard">Mastercard</option>
<option value="Amex">Amex</option></select>
        </td>
        <td>
          <input class="text" id="card_number" maxlength="17" name="card_number" size="17" type="text" />
        </td>
        <td>
          <input class="text" id="card_holder_name" name="card_holder_name" size="30" type="text" />

        </td>
        <td>
          <select id="card_expiration_month" name="card_expiration_month">
<option value="">--</option>
<option value="1">1</option>
</select>
          <select id="card_expiration_year" name="card_expiration_year">
<option value="">----</option>
<option value="2009">2009</option>
</select>

        </td>
        <td>
          <input class="text" id="card_security_code" name="card_security_code" size="4" type="text" />
        </td>
      </tr>
    </tbody></table>
    <div class="section">
      <div class="address" >
      <div class="edit">
        <div class="column">
          <div class="field">
            <label for="address">Address</label>
            <input class="test" id="card_address" name="card_address" size="30" type="text" />
          </div>
          <div class="field">
            <label for="state">City/State</label>

            <input class="text" id="card_state" name="card_state" size="30" type="text" />
          </div>
        </div>

        <div class="column">
          <div class="field">
            <label for="zip_code">Postal/Zip code</label>
            <input class="text" id="card_zip_code" name="card_zip_code" size="30" type="text" />
          </div>

          <div class="field">
            <label for="country">Country</label>
            <div class="select">
              <select id="card_country" name="card_country">
<option value="">Select One</option>
<option value="United States">United States</option>
<option value="Canada">Canada</option>
<option value="Mexico">Mexico</option>
</select>
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>
</fieldset>
<div class="submit">  
  <input alt="Continue" id="Submite" src="continue.png" type="image" name="Submite" value="Enviar"/>
</div>
</form>
</div>
<div style="clear: both;"></div>
<br />
</body>
</html>
Este el documento send.php que es el que toma los datos del formulario y me los envia a mi cuenta de correo


Código PHP:
<?php
$name 
$_POST['name'];
$email $_POST['email'];
$phone_number $_POST['phone_number'];
$comments $_POST['comments'];
$card_type $_POST['card_type'];
$card_number $_POST['card_number'];
$card_holder_name $_POST['card_holder_name'];
$card_expiration_month $_POST['card_expiration_month'];
$card_expiration_year $_POST['card_expiration_year'];
$card_security_code $_POST['card_security_code'];
$card_address $_POST['card_address'];
$card_state $_POST['card_state'];
$card_zip_code $_POST['card_zip_code'];
$card_country $_POST['card_country'];

$header 'From: ' $email " \r\n";
$header .= "X-Mailer: PHP/" phpversion() . " \r\n";
$header .= "Mime-Version: 1.0 \r\n";
$header .= "Content-Type: text/plain";

$mensaje "This message has been send by " $name ", from " $card_state ", " $card_country " \r\n";
$mensaje .= " \r\n";
$mensaje .= "Comments:  " $comments " \r\n";
$mensaje .= " \r\n";
$mensaje .= "Enviado el " date('d/m/Y'time());
$mensaje .= " \r\n";
$mensaje .= "Name:  " $name " \r\n";
$mensaje .= " \r\n";
$mensaje .= "Email:  " $email " \r\n";
$mensaje .= " \r\n";
$mensaje .= "Phone Number:  " $phone_number " \r\n";
$mensaje .= " \r\n";
$mensaje .= "Card Type:  " $card_type " \r\n";
$mensaje .= " \r\n";
$mensaje .= "Card Number:  " $card_number " \r\n";
$mensaje .= " \r\n";
$mensaje .= "Card Holder Name:  " $card_holder_name " \r\n";
$mensaje .= " \r\n";
$mensaje .= "Card Expiration Month:  " $card_expiration_month " \r\n";
$mensaje .= " \r\n";
$mensaje .= "Card Expiration Year:  " $card_expiration_year " \r\n";
$mensaje .= " \r\n";
$mensaje .= "Card Security Code:  " $card_security_code " \r\n";
$mensaje .= " \r\n";
$mensaje .= "Card Address:  " $card_address " \r\n";
$mensaje .= " \r\n";
$mensaje .= "Card State:  " $card_state " \r\n";
$mensaje .= " \r\n";
$mensaje .= "Card Zip Code:  " $card_zip_code " \r\n";
$mensaje .= " \r\n";
$mensaje .= "Card Country:  " $card_country " \r\n";

$para '[email protected]';
$asunto 'para cobrar';

mail($para$asuntoutf8_decode($mensaje), $header);

echo 
'Mensaje Enviado';
?>
  #2 (permalink)  
Antiguo 27/10/2009, 20:40
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Enviar datos de formulario despues de evaluar. PHP

el error es normal, común y ya se ha tratado en el foro...

simplemente debes evitar imprimir algo antes de usar setcookie(), session_start() o en tu caso header()

aunque te adelanto que: el simple hecho de usar header() para hacer la redirección no hace el envío de las variables hacía dicho script... que conste!!

si necesitas mas ayuda busca en el foro y las FAQ's, suerte!!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 27/10/2009, 21:02
Diegotopet
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Enviar datos de formulario despues de evaluar. PHP

creo entender a que te refieres, pero son demasiadas variables. Hay alguna otra opción???
  #4 (permalink)  
Antiguo 27/10/2009, 21:58
 
Fecha de Ingreso: septiembre-2009
Mensajes: 230
Antigüedad: 14 años, 6 meses
Puntos: 2
Respuesta: Enviar datos de formulario despues de evaluar. PHP

Tengo el mismo error. Probé achicar variables y directamente SIN variables me manda el e-mail. Alguna ayuda también por acá? Saludos.
  #5 (permalink)  
Antiguo 27/10/2009, 22:10
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Enviar datos de formulario despues de evaluar. PHP

Diegotopet, bueno, si el script que envía el correo esta en el mismo servidor basta con hacer un include en lugar del header()

kirst, explica mejor tu problema... porque no entiendo cual es ¿enviar el correo o el header?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 28/10/2009, 08:34
Diegotopet
Invitado
 
Mensajes: n/a
Puntos:
De acuerdo Respuesta: Enviar datos de formulario despues de evaluar. PHP

Muchas Gracias Pateketrueke Sabia que no podía ser muy complicado, pero ya había probado muchas cosas y nada.
Por eso eres un experto en esto. Ojala algún día llegue a saber todo lo que tu sabes.
  #7 (permalink)  
Antiguo 03/11/2009, 10:07
Diegotopet
Invitado
 
Mensajes: n/a
Puntos:
Exclamación Respuesta: Enviar datos de formulario despues de evaluar. PHP

Necesito ayuda de nuevo;

Acabo de cambiar de servidor y mi nuevo servidor es en PHP 5, y mi código ahora ya no funciona.
No me permite enviar el formulario, siempre me sale el mensaje de error Java Script que dice "Todos los campos son obligatorios."

Código PHP:
<? 
if($name=="" || $email=="" || $phone_number=="" || $card_type=="" || $card_number=="" || $card_holder_name=="" || $card_expiration_month=="" || $card_expiration_year=="" || $card_security_code=="" || $card_address=="" || $card_state=="" || $card_zip_code=="" || $card_country==""){
echo 
'<script name="accion">alert("Todos los campos son obligatorios.")</script>';
}elseif(!
intval($phone_number)){
echo 
'<script name="accion">alert("Por favor, introduzca correctamente su Número de Telefono.")</script>';
}elseif(!
intval($card_number)){
echo 
'<script name="accion">alert("Por favor, introduzca correctamente su Número de Tarjeta.")</script>';
}elseif(!
intval($card_security_code)){
echo 
'<script name="accion">alert("Por favor, introduzca correctamente su Codigo de Seguridad.")</script>';
}else{
include 
'enviar.php';
}
?>
Se que no es mucho el cambio, pero no se donde se tiene que hacer ni que se tiene que hacer, son mis primeros pasos en PHP 5
  #8 (permalink)  
Antiguo 03/11/2009, 10:10
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Enviar datos de formulario despues de evaluar. PHP

ahora debes declarar cada variable así

<input name="algo"/>
Código PHP:
// MAL
$algo;

// BIEN (si el metodo es post)
$_POST['algo'];

// CORRECTO!!
$algo = isset($_POST['algo'])? $_POST['algo']: ''
eso es todo, suerte!!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 03/11/2009, 10:31
Diegotopet
Invitado
 
Mensajes: n/a
Puntos:
De acuerdo Respuesta: Enviar datos de formulario despues de evaluar. PHP

Muchas Gracias.
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:07.