Передача HTML-формы на страницу JSP через PHP / Curl ... передача не происходит - PullRequest
3 голосов
/ 30 сентября 2011

У меня есть HTML-форма, которая отправляется на страницу PHP.Страница PHP должна проверить капчу, а затем передать значения формы на страницу JSP.Я не имею никакого контроля над страницей JSP.Капча работает прекрасно.Что-то теряется на моей странице PHP, так как при загрузке информации на странице JSP CSS и заголовки целевой страницы не загружаются, а данные формы не передаются.У меня нет доступа к странице JSP.Есть идеи?

Кстати, проверка капчи работает нормально, а HTML работает нормально, если я передаю ее непосредственно на страницу JSP:

 <?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 Ответ

1 голос
/ 30 сентября 2011

Проблемы, которые я могу сразу заметить:

  1. CURLOPT_POSTFIELD должна быть строкой POST, а не массивом.
  2. Даже тогда вы публикуете строки, представляющие имена переменных (вместо этого вы должны публиковать значение.

Для пункта 1 приведено простое руководство cUrl Дэвида Уолша, охватывающее случайочень похож на ваш и содержит способ преобразования массивов в строки POST: http://davidwalsh.name/execute-http-post-php-curl

Для пункта 2 строки внутри 'single quotes' не оцениваются. Для ссылки на переменную следует использовать $var,не '$var'.

Бонус: все, что находится в строке POST / GET, должно быть закодировано.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...