Link to home
Start Free TrialLog in
Avatar of sabecs
sabecs

asked on

Can I post form data without a form using PHP?

I have already collected the data to be sent to PayPal previously and would just like to go to PayPal for  processing the data without needing  someone to submit  a form.

<form action="https://www.paypal.com/au/cgi-bin/webscr" method="post">
 <input type="hidden" name="cmd" value="_xclick">
<input type="hidden" name="business" value="test@test.com.au">
 <input type="hidden" name="item_name" value="Sample Business -Invoice Payment">
 <input type="hidden" name="item_number" value="<?php echo "Invoice: ".$id; ?>">
 <input type="hidden" name="email" value="<?php echo $_POST['email']; ?>">
 <input type="hidden" name="quantity" value="1">                        
 <input type="hidden" name="amount" value="<?php echo $amount; ?>">
 <input type="hidden" name="invoice" value="<?php echo $id; ?>">
 <input type="hidden" name="first_name" value="<?php echo $_POST['first_name']; ?>">
 <input type="hidden" name="last_name" value="<?php echo $_POST['last_name']; ?>">
 <input type="hidden" name="address1" value="<?php echo $_POST['address1']; ?>">
 <input type="hidden" name="city" value="<?php echo $_POST['city']; ?>">
 <input type="hidden" name="state" value="<?php echo $_POST['state']; ?>">

I just need a way of automatically submittting or sending the data to PayPal, I hope this makes sense.

Thanks in advance for you help and feedback.
Avatar of mostart
mostart

hmm... sounds a bit strange to me. Someone needs to "push the button" in the end because otherwise you would not have any script run at all don't you ?

So if you already have all data, you could surely just open your php script in your browser, or run it on the command line to post your data to the PayPal API.

Still I'm not sure if I really understood your problem ??
Just put a little javascript after your form definition:

<script type="text/javascript">
document.forms[0].submit();
</script>

Open in new window

Hi,
to send POST-Vars you could directly connect to the foreign server and send your data using fputs(), see attached example code (taken from a german PHP FAQ).

All this script does is simulate form submission by "hand craftign" all necessary HTTP-params.

The example sends 2 parameters (pid, poll_vore_number) to the server www.linux.com.

Change the function call to PostToHost() to fit your needs.

Regards
 Marc

function PostToHost($host, $path, $referer, $data_to_send) {
  $fp = fsockopen($host, 80);
  printf("Open!\n");
  fputs($fp, "POST $path HTTP/1.1\r\n");
  fputs($fp, "Host: $host\r\n");
  fputs($fp, "Referer: $referer\r\n");
  fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n");
  fputs($fp, "Content-length: ". strlen($data_to_send) ."\r\n");
  fputs($fp, "Connection: close\r\n\r\n");
  fputs($fp, $data_to_send);
  printf("Sent!\n");
  while(!feof($fp)) {
      $res .= fgets($fp, 128);
  }
  printf("Done!\n");
  fclose($fp);
 
  return $res;
}
 
$data = "pid=14&poll_vote_number=2";
 
printf("Go!\n");
$x = PostToHost(
              "www.linux.com",
              "/polls/index.phtml",
              "http://www.linux.com/polls/index.phtml?pid=14",
              $data
);

Open in new window

Avatar of sabecs

ASKER

Thanks for your feedback,
Basically I have an order form on a previous page that takes the users input and passes it to a PHP page that processes the order.  If the payment option selected by the customer is PayPal then I need the information they have already provided to go to PayPal so that they complete the payment process. If they did not select PayPal as their payment option then some other code will be executed.
so then make your script which processes the users input go to Paypal in case paypal is selected.
Avatar of sabecs

ASKER

Thanks for your help, the inital order form is already complicated by validation and other code so would I prefer to keep the PayPal code on another page, it will only execute if PayPal is selected.
ASKER CERTIFIED SOLUTION
Avatar of mostart
mostart

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of sabecs

ASKER

Thanks mostart for all your comments and help.