Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用特殊的登录表单_Php_Curl - Fatal编程技术网

Php 使用特殊的登录表单

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

我以前编写过成功处理登录/密码脚本的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=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);