Публикация данных формы с использованием POST с PHP - PullRequest
1 голос
/ 05 ноября 2010

Я искал это часами и все еще в растерянности.

У меня есть страница PHP (PAGE1.PHP) со ссылкой, и когда пользователь нажимает на ссылку, страница PHP понадобитсячтобы прочитать некоторые данные из базы данных и опубликовать эти данные с помощью POST на стороннем сайте.

Мне удалось сделать это с помощью CURL, однако проблема в том, что хотя данные публикуются, а сторонняя страница делаетпри правильной загрузке URL (в браузере) по-прежнему отображается как PAGE1.PHP, а не сторонний URL, на который я отправил сообщение.

Есть ли способ, как я могу это сделать?

У меня есть возможность создать форму на PAGE1.PHP, в которой данные, которые я прочитал из базы данных, будут скрыты, а ссылка отправлена.Я еще не пробовал, но должен работать, однако это означает, что данные, которые я читаю из БД, могут быть прочитаны пользователем, просто просмотрев источник.

Есть идеи, как мне это сделать?

Ответы [ 3 ]

4 голосов
/ 05 ноября 2010

URL-адрес в браузере правильно показывает ваш исходный URL-адрес, потому что это то, что запрашивал браузер, и это то, что обслуживало запрос;Ваша PHP-страница сделала POST-запрос за кулисами для получения данных, но затем отправила их обратно в ваш браузер.

Чтобы получить результат, который, я думаю, вам нужен, вам нужно перенаправить браузер, чтобы сделать сообщение,Вы правильно относитесь к вопросам скрытых данных;Похоже, вам, возможно, придется немного поработать над архитектурой, чтобы решить эту проблему.

1 голос
/ 05 ноября 2010

Проблема в том, что когда вы используете CURL для публикации, это ваш веб-сервер , который публикует, а не браузер пользователя.Поэтому, если какие-либо сеансы или файлы cookie используются, они не будут перенесены.

Я бы сделал то, что вы упомянули, создав скрытую форму и разместив данные таким образом.Вы можете быть умны в этом и сделать документ. Уже в jQuery, и как только скрытая форма загружена, вы можете опубликовать ее для пользователя.Несмотря на то, что у них еще есть небольшое окно для просмотра исходного текста, оно будет немного более упорядоченным.

<script>
$(document).ready(function() {
    $('#hiddenForm').submit();
});
</script>

Редактировать Полный пример:

<?

  $urlToPostTo = 'http://www.thirdPartyDomain.com/login';
  $varsToPost['user'] = 'username';
  $varsToPost['pass'] = 'password';

  ?>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
  <script>
    $(document).ready(function() {
        $('#hiddenForm').submit();
    });
  </script>
  <?

  echo '<form id="hiddenForm" action="'.$urlToPostTo.'" method="post">';

  /* create a hidden input for each var in 'varsToPost' */
  foreach($varsToPost as $varName=>$varValue) {
    echo '<input type="hidden" name="'.$varName.'" value="'.$varValue.'">';
  }

  echo '</form>';

?>

Просто добавьте / удалите переменные в массиве $varsToPost, и они будут автоматически подключены. Я предполагаю, что если вы передаете пароль / конфиденциальные данные, вы всегда можете зашифровать их в php и расшифровать в js прямо перед формой.Отправить.Это по-прежнему оставит вас открытым, поскольку у любого будет доступ к вашей функции расшифровки, но это сразу замаскирует ваши данные.

Несмотря на это, отправка этой формы происходит очень быстро, трудно сказать, что она скрытна.

0 голосов
/ 05 ноября 2010

Вы можете использовать функцию заголовка из PHP для реального перенаправления с данными POST.

Следуйте за некоторыми источниками для справки.

http://en.wikipedia.org/wiki/List_of_HTTP_header_fields

http://en.wikipedia.org/wiki/List_of_HTTP_status_codes

http://shiflett.org/articles/form-spoofing

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