curl を使用して外部 Web サイトにログインしようとしています。ユーザーにインデックス ページでユーザー名とパスワードを入力してもらい、ユーザーが送信ボタンをクリックすると、ログインフォームがユーザー名とパスワードの両方を logincheck.php に投稿します。そこで、ユーザー名がデータベースに登録されているかどうかを確認します。これが true の場合、ユーザー名とパスワードを外部サイトに転送し、そこにログインを試みる必要があります。そうでない場合は、「失敗しました」というエコーが表示されます。
<?php
error_reporting(-1);
ob_start();
$host="XXXXXXX";
$username="XXXXXXX";
$password="XXXXXXX";
$db_name="XXXXXXX";
$tbl_name="XXXXXXX";
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
$myusername=$_POST['loginid'];
$mypassword=$_POST['password'];
$loginUrl1 = 'http://externalwebsite.com/';
$myusername = stripslashes($myusername);
$myusername = mysql_real_escape_string($myusername);
$sql="SELECT * FROM $tbl_name WHERE login='$myusername'";
$result=mysql_query($sql);
if (false === $result) {
echo mysql_error(); exit;
}
$count=mysql_num_rows($result);
$cookieFile = "test/myCookiefile.txt";
if(!file_exists($cookieFile)) {
$fh = fopen($cookieFile, "w");
fwrite($fh, "");
fclose($fh);
}
if($count==1){
session_start();
$_SESSION['myusername'] = $myusername;
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $loginUrl1);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, 'gebruikersnaam='.$myusername.'&wachtwoord='.$mypassword);
curl_setopt($curl, CURLOPT_FAILONERROR, true);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_COOKIEFILE, $cookieFile);
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookieFile);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_exec($curl);
$result = curl_exec($curl);
header('Location: http://externalwebsite.com/');
curl_close();
}
else {
echo "failed";
}
ob_end_flush();
?>
これで、外部 Web サイトに正常にリダイレクトされますが、何を試しても、そのサイトにログインしようとしません。私は何を間違っていますか?何か不足していますか?