微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php curl – 发布asp.net viewstate值

我有以下代码从本地站点登录表单(用 PHP编写)登录到外部站点应用程序(asp.net app):
<?PHP
$curl_connection = curl_init('www.external.com/login.aspx');

curl_setopt($curl_connection,CURLOPT_CONNECTTIMEOUT,30);
curl_setopt($curl_connection,CURLOPT_USERAGENT,"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");
curl_setopt($curl_connection,CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl_connection,CURLOPT_SSL_VERIFYPEER,false);
curl_setopt($curl_connection,CURLOPT_FOLLOWLOCATION,1);

// Post data array
$post_data['LoginControl$UserName'] = 'ExampleUName';
$post_data['LoginControl$Password'] = 'ExamplePWord';

// Add form fields into an array to get ready to post
foreach ($post_data as $key => $value) 
  {
$post_items[] = $key . '=' . $value;
  }
$post_string = implode ('&',$post_items);

// Tell cURL which string to post
curl_setopt($curl_connection,CURLOPT_POSTFIELDS,$post_string);

// Execute and post
$result = curl_exec($curl_connection);
?>

我被定向到外部站点登录表单,而不是被定向到登录的应用程序.我认为问题是我需要传递viewstate值,但我不知道该怎么做呢?

我无法控制外部应用程序.但我们希望用户能够通过我们的网站登录该应用程序,以维护品牌等.

我最近发布了一些关于PHP cURL使用的其他线程,但我现在正处于我认为viewstate是问题的阶段……

谢谢,马克.

当试图刮掉asp.net页面时,这似乎是一个真正的问题.

这些页面包含一个名为“__VIEWSTATE”的隐藏字段,其中包含一个base64编码的va集; ues包含发送页面时的部分或全部页面状态.它通常还包含viewstate的SHA1.

这意味着您的帖子必须包含_VIEWSTATE中的所有内容,否则它将失败.

我已经能够发布一个简单的登录页面,该页面只有2个字段,但没有更复杂的页面,作者已选择将整个页面状态放在viewstate中.

到目前为止,我还没有找到解决方案.

原文地址:https://www.jb51.cc/php/134534.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐