2

リモート サーバー ログイン システム用のボットを作成しています。

サンプル.php

<?php
$EMAIL      = "***";
$PASSWORD   = "***";
function cURL($url, $header=NULL, $cookie, $p=NULL)
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_HEADER, $header);
    curl_setopt($ch, CURLOPT_NOBODY, $header);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($ch, CURLOPT_COOKIE, $cookie);
    curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    if ($p) {
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $p);
    }
    $result = curl_exec($ch);
    if ($result) {
        return $result;
    } else {
        return curl_error($ch);
    }
    curl_close($ch);
}
$a = cURL("http://forum.donanimhaber.com/login2.asp",true,null,"Login=$EMAIL&password=$PASSWORD");
preg_match('%Set-Cookie: ([^;]+);%',$a,$b);
$c = cURL("http://forum.donanimhaber.com/login2.asp",true,$b[1],"Login=$EMAIL&password=$PASSWORD");
preg_match_all('%Set-Cookie: ([^;]+);%',$c,$d);
for($i=0;$i<count($d[0]);$i++)
    $cookie.=$d[1][$i].";";
echo cURL("forum.donanimhaber.com",null,$cookie,null);
?>

私はこのコード www.myhost.com/sample.php を使用しています...ログインは成功しましたが、フォーラム.donanimhaber.com をリダイレクトしていません...フォーラム.donanimhaber.com で、リンクをクリックすると、ブラウザが myhost をリダイレクトします.com/link.php で、空のページが表示されます。通常は、forum.donanimhaber.com/link.php である必要があります...

4

1 に答える 1

0

コードは、ページの正確なHTMLを生成し、それを出力します。そのページのすべてのリンクは相対リンクになります。のように、<a href="/page.php>...</a>。したがって、クリックすると、実際にはにリダイレクトされmysite.com/page.phpます。そして、それはあなたの設定かもしれないので、あなたは404が見つからず、空白のページを取得しています。

これを克服するには、フォーラムにリダイレクトするすべてのリンクを置き換える必要があります。または.htaccess、メインページを除くすべてのリンクを強制的に再修正するために使用します。

RewriteCond %{HTTP_HOST} ^website.com
RewriteRule (.*) http://forum.xyz.com/$1 [R=301,L]

# do not do any rewriting to this file
RewriteRule index\.php$ - [L]
于 2012-08-12T04:17:10.560 に答える