【问题标题】:php stream_context_create confusionphp stream_context_create 混淆
【发布时间】:2011-09-10 02:52:15
【问题描述】:

我知道 php 中的此功能创建并返回一个流上下文,其中包含选项预设中提供的任何选项。我也知道我可以用它来做我想做的事,那就是传递我的用户名和密码凭据......但我仍然不太明白如何使用这个功能以及它到底做了什么描述中的复杂词是真的让我很困惑......我有示例中的代码,但我不知道如何使用此功能将凭据传递给 www.confluence.com(只有我可以访问它,因为它在 apache 服务器上)。有人可以解释或举例说明我如何使用它来传递凭据吗?

编辑:这是总体摘要,很短所以不知道你是否称其为摘要......我被分配了一个应用程序来制作......大约有 10 种不同的方法可以做到这一点。由于他们给我的限制,我只能使用我发现的一种方式......我非常沮丧,因为使用谷歌日历有一种更简单的方法可以做到这一点,但由于安全原因他们拒绝了所以我被卡住了到汇合日历.....除此之外,为了使这更难,汇合由外部公司托管,所以我什至不能使用 get_contents 直接访问汇合日历,因为它要求登录凭据....我不是一个又一个的专业人士,一个又一个的障碍不断出现,让我的生活变得更加艰难,这只是废话……在过去的 3 周里,我花了好几个小时寻找解决方案,结果却被拒绝了……我终于得到了这个 get_contents东西可以工作,但现在登录凭据令人头疼,我从来没有处理过这个问题,所以我正在尽我所能,但我绝对不知道 stream_context_create 做了什么,或者如何使用它来传递我的凭据...Confluence the site我正在尝试访问我可以使用 m 手动登录y 登录,但代码不能....confluence 位于 apache 服务器上,因此其他人无法访问它....我无法分享我的登录信息,因为这是公司的安全问题...如果我没有任何意义,我很抱歉但我很沮丧,找不到解决办法,我的大脑已经被编码和阅读半死 相信我,我已经做了很多搜索和谷歌搜索......但我终于达到了我空白卡住的地步......

<?php
$opts = array(
  'http'=>array(
    'method'=>"GET",
    'header'=>"Accept-language: en\r\n" .
              "Cookie: foo=bar\r\n"
  )
);

$context = stream_context_create($opts);

/* Sends an http request to www.example.com
   with additional headers shown above */
$fp = fopen('http://www.example.com', 'r', false, $context);
fpassthru($fp);
fclose($fp);
?>

我在这里发现了一些与我正在做的类似的额外代码,但不太确定如何处理或如何修改它..

$data = array('account'=>'javier', 
              'password'=>'12345', 
              'submit'=>'SUBMIT'); 

$content = file_get_contents('http://localhost/misc/login.php', false, stream_context_create( array('http' => array('method' => 'POST', 'content' => http_build_query($data) ) ) ) ); 

$sFind = 'Logged in'; 
$search = strpos($content, $sFind); 

echo $content; 

if($search === false){ 
echo 'Invalid Account'; 
} 
else { 
echo 'Valid Account'; 
}  

我的另一个想法是使用 JavaScript 进行登录...我不知道哪个更好但我不允许下载任何库或这样的建议很好。

【问题讨论】:

  • 我不完全确定你在问什么。哪个部分让你感到困惑?您尝试过什么,这会给您带来什么错误?你能发布一些你的代码吗?

标签: php apache stream


【解决方案1】:

您正在使用“GET”方法,这样传递登录信息的情况并不常见。 您确定您请求的页面不使用 POST 吗?

个人在检索网页时,尤其是在发送 POST 或 GET 变量时,我更喜欢使用cURL

【讨论】:

  • 正如我所说,这是一个示例,它不是我的代码,我需要有关如何使用此功能发送登录凭据的帮助
  • @user761669 我建议了问题可能出在哪里,以及发送登录凭据的替代解决方案可能更简单。也许您可以使用更多信息来编辑您的问题:它会产生错误吗?是否有部分代码您不完全理解?你能把问题写得越具体,人们就能给你更好的答案。
猜你喜欢
  • 1970-01-01
  • 2010-11-05
  • 2013-01-04
  • 2016-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多