我有以下代码从本地站点登录表单(用
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 举报,一经查实,本站将立刻删除。