问题: 是否可以登录站点然后从该用户下的站点读取信息(在PHP中)?
例如: 许多网站都是动态的,并且从数据库中获取PHP绘图信息让我们说example.com登录了。
在显示的页面example.com/test.php中显示:“你好用户”,当没有登录时会显示:“你不是用户在这里登录”
让我们说认证过程是通过会话,用户将通过发布带有“user”和“pass”标签的表单进行登录,如果正确的话会启动会话,允许用户在example.com上查看消息。 /test.php
问题: 是否可以登录网站,然后从该用户下的网站上读取信息?
我一直在环顾四周,不知道如何处理这个问题。什么都有帮助。提前谢谢。
答案 0 :(得分:1)
当然,您可以使用file_get_contents + streams和/或curl来获取PHP中的数据。有些库允许你在php中执行javascript,所以甚至可以处理动态页面。
问题是,无论你想要做什么都值得在PHP中基本构建浏览器的所有工作。
答案 1 :(得分:0)
PHP can do this但不是为此而设计的。
PHP语法基于Perl,可能更适合。你也可以试试Python。
答案 2 :(得分:0)
你可以(卷曲)
$ckfile = tempnam ("/tmp", "CURLCOOKIE");
$ch = curl_init("http://example.com/index.php");
curl_setopt($ch, CURLOPT_COOKIEFILE, $ckfile);
curl_setopt($ch, CURLOPT_COOKIEJAR, $ckfile);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$output = curl_exec ($ch);
curl_close($ch);
$ch = curl_init();
$fields = array(
'username' => 'genesis',
'pass' => 'pass',
'other' => 'post fields'
);
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
curl_setopt($ch, CURLOPT_URL, "http://example.com/login.php");
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_COOKIEFILE, $ckfile);
curl_setopt($ch, CURLOPT_COOKIEJAR, $ckfile);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_POSTFIELDS,$fields_string);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
$result = curl_exec($ch);
curl_close($ch);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://example.com/logged_page.php");
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_COOKIEFILE, $ckfile);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_COOKIEJAR, $ckfile);
curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
$needed_information = curl_exec($ch);
curl_close($ch);
答案 3 :(得分:0)
如果domain A,B,其中A!= B,则由于same origin policy(轻松),您无法执行此操作。你可以进入SSO。有一些库可用,我还没有尝试过例如=> http://www.jasny.net/articles/simple-single-sign-on-for-php/