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中.

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

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...