PHP curl-发布asp.net视图状态值

PHP curl-发布asp.net视图状态值,php,asp.net,authentication,curl,viewstate,Php,Asp.net,Authentication,Curl,Viewstate,我有以下代码可以从本地站点登录表单(用php编写)登录到外部站点应用程序(asp.net应用程序): 我被引导到外部站点的登录表单,而不是被引导到登录的应用程序。我认为问题在于我需要传递viewstate值,但我不确定如何进行传递 我无法控制外部应用程序。但我们希望用户能够通过我们的网站登录到应用程序,以维护品牌等 最近我发布了几个关于php cURL使用的帖子,但我现在认为viewstate是问题所在 谢谢你,马克。改变: curl_setopt($curl_connection, CUR

我有以下代码可以从本地站点登录表单(用php编写)登录到外部站点应用程序(asp.net应用程序):


我被引导到外部站点的登录表单,而不是被引导到登录的应用程序。我认为问题在于我需要传递viewstate值,但我不确定如何进行传递

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

最近我发布了几个关于php cURL使用的帖子,但我现在认为viewstate是问题所在

谢谢你,马克。

改变:

curl_setopt($curl_connection, CURLOPT_FOLLOWLOCATION, 1);
致:

您还需要设置一个cookie文件,看看CURLOPT_-COOKIEFILE

CURLOPT_-COOKIEFILE

包含cookie数据的文件的名称。cookie文件可以是Netscape格式,也可以只是简单的HTTP样式的头文件转储到文件中

CURLOPT_COOKIE

HTTP请求中要使用的“Cookie:”标头的内容。请注意,多个Cookie之间用分号和空格隔开(例如,“水果=苹果;颜色=红色”)

CURLOPT_COOKIEJAR

连接关闭时保存所有内部cookie的文件名

@看


在尝试刮取asp.net页面时,这似乎是一个真正的问题

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

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

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


到目前为止,我还没有找到一个解决方案。

如果不使用


rawurlencode($viewstate)

我最近也遇到了同样的问题,所以我就在这里继续我的工作,以防其他人也在寻找答案时偶然发现这条线索

我通过在每个POST请求之前向同一url发送一个GET请求,并将所有输入字段从GET的响应中划入一个键值对数组来解决这个问题。然后,我替换了该数组中的一些值(例如,登录字段值),并在随后的文章中将整个内容发送回。这样,我的POST请求也包含为该特定url生成的所有有效的_VIEWSTATE、_EVENTVALIDATOR和yada yada数据


通过这种方式,该站点允许我正常登录和访问子域。

谢谢-添加了这些,但仍然被定向到外部站点上的登录表单。.谢谢您的回复。我还得出结论,这是由于VIEWSTATE值造成的。
curl_setopt($curl_connection, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl_connection, CURLOPT_FOLLOWLOCATION, false);
curl_setopt($curl_connection, CURLOPT_COOKIEFILE, 'cookiefile.txt'); 
curl_setopt($curl_connection, CURLOPT_COOKIEJAR, 'cookiefile.txt');