Pasar variable al siguiente .php - paypal - custom

Iniciado por extreme69, 27 Mayo 2012, 10:48 AM

0 Miembros y 1 Visitante están viendo este tema.

extreme69

Tengo que pasar el contenido de 2 textboxes de un .php al siguiente y de ese .php al siguiente.

Entremedio del segundo y tercer .php (en orden de ejecución) se realiza un pago de PayPal, siendo el tercer .php el destino final del usuario luego del pago.

Hasta ahora venía usando 1 sólo textbox, usaba:

$textbox1 = $_POST['textbox1'];

Eso en el primer .php.

Y $_GET en el segundo .php, luego metía el $_GET en "custom" en el form de paypal para que paypal me pasara los datos al .php de destino luego del pago:

<input type="hidden" name="custom" value="$_REQUEST["fname"]">

............

Pero ahora que necesito 2 textboxes, no sé como hacer.

Aclaración: NO puedo usar base de datos, tiene que ser puro php.

¿Será que puedo simplemente duplicar el código y agregar un "custom2" y luego en el tercer .php luego del pago de paypal recuperar los datos de ambas variables?

¿Por ejemplo así?:

Primer .php:
$textbox1 = $_POST['textbox1'];
$textbox2 = $_POST['textbox2'];


Segundo .php:
$textbox1 = $_GET['textbox1'];
$textbox2 = $_GET['textbox2'];


paypal.php:
<input type="hidden" name="custom" value="<?=$_REQUEST["textbox1"]?>
<input type="hidden" name="custom2" value="<?=$_REQUEST["textbox2"]?>


Tercer .php (success.php):
$customdata = $_REQUEST['custom'];
$customdata2 = $_REQUEST['custom2'];



Sino no sé como hacer... :S


La otra que ya probé y no me funcionó fue hacer un $_POST del $_GET en cada página luego de la primera que contiene el formulario con los 2 textboxes, pero sólo funciona del primer al segundo .php, luego deja de hacer el POST :(

Probé así:

$textbox1 = $_POST[$_GET['textbox1']];
$textbox2 = $_POST[$_GET['textbox2']];

Y así:


$textbox1 = $_POST[$_GET[$textbox1]];
$textbox2 = $_POST[$_GET[$textbox2]];

¿Me dan una manito?

extreme69

#1
¿Con session lo podré arreglar?

EDIT: Probé y no pude :S

WarGhost

Bueno primero que nada tenemos que diferenciar el etiquetado HTML del script PHP.
la verdad no he entendido nada, no sé si me he levantado algo lento hoy o que xD.

Si puedes explicarte un poco mejor gustosamente te ayudo.

Qué tienes tres formularios distintos, o sea que el usuario tiene que interaccionar en tres paginas tuyas?
Si es así, podrías hacerlo en un solo fichero php, simplemente asignado una variable:
$_GET["setp"]=1, $_GET["setp"]=2 etc... e ir guardado los datos de cada input en una variable de session que expire cada 10 min por ejemplo.

Un saludo y lo siento por no poderte ayudar más, pero como te digo no se si te explicaste mal o estoy muy espeso yo.
¿Qué culpa tengo yo de tener la sangre roja y el corazón a la izquierda?

extreme69

#3
Está todo desorganizado y en partes.

Pagina1.php:

<style type="text/css">
submit {
background-image:url(proceed.gif);
background-repeat:no-repeat;
width:146px;
height:30px;
border:none;
}
</style>

<?PHP
$textbox1 = $_POST['textbox1'];
$textbox2 = $_POST['textbox2'];
?>


<FORM ID="" ACTION="pagina2.php">
<label class="contact">Textbox1:</label>
<INPUT TYPE=TEXT class="textboxstyle" NAME="textbox1" MAXLENGTH=30><BR><BR>
<label class="contact">Textbox2:</label>
<INPUT TYPE=TEXT class="textboxstyle" NAME="textbox2" MAXLENGTH=40>
<br><br>
<INPUT TYPE=SUBMIT VALUE="" class="textboxstyle">
</FORM>


Pagina1 me manda a miweb/pagina2.php?textbox1=LoQuePuso&textbox2=LoQueHayaPuesto

Pagina2.php:


<style type="text/css">
.submit2 {
background-image:url(proceed.gif);
background-repeat:no-repeat;
width:146px;
height:30px;
border:none;
}
.submit3 {
background-image:url(back.gif);
background-repeat:no-repeat;
width:146px;
height:30px;
border:none;
}
</style>

<?php
if (empty($textbox1)) {
echo 
"<h2>Sorry! Textbox1 should not be empty</h2><br>";
}
?>


<?php
if (empty($textbox2)) {
echo 
"<h2>Sorry! Textbox2 should not be empty</h2><br>";
}
?>



<?php
if (empty($textbox1) || (empty($textbox2))){
}
else{
echo 
"<h2>Your text is ok!</h2>";
}
?>



<br><br>

Please Check Your Text:
<?php
echo $_GET['textbox1'];
?>

<br>
Your Slogan:
<?php
echo $_GET['textbox2'];
?>


<br><br><br>

<a href="pagina1.php">
<?php
if (empty($textbox1) || (empty($textbox2))){
echo 
"<input type=button name=back class=submit3>";
}
else{
}
?>

</a>


<a href="paypal.php">
<?php
if (empty($textbox1) || (empty($textbox2))){
}
else{
echo 
"<input type=button name=proceed class=submit2>";
}
?>

</a>


Paypal.php:



<?php
session_start
();
//--------------------------------------------------------------------------------------------//
// read the post from PayPal system and add 'cmd'
$req 'cmd=_notify-validate';
$i 0;
foreach (
$_REQUEST as $key => $value
{
$value urlencode(stripslashes($value));
$req .= "&$key=$value";
}

// post back to PayPal system to validate
$header .= "POST /cgi-bin/webscr HTTP/1.0\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "Content-Length: " strlen($req) . "\r\n\r\n";
$fp fsockopen ('www.paypal.com'80$errno$errstr30);

<
form action="https://www.paypal.com/cgi-bin/webscr" method="post" name="paypal">
<? $url=$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
$url "http://".substr($url,0,strlen($url)-11)."/"?>

<? $url2="http://".$_SERVER['HTTP_HOST'];?>
<input type="hidden" name="cmd" value="_cart">
<input type="hidden" name="upload" value="1">
 <input type="hidden" name="business" value="xxx@xxx.xxx">
<input type="hidden" name="currency_code" value="USD">
<input type="hidden" name="custom" value="<?=$_REQUEST["textbox1"]?>">
<input type="hidden" name="return" value="<?=$url?>succpaid.php" />
<input type="hidden" name="notify_url" value="<?=$url?>success.php">
<input type="hidden" name="cancel_return" value="<?=$url?>failure.php" />
<input type="hidden" name="receiver_email" value="" />
<input type="hidden" name="merchant_product_description" value="Photo Upload">
<input type="hidden" name="item_name_1" value="<?=$item?>" />
<input type="hidden" name="item_number_1" value="<?=$orderid?>" />
<input type="hidden" name="quantity_1" value="1" />
<input type="hidden" name="packageid_1" value="<?=$orderid?>" />
<input type="hidden" name="amount_1" value="259" />
</form>

bla bla bla...

<input type="submit" value="Submit" name='submit'>


Paypal.php me manda a success.php donde se determina si el pago fue realizado.


Success.php:

$item_name = $_REQUEST['item_name_1'];
$item_number = $_REQUEST['quantity_1'];
$payment_amount = $_REQUEST['amount_1'];

$payment_status = $_REQUEST['payment_status'];
$payment_currency = $_REQUEST['mc_currency'];
$txn_id = $_REQUEST['txn_id'];
$receiver_email = $_REQUEST['receiver_email'];
$payer_email = $_REQUEST['payer_email'];
$customdata = $_REQUEST['custom'];

$listing_id = $_REQUEST['list_1'];
$subscription_id =$_REQUEST['item_number1'];
$email = $_REQUEST['payer_email'];


if($payment_status=="Completed")
{

Y acá le manda un mail al admin con el contenido de los 2 textbox entre otras cosas.



Yo quiero, durante toda esta trayectoria, conservar el valor de $textbox1 y $textbox2, estos valores son el texto de los casilleros, que hasta la página 2 la pude pasar, pero de pagina2.php a paypal.php no logro pasar el valor, los ejemplos de lo que probé están más arriba en mi primer thread.

Paypal.php envia a paypal.com a realizar el pago, vuelve a success.php y chequea que se haya completado el pago para enviar el mail con los valores de $textbox1 y $textbox2, pero como el usuario sale de la página, va a paypal y vuelve, se me pierde el valor de las variables incluso si lograra llegar a pasarlas a paypal.php.

Lo que hacía cuando era una sóla linea de texto era utilizar en success.php:

$customdata = $_REQUEST['custom'];

pero PayPal permite sólo 1 linea de texto para el custom, no puedo poner custom2 por ejemplo.


WarGhost

uffff, la verdad yo cambiaba todo el código xD, pero bueno lo puedes hacer de muchas formas o con variables de session o bien hacer un formulario en pagina2.php para que envie los valores a paypal.php

Y para hacerlo con session en pagina dos nada mas empezar el script pon:
<?php session_start(); ?>

y luego una vez verifiques los datos:

$_SESSION['textbox2'] = $_GET['textbox2'];
$_SESSION['textbox1'] = $_GET['textbox1'];


y en el fichero paypal.php lo mismo, utiliza la variables ya asignadas.

pero como te digo, si quieres hacerlo bien, tienes que cambiar prácticamente todo el código, separando bien el html del php, filtrando bien todo.

Un saludo.
¿Qué culpa tengo yo de tener la sangre roja y el corazón a la izquierda?

extreme69

#5
Cita de: WarGhost en 27 Mayo 2012, 14:34 PM
uffff, la verdad yo cambiaba todo el código xD, pero bueno lo puedes hacer de muchas formas o con variables de session o bien hacer un formulario en pagina2.php para que envie los valores a paypal.php

Y para hacerlo con session en pagina dos nada mas empezar el script pon:
<?php session_start(); ?>

y luego una vez verifiques los datos:

$_SESSION['textbox2'] = $_GET['textbox2'];
$_SESSION['textbox1'] = $_GET['textbox1'];


y en el fichero paypal.php lo mismo, utiliza la variables ya asignadas.

pero como te digo, si quieres hacerlo bien, tienes que cambiar prácticamente todo el código, separando bien el html del php, filtrando bien todo.

Un saludo.

Gracias, ahí funcionó creo, pero ya no doy más del sueño :( lo voy a ver mañana más fresquito.

¿El session start va sólo donde empieza la sesión o en cada php que le sigue queriendo conservar los datos?

WarGhost

En cada pagina php tendrás que poner session_start();, para iniciar la session a no ser que utilices algún tipo de metodología par ano tener que hacerlo.

Por ejemplo, añadir nu fichero global y ahí iniciarla, entonces solo tendrás que añadir los require en cada fichero.
¿Qué culpa tengo yo de tener la sangre roja y el corazón a la izquierda?

extreme69

Cita de: WarGhost en 27 Mayo 2012, 15:06 PM
En cada pagina php tendrás que poner session_start();, para iniciar la session a no ser que utilices algún tipo de metodología par ano tener que hacerlo.

Por ejemplo, añadir nu fichero global y ahí iniciarla, entonces solo tendrás que añadir los require en cada fichero.

Gracias Shelly, quedó funcionando y arreglé un poco el relajo que tenía.