我尝试使用javascript模拟大量登录,方法是在google Chrome控制台中粘贴一堆代码。
这些是我基本上做的:
var data = [{u:1, p:1}, {u:2, p:2}, {u:3, p:3} ...]
function login(u,p,callback){
$.post('/login.php', {u:u, p:p}).done(function(){
logout(callback);
});
}
function logout(callback){
// delete session cookies using javascript
callback();
}
function main(){
// recursive function to iterate in the data collection
login(data[counter].u, data[counter].p, function(){
if(counter++ < data.length){
main();
}
});
}
问题
我如何使用php curl做到这一点?这具体是关于如何模拟会话,以便在登录后也可以访问“仅成员操作”。
如果我不必使用销毁会话,如何清除会话,在javascript中你只需要删除存储在浏览器中的会话cookie。在curl php中,我该怎么做?
我的尝试
$url = 'login.php';
$fields = array(
'u' => urlencode('1'),
'p' => urlencode('1')
);
//url-ify the data for the POST
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
rtrim($fields_string, '&');
$ch = curl_init();
//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_POST, count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);
//execute post
$result = curl_exec($ch);
//close connection
curl_close($ch);
如您所见,我尝试了一套凭据。但除此之外,我不知道该怎么做。
答案 0 :(得分:0)
How do I clear the session?
在您的PHP代码中,您没有创建任何会话(我的意思是任何cookie文件)。所以你不需要清除任何东西。
但是,如果您需要创建会话/ Cookie,则必须使用CURLOPT_COOKIEJAR
和CURLOPT_COOKIEFILE
我也修改了你的代码。这是:
$fields = array(
'u' => '1',
'p' => '1'
);
$ch = curl_init($url);
curl_setopt($ch,CURLOPT_POST, count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS, http_build_query($fields));
// uncomment if you want to save cookie.
// curl_setopt($ch, CURLOPT_COOKIEJAR, '/var/tmp/cookie.txt');
// curl_setopt($ch, CURLOPT_COOKIEFILE, '/var/tmp/cookie.txt');
$result = curl_exec($ch);
curl_close($ch);
// do some other processes
// and then you can unlink('/var/tmp/cookie.txt') if you want