サイトAのフォームに入力した情報をサイトAとサイトBの両方にPOSTする方法。
サイトBへのログイン権限は既にある前提。
form.php(@サイトA)
<?php
if($_POST){
/* サイトAへの登録処理 */
//通常のフォーム処理
/* サイトBへの登録処理 */
//register.phpはサイトBでの登録画面
//POSTされた会員情報を登録先のPOSTに合わせて配列に格納
$member = array('name'=>$_POST['name'],
'mail'=>$_POST['mail'],
'submit' => 1);
//ログイン処理
$params = array('login_mail' => "test@example.com" ,
'login_passwd' => "password" ,
'LOGIN' => "ログイン");
$fp = fopen("tmp", "w");
$ch = curl_init("http://www.example.com/login.php");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie");
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
curl_setopt($ch, CURLOPT_WRITEHEADER, $fp);
curl_exec($ch);
fclose($fp);
curl_close($ch);
//登録
$ch = curl_init("http://www.example.com/register.php");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie");
curl_setopt($ch, CURLOPT_COOKIEFILE, "tmp");
curl_setopt($ch, CURLOPT_POSTFIELDS, $member);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_exec($ch);
curl_close($ch);
echo "登録が完了しました";
}else{
echo <<< EOH
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<form action="" method="post">
<div>名前<input type="text" name="name"></div>
<div>メールアドレス<input type="text" name="mail"></div>
<input type="submit" name="send" value="送信">
</form>
</body>
</html>
EOH;
}
サイトBのregisterでの処理は本来
- 画面を開いて画像を参照
- 画像保存(複数枚あるが一枚ごとに保存ボタンあり)
- その他の情報も入力して最終的な保存
という過程なのですが、2.の部分がどうしてもうまくいかなかったのでとりあえずここまでメモ。
参考
CURLのセッションを引き継ぐ方法
PHP cURLの色々な使い方
シリアライズ可能なcURLのラッパークラス
を使わせて頂こうとしたのだけど、私自身がクラスを上手に使えない子なのと、うちのPHPが5.2.4であるというダブルの障壁によって断念しました…orz