Php 使用特殊的登录表单
我以前编写过成功处理登录/密码脚本的curl脚本。但我面对的是一个我无法打破的世界。这是我的密码:Php 使用特殊的登录表单,php,curl,Php,Curl,我以前编写过成功处理登录/密码脚本的curl脚本。但我面对的是一个我无法打破的世界。这是我的密码: <? $login_email = "xxxx" ; $login_pass = "xxx" ; $cookie_file_path = "cookie3.txt"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'http://89.31.145.108/athezza/index.php?php_action=IDENTIFICAT
<?
$login_email = "xxxx" ;
$login_pass = "xxx" ;
$cookie_file_path = "cookie3.txt";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://89.31.145.108/athezza/index.php?php_action=IDENTIFICATION_form&type_ident=b2b');
curl_setopt($ch, CURLOPT_POSTFIELDS,'login='.urlencode($login_email).'&password='.urlencode($login_pass).'&php_action=IDENTIFICATION_login&type_ident=b2b');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file_path);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file_path);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3");
curl_setopt($ch, CURLOPT_REFERER, "http://89.31.145.108/athezza/");
$page = curl_exec($ch);
var_dump($page);
?>
不知何故,我无法发送足够的POST元素,即使我认为我已经在代码中识别了所有这些元素。首先,必须使用完整路径值初始化选项
CURLOPT_-COOKIEFILE
/CURLOPT_-COOKIEJAR
。“cookie3.txt”是相对路径。
其次,不要手动生成POST数据,而是使用http\u build\u query()
因此,您的代码应该如下所示:
$login_email = "xxxx";
$login_pass = "xxx";
$cookie_file_path = dirname(__FILE__)."/cookie3.txt";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://89.31.145.108/athezza/index.php');
$data = array(
'php_action' => 'IDENTIFICATION_login', 'type_ident' => 'b2b', 'login' => $login_email, 'password' => $login_pass
);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file_path);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file_path);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3");
curl_setopt($ch, CURLOPT_REFERER, "http://89.31.145.108/athezza/");
$page = curl_exec($ch);
在发布登录数据之前,首先使用curl浏览登录页面,以便您的文件上有一些会话cookie
$home = curl_init();
curl_setopt($home, CURLOPT_URL, 'http://89.31.145.108/athezza/index.php');
curl_setopt($home, CURLOPT_COOKIEFILE, $cookie_file_path);
curl_setopt($home, CURLOPT_COOKIEJAR, $cookie_file_path);
curl_setopt($home, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3");
curl_exec($home);
curl_close($home);
现在使用您的数据在此之后发布登录凭据
$home = curl_init();
curl_setopt($home, CURLOPT_URL, 'http://89.31.145.108/athezza/index.php');
curl_setopt($home, CURLOPT_COOKIEFILE, $cookie_file_path);
curl_setopt($home, CURLOPT_COOKIEJAR, $cookie_file_path);
curl_setopt($home, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3");
curl_exec($home);
curl_close($home);