开发者

Passing HTML Form to JSP page via PHP/Curl... pass not happening

I have an HTML form, being submitted to a PHP page. The PHP page needs to validate a captcha and then pass the form values to a JSP page. I have NO control over the JSP page. Captcha is working beautifully. Something is getting lost in my PHP page, as when it loads the informati开发者_如何学编程on on the JSP page, the CSS and headers of the target page aren't loading and the form data isn't being passed. I do not have access to the JSP page. Any ideas?

BTW, Captcha validation is working fine and the HTML works fine if I pass it directly to the JSP page:

 <?php
  require_once('recaptchalib.php');
  $privatekey = "privatekeyhere";
  $resp = recaptcha_check_answer ($privatekey,
                                $_SERVER["REMOTE_ADDR"],
                                $_POST["recaptcha_challenge_field"],
                                $_POST["recaptcha_response_field"]);

  if (!$resp->is_valid) {
    // What happens when the CAPTCHA was entered incorrectly
    die ("<p align='center'>The reCAPTCHA wasn't entered correctly. Please go back and try it again." .
         "(reCAPTCHA said: " . $resp->error . ")</p>");
  } else {


  $ipaddress = $_SERVER["REMOTE_ADDR"];
  $fname = $_POST['fname'];
  $address = $_POST['address'];
  $city = $_POST['city'];
  $state = $_POST['state'];
  $zip = $_POST['zip'];
  $phone = $_POST['phone'];
  $email = $_POST['email'];


  $h = curl_init();
  curl_setopt($h, CURLOPT_URL, "//remote JSP page"); 
  curl_setopt($h, CURLOPT_HEADER, true);
   curl_setopt($h, CURLOPT_POST, true);
  curl_setopt($h, CURLOPT_POSTFIELDS, array(

  'fname' => '$fname',
  'address' => '$address',
  'city' => '$city',
  'state' => '$state',
  'zip' => '$zip',
  'phone' => '$phone',
  'email' => '$email',
  ));
  curl_setopt($h, CURLOPT_RETURNTRANSFER, 1);

  $result = curl_exec($h);
  echo $result;


      }
  ?>


Problems I can spot right away:

  1. CURLOPT_POSTFIELD has to be a POST string, not an array.
  2. Even then, you're posting strings representing variable names (you should post the value instead.

For point 1, here's a simple cUrl tutorial by David Walsh, covering a case very similar to yours and containing a way to transform arrays in POST strings: http://davidwalsh.name/execute-http-post-php-curl

For point 2, strings inside 'single quotes' are not evaluated. To refer to a variable, you should use $var, not '$var'.

Bonus: anything in a POST/GET string should be urlencoded.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜