Проблема в том, что когда вы используете 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 прямо перед формой.Отправить.Это по-прежнему оставит вас открытым, поскольку у любого будет доступ к вашей функции расшифровки, но это сразу замаскирует ваши данные.
Несмотря на это, отправка этой формы происходит очень быстро, трудно сказать, что она скрытна.