php curl登录网站进行数据处理

php curl登录网站进行数据处理,php,curl,Php,Curl,试着这样做: $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'http://site/takelogin.php'); curl_setopt ($ch, CURLOPT_POST, 1); curl_setopt ($ch, CURLOPT_POSTFIELDS, 'username=USER&password=PASS'); curl_setopt ($ch, CURLOPT_COOKIEJAR, 'cookie.txt'); cu

试着这样做:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://site/takelogin.php');
curl_setopt ($ch, CURLOPT_POST, 1);
curl_setopt ($ch, CURLOPT_POSTFIELDS, 'username=USER&password=PASS');
curl_setopt ($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
$store = curl_exec ($ch);
curl_close ($ch);
一切都从login.php开始,但从goe到takelogin.php,如果用户名和密码正确,则重定向到acc.php,以便更好地理解login.php html端的发布部分,我认为这一点很重要:

<form action="takelogin.php" id="signup" method="post">
<input id="username" name="username" type="text" maxlength="25" value="">
<input id="password" name="password" type="password" maxlength="60" value="">
<input name="commit" type="submit" value="Login">
<input type="hidden" name="returnto" value="/acc.php"
即使在浏览器url栏中也尝试输入: http://site/takelogin.php?returnto=acc.php&username=USER&password=PASS 不走运


我的curl脚本中缺少了什么?

如果希望curl遵循php重定向,则需要使用以下命令:

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

但是表单中还有returnto字段,在curl脚本中没有使用。您需要该变量还是可选的?

如果需要提供基本身份验证的凭据,请确保在表单接收脚本中添加以下内容

curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");

默认情况下,Curl不遵循重定向,为此有CURLOPT_FOLLOWLOCATION


由于无法访问此登录系统,我们最多只能说登录脚本正在检查提交按钮的值,因此将commit=login添加到查询值中。

如果站点未使用基本身份验证,则没有意义。设置此值不会神奇地使用户/传递在基于表单的登录上工作。那么CURLOPT_FOLLOWLOCATION应该足够了,它必须为true才能告诉curl遵循重定向。false会禁用重定向,卷曲会保持不变。亲爱的上帝,我怎么会错过这个?!设置cookie名称和值如何?因为使用wget它可以工作:wget-O test.txt-no cookies-header Cookie:login=HASH