通过PHP / Curl将HTML表单传递给JSP页面...传递没有发生

时间:2011-09-29 20:13:43

标签: php forms curl

我有一个HTML表单,被提交到PHP页面。 PHP页面需要验证验证码,然后将表单值传递给JSP页面。我无法控制JSP页面。 Captcha工作得很漂亮。我的PHP页面中有些东西丢失了,因为当它加载JSP页面上的信息时,目标页面的CSS和标题没有加载,表单数据也没有被传递。我无权访问JSP页面。有什么想法吗?

BTW,Captcha验证工作正常,如果我直接将它传递给JSP页面,HTML工作正常:

 <?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;


      }
  ?>

1 个答案:

答案 0 :(得分:1)

我可以立即发现的问题:

  1. CURLOPT_POSTFIELD必须是POST字符串,而不是数组。
  2. 即便如此,您还是发布了代表变量名称的字符串(您应该发布该值。
  3. 对于第1点,这是David Walsh的一个简单的cUrl教程,涵盖了一个与你的非常相似的案例,并且包含了一种在POST字符串中转换数组的方法:http://davidwalsh.name/execute-http-post-php-curl

    对于第2点,不评估'single quotes'内的字符串。要引用变量,您应该使用$var,而不是'$var'

    奖励:POST / GET字符串中的任何内容都应该是urlencoded。