0

index.php

<?php
if($_POST) {
    $url = 'http://127.0.0.1/login.php';
    $socks = '127.0.0.1:9999';
    $fields = 'password=' . $_POST['captcha'] . '';

    $ch = curl_init();

    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22");
    //curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);
    //curl_setopt($ch, CURLOPT_PROXY, $socks);
    //curl_setopt($ch, CURLOPT_INTERFACE, 'eth0:12');
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt");
    curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt");
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
    curl_setopt($ch, CURLOPT_TIMEOUT, 3600);

    $result = curl_exec($ch);

    curl_close($ch);
}
?>
<form action="" method="POST">
    Password <input type="text" name="password" value="" />
    <input type="submit" value="Login" />
</form>

login.php

<?php
session_start();

$_SESSION["TestSession"] = 1;
setcookie("TestCookie", 1, time() + 3600);

if($_POST) {
    file_put_contents("login.txt", serialize($_POST));
}

echo 'OK';
?>

index.phpを実行し、パスワードを使用してフォームを送信すると、保存されていますlogin.txtが、保存されcookie.txtていません。TestCookieTestSession

問題がどこにあるのか本当にわからないので、どんな助けにも感謝します。

4

2 に答える 2

5

これが私がImpressPagesでこれを解決した方法です:

//initial request with login data

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.example.com/login.php');
curl_setopt($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/32.0.1700.107 Chrome/32.0.1700.107 Safari/537.36');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, "username=XXXXX&password=XXXXX");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_COOKIESESSION, true);
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie-name');  //could be empty, but cause problems on some hosts
curl_setopt($ch, CURLOPT_COOKIEFILE, '/var/www/ip4.x/file/tmp');  //could be empty, but cause problems on some hosts
$answer = curl_exec($ch);
if (curl_error($ch)) {
    echo curl_error($ch);
}

//another request preserving the session

curl_setopt($ch, CURLOPT_URL, 'http://www.example.com/profile');
curl_setopt($ch, CURLOPT_POST, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, "");
$answer = curl_exec($ch);
if (curl_error($ch)) {
    echo curl_error($ch);
}
于 2014-03-06T07:28:29.977 に答える
0

cookie.txtファイルへの完全なパスを使用してみてください。「c:\ xampp \ htdocs \ test\cookie.txt」または「/var/www/test/cookie.txt」のように。

于 2013-03-22T15:47:26.503 に答える