質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.48%

  • PHP

    24462questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • cURL

    198questions

    cURLはHTTP, FTPやTelnetなど複数のプロトコルを用いてデータを転送するライブラリとコマンドラインツールを提供します。

一度のクリックでサーバの異なる二つのサイトに画像アップロードしたい

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 960

ao_love

score 420

お世話になっております。

題名の通り、サイトAで会員登録をし、同時にサイトBにも登録をしたいです。
テキスト部分の登録はできるようになったのですが、画像の保存について試行錯誤しています。

サイトBの会員登録方法がワンクリックではなく
  1.  登録画面を開く
  2.  画像登録部の参照ボタンから画像を選択
  3.  1枚登録するごとに画像下部の保存ボタンをクリックしてサーバ内に画像を保存(この時画像名は変更される)
  4.  その他の情報も入力して最終的な登録ボタンをクリック
という流れになっています。

サイトAの方は
参照→選択のみで保存は他情報と一括で行われています。

実験的に以下のようにコードを書いてみたのですが、画像以外の情報しか登録されませんでした。

<?php
 if($_POST){
  $file1   = array('userfile1'=>'@'.$_FILES['img1']['name'],
                   'UP_1'=>'1');
  $file2   = array('userfile2'=>'@'.$_FILES['img2']['name'],
                   'UP_2'=>'1');
  $member = array('member_name'=>$_POST['name'],
                  'member_mail'=>$_POST['mail'],
                  'member_kana'=>$_POST['kana'],
                  'member_userid'=>"12345678",
                  'member_passwd'=>"12345678",
                  'member_repass'=>"12345678",
                  'OK_1'=> "保存");

//postするデータの配列
$params = array('login_mail' => "test@example.com" ,
                'login_passwd'=> "pass" ,
                '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);  $ 
  $output = curl_exec($ch); 
  fclose($fp);  curl_close($ch); 
  
  $ch = curl_init("http://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_POST, TRUE);
  curl_setopt($ch, CURLOPT_POSTFIELDS, $file1); 
  $output = curl_exec($ch); 
  curl_close($ch); 

  $ch = curl_init("http://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_POST, TRUE);
  curl_setopt($ch, CURLOPT_POSTFIELDS, $file2); 
  $output = curl_exec($ch); 
  curl_close($ch); 

  $ch = curl_init("http://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_POST, TRUE);
  curl_setopt($ch, CURLOPT_POSTFIELDS, $member); 
  $output = curl_exec($ch); 
  curl_close($ch); 


}else{
echo <<< EOH
<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>
<body>
  <form action="" method="post" enctype="multipart/form-data">
    <div>名前<input type="text" name="name"></div>
    <div>メールアドレス<input type="text" name="mail"></div>
    <div>画像1<input type="file" name="img1"></div>
    <div>画像2<input type="file" name="img2"></div>
    <input type="submit" name="send" value="送信">
  </form>
</body>
</html>
EOH;
}

もっと簡単な方法が!というようなことでも構いませんのでご教授いただけると幸いです。

サイトAの環境はPHP/5.2.4
サイトBの環境はPHP/5.3.27

になります。
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

'userfile1'=>'@'.$_FILES['img1']['name'],
でファイルの名前を指定していますが、
http://php.net/manual/ja/function.curl-setopt.php
にはフルパスで指定しろとあります。
アップロードされたファイルは
$_FILES['img1']['tmp_name']
の名前でサーバに保存されているので、こちらを指定する必要があるのではないでしょうか?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/09/11 11:12

    ご回答ありがとうございます。

    $_FILES['img1']['tmp_name'] でもやってみたのですが、うまくいきませんでした…。
    もう少し試行錯誤してみたいと思います。

    キャンセル

同じタグがついた質問を見る

  • PHP

    24462questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • cURL

    198questions

    cURLはHTTP, FTPやTelnetなど複数のプロトコルを用いてデータを転送するライブラリとコマンドラインツールを提供します。