远程登录并在PHP中使用cURL显示内容

远程登录并在PHP中使用cURL显示内容,php,curl,login,libcurl,Php,Curl,Login,Libcurl,我正在使用PHP中的cURL登录到我的远程服务器。我已成功登录远程URL,但似乎无法显示该页面的内容。以下是我目前的代码: <?php $username = 'Blah'; $password = 'BlahBlah'; $ch = curl_init(); $postdata="email=$username&password=$password"; curl_setopt ($ch, CURLOPT_URL,"http://www.example.com/login.ph

我正在使用PHP中的cURL登录到我的远程服务器。我已成功登录远程URL,但似乎无法显示该页面的内容。以下是我目前的代码:

<?php

$username = 'Blah';
$password = 'BlahBlah';

$ch = curl_init();
$postdata="email=$username&password=$password";
curl_setopt ($ch, CURLOPT_URL,"http://www.example.com/login.php");
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6");
curl_setopt ($ch, CURLOPT_HEADER, true);
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt ($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
curl_setopt ($ch, CURLOPT_REFERER, "http://www.example.com/login.php");
curl_setopt ($ch, CURLOPT_POSTFIELDS, $postdata);
curl_setopt ($ch, CURLOPT_POST, 1);
$result = curl_exec($ch);

curl_setopt($ch, CURLOPT_URL, "http://www.example.com/User/Home.php") ;
$result2 = curl_exec($ch) ;

echo $result2 ;

curl_close($ch);

?>

它可能没有遵循重定向。使用:

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

PHP中有许多类型的值,当
echo
”发出时不会产生输出。在我的脑海中,这包括
bool(false)
NULL
(清空字符串)。也许更多。要查看它们之间的差异,请使用
var\u dump
,这将区分所有它们$结果2可能是emptystring或bool(false),使用echo无法判断是哪个结果。但是,考虑到http头包含
Content Length:0
,它几乎肯定是清空的。另外,$username和$password不是URL编码的,因此如果它们在
application/x-www-urlencoded
-格式中包含任何具有特殊含义的字符,服务器将收到错误的用户名/密码。这包括空格、
&
=
,以及其他一些空格。它们需要url编码,比如
$postdata='email='.urlencode($username)。&password='.urlencode($password),另一件事是,在调试curl代码时,启用CURLOPT_VERBOSE,它会打印很多有用的调试信息


但是@Marshall House是正确的,服务器发送了一个
HTTP/1.1 302临时移动的
url重定向,它希望您遵循该重定向。。。而你没有。您可以告诉curl使用CURLOPT\u FOLLOWLOCATION自动跟踪http重定向。

我刚刚意识到我的远程站点使用的是$\u会话,而不是$\u COOKIES。我需要怎么做?它还在用饼干。如果没有cookies,你就不能有会话。好吧,我只是打印出标题,因为在我添加了你告诉我的代码行之后,它不再回荡空白屏幕,而是回荡login.php页面。我检查了标题,并更新了上面的代码以反映它所说的内容。1。确保您正在从登录表单卷曲表单操作属性。2.请仔细检查您的登录凭据。仅供参考:您可以在没有Cookie的情况下进行会话
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);