AppletからPHPファイルへのデータの転送

このQ&Aのポイント
  • AppletからPHPのファイルへデータを送る方法について知りたいです。URLが勝手に変更されてランキングの信憑性がなくなる可能性があります。
  • AppletからPHPのファイルへデータを送る際、URLが変更される問題があります。もっと信憑性のある方法があるのか知りたいです。
  • AppletからPHPのファイルへのデータ転送時に問題が発生しています。URLの変更によりランキングの信憑性に問題が生じます。解決策を教えてください。
回答を見る
  • ベストアンサー

AppletからPHPファイルへのデータの転送

毎回お世話になっています。 題のとおり、AppletからPHPのファイル(ランキング)へデータを送りたいのです。 知り合いからそういったプログラムをもらって使いはしたのですが、データを送ると this.getAppletContext().showDocument(new URL(url),"_blank"); によってウィンドが開くんです。 これを使わないでできる方法とかないでしょうか? これだとURLが、 http:// ~ /php/ranking.php?name=test&score=777 といった感じで出てしまい、勝手に変更されてランキングの数字に信憑性がなくなる可能性が生まれてしまうんです。 なにかいい方法はないでしょうか? なんか説明が不十分ですいません。

  • Java
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
noname#30871
noname#30871
回答No.1

 java.net.URLConnectionを使えば、POSTメソッドでデータを送信できます。ただし、 (1) サーバ側(PHP)でPOSTを受け取る処理が必要です。 (2) アプレットのクラスファイルはデータ送信先のマシン、すなわちサーバ内に置く必要があります。(アプレットのセキュリティ制限)

参考URL:
http://www.tetras.co.jp/yada/j_java_cgi_r.htm
shotaro777
質問者

お礼

ありがとうございます。 参考URLを見させてもらいました。 すごく参考になりました。

関連するQ&A

  • javaAppletから、phpに配列を渡したい

    いつもお世話になっています。 java Appletから、phpにデータを渡したいと思っています。 その際URLを利用すれば、文字列を渡すことは出来るのですが、 配列の場合がよくわかりません。 配列、で渡すことは可能なのでしょうか? ーー文字列で値を渡す場合ーー <!-- java Applet --> //省略 String data = "test"; URL url = new URL(getBaseCode(),"sample.php?data="+data); <!-- php --> $data = $_POST['data']; の方法で取得することはできました。 配列だとすると、"data="+dataの箇所を変更すればいいようには思うのですが。 宜しくお願いします。

    • ベストアンサー
    • Java
  • PHPのforeach文について

    yahoo!のwebサービスを利用して、自サイトにランキング表示をしたいのですが、デフォルトで20件まで表示されてしまいます。 スペースの関係で3~5件程度までの表示にしたいのですが、方法がどうしても分かりません。 yahoo!カテゴリランキング http://developer.yahoo.co.jp/webapi/shopping/shopping/v1/categoryranking.html (offsetのところに表示件数のことが書いてあります。) 現在、foreach文を使い、下記のソースで思案中です。 foreach($xml->Result->RankingData as $ranking){ $name = $ranking->Name; $url = $ranking->Url; $medium = $ranking->Image->Medium; $store = $ranking->Store->Name; print <<< page <a href="{$url}" target="_blank"><img src="{$medium}"</a> <p><a href="{$url}" target="_blank">{$name}</a></p> <p>{$store}</p> page; ・ ・ ・ ループを任意の数で中断させるのかなとも思って、ネット上で調べてみましたが、for文やwhile文は出来るようですが、foreach文は載ってなくて困っています。 PHPもそれほど詳しくなく、サンプルを修正していく程度の知識しかありませんので、是非アドバイスを宜しくお願いします。 PC環境は WindowsXP PHP5 です。

    • ベストアンサー
    • PHP
  • テキストファイルの中身をAppletに常に表示

    お世話になります。 先日、Appletでの外部ファイルを常に同期させる方法をお尋ねしたものです。 それにより、Servletを併用し試行錯誤していたのですが、どうしても行き詰まり再度質問させて頂きました。 Applet内にあるスレッドから常にServletを呼び出し、 Servlet側では呼び出される度にサーバ上にある外部ファイルを読み込み、 その内容をAppletへ送信してAppletではその受け取ったデータを表示する というプログラムを組んでみたのですが、 外部ファイルの中身は表示はされず、コンソールにはIllegalStateExceptionが表示されます。 エラー内容を検索したりもしてみたんですが、うまく理解出来ませんでした。 以下にソースを載せておきますので、もしよろしければご教授お願いします。 ※Servlet側 package com.test; import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.FileReader; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class TestServlet extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet { static final long serialVersionUID = 1L; DataOutputStream dos; String test=null; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String checkFile="test.log"; String fn=getServletContext().getRealPath(checkFile); response.setContentType("text/html;charset=Shift_JIS"); PrintWriter out=response.getWriter(); out.println("<html><head></head><body>"); out.println("<applet codebase=\"http://localhost:8080/Test\" code=\"TestApplet.class\" height=\"600\" width=\"800\">"); out.println("</applet>"); out.println("</body></html>"); out.close(); BufferedReader inn = new BufferedReader(new FileReader(fn)); //アプレットへの送信 response.setContentType("application/octet-stream"); dos=new DataOutputStream(response.getOutputStream()); String outPut=inn.readLine(); dos.writeUTF(outPut); dos.flush(); dos.close(); } } ※Applet側 import java.applet.Applet; import java.awt.*; import java.io.*; import java.net.URL; import java.net.URLConnection; public class TestApplet extends Applet implements Runnable{ String inPut; Label l1; public void init() { setSize(200, 100); setLayout(new FlowLayout()); l1 = new Label("Wait"); add(l1); Thread wait; wait = new Thread(this); wait.start(); } @Override public void run() { // TODO Auto-generated method stub try { while(true){ try { //サーブレットへの通信 URL url=new URL(getDocumentBase(),"./Test"); URLConnection conn = url.openConnection(); //play.logの状態取得 DataInputStream in = new DataInputStream(conn.getInputStream()); l1.setText(in.readUTF()); } catch(Exception e) { } Thread.sleep(1000); } } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }

  • PHPでファイルアップロードがうまくいきません

    PHP初心者なんで宜しくお願い致します。 ファイルアップロードのシステムを作っているんですが どうもうまくいきません。 <form action="<? $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data"> 写真:<input type="file" name="file" size="40" /> <input type="submit" name="new_write" value=" 登録 "> </form> <? if(isset($_POST['new_write'])){ $filename = $_FILES['file']['name']; $updir = "./image/".$filename; if(move_uploaded_file($_FILES['file']['tmp_name'], $updir)){ print "OK"; }else{ print "NG"; } } ?> 上記の記述をしています。 そしてphpinfo()で情報を確認しても file_uploadsはONになっています。 そしてPHPのバージョンは4.4.2です。 単純なことかもしれませんが、宜しくお願い致します。

    • ベストアンサー
    • PHP
  • MySQL 5 PHP 5 データの受け渡しについて 困ってます。。

    MySQL 5 PHP 5 データの受け渡しについて 困ってます。。 下記内容で困ってます。機能としては (1)プロダクトテーブルからデータを読み込み表示。 ※プロダクトテーブルには商品データが8件登録されています。 (2)注文ボタンが押されたら受注テーブルにデータをカキコミ。 なんですが。。。 プロダクトテーブルから読み込んだデータを受注テーブルに書き込むと $product_id がいつも8(受注テーブルデータの一番最後の数字) $product_name  同じ $product_price 同じ ・・・ になってしまいます。 whileループしているので変数に代入するのも繰り返されて一番最後のデータが いつも格納されている状態だと思うのですが、この解決策を教えて下さい! 最近始めたばかりで良く理解出来ないので噛み砕いて教えてくれる方お願いします>< <?php //---------------------------------------- // □:テーブルからデータを読む //---------------------------------------- $mysql->query("SELECT * FROM products ORDER BY product_id") or die(mysql_error()); while($row = $mysql->fetch()){ $product_id = $row["product_id"]; $product_name = $row["product_name"]; $product_price = $row["product_price"]; echo <<<EOT <tr> <td align="center">$product_id<input name="product_id" type="hidden" value="$product_id" size="10" /></td> <td align="center">$product_name<input name="product_name[$product_id]" type="hidden" value="$new_product_name" size="10" /></td> <td align="right">$product_price<input name="product_price[$product_id]" type="hidden" value="$new_product_price" size="10" /></td> <td><input name="new_use_date[$product_id]" type="text" value="$new_use_date" size="20" /></td> <td><input name="new_use_time[$product_id]" type="text" value="$new_use_time" size="20" /></td> <td><input name="remarks[$product_id]" type="text" value="$new_remarks" size="40" /></td> <td><input name="submit_add" type="submit" value="注文する" /></td> </tr> EOT; } //ここまでwhileループ[終了の閉じカッコ] ?>

    • ベストアンサー
    • MySQL
  • PHP データ 送受信

    http://hogehoge.com/form.php http://hogehoge.com/send.php http://localhost.com/api.php http://hogehoge.com/send.phpにアクセスした際に http://hogehoge.com/form.phpで入力したデータを http://localhost.com/api.phpに飛ばす方法に困っています。 参考サイト http://blog.code4u.org/archives/407 send.php側 $url = 'http://localhost.com/api.php'; $params = array( 'name' => $name, 'email' => $email, 'address' => $address, 'tel' => $tel, ); $ch = curl_init(); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, TRUE); curl_setopt($ch, CURLOPT_RETURNTRANSFER, FALSE); curl_setopt($ch, CURLOPT_POSTFIELDS, $params); curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Content-Type: application/x-www-form-urlencoded' ) ); $result = curl_exec($ch); curl_close($ch); と記述したのですが、 api.php でデータを受け取るコードがわからず困っています。 お分かりの方がいたらお願いします。

    • 締切済み
    • PHP
  • PHPで外部ファイルから取り込んだデータを配列に

    外部ファイルから取り込んだデータを、配列に代入したいと考えています。自分で試したのですが、どうしてもうまくいかないので詳しい方、どうかよろしくお願いします。 外部のdatファイルは3項目をカンマ区切りで記述してあり、その3項目の繰り返しになっています。そこで次のスクリプトを実行すると、echo結果は$aの列挙になります。 <?php //ファイル名 $file_name = "ファイルのURL/××.dat"; //ファイルを読み取りモードで開く $file = fopen($file_name, "r") or die("OPENエラー"); //ファイルをロックする flock($file, LOCK_SH); //出力 while (!feof($file)){ $string = fgets($file,1000); list($a, $b, $c , $d) = explode(",", $string); $d="$a".","; echo "$d"; } //ロックを開放する flock($file, LOCK_UN); //ファイルを閉じる fclose($file); ?> じつは、この$aの内容が、RSSフィードのURLになっており、次のスクリプトでRSSの更新情報を書き出すのですが、$dの中のカンマ区切りのデータを、次のスクリプトの●●●部分に取り込みたいのですが、どう記述すればよいのかわかりません。 <?php include_once(ABSPATH . WPINC . '/feed.php'); $rss = fetch_feed(array( ●●● 'URL1', 'URL2', 'URL3' )); if (!is_wp_error( $rss ) ) : $rss->set_cache_duration(1800); $rss->init(); $maxitems = $rss->get_item_quantity(100); $rss_items = $rss->get_items(0, $maxitems); date_default_timezone_set('Asia/Tokyo'); endif; ?> <!--出力--> <ul style="height: 200px; margin: 10; padding: 0; overflow-y: scroll;"> <?php if ($maxitems == 0) echo '<li style="list-style: none;">No items.</li>>'; else foreach ( $rss_items as $item ) : ?> <li style="list-style: none; margin: 0; padding: 0;"><?php echo $item->get_date("Y-n-j"); ?> <a href='<?php echo $item->get_permalink(); ?>' target="_blank"><?php echo $item->get_title(); ?></a></li> <?php endforeach; ?> </ul> どうか、お知恵をお貸しください、よろしくお願いします。

    • 締切済み
    • PHP
  • 【PHP&JavaScript】複数の別ウィンドウ(phpファイル)へsubmitさせたい

    PHP、JavaScript、共に初心者なので、的を得ていない質問かもしれませんが、是非ともご教授お願い致します。 やりたいこととしては以下の内容で、複数ではなく、1つの別ウィンドウしか表示されずに困っております。 (1)元のウィンドウで、入力や選択を行った後、結果ボタンを押し、"その都度"別ウィンドウを  表示させる。(つまり複数別ウィンドウを表示させたい)  (元のページはそのまま残す) (2)元ウィンドウの入力値をPOSTデータとして、別ウィンドウに受け渡す。 (3)別ウィンドウでも、常に同一のロジックを必要とするため、都度開く別ウィンドウを同一PHPファイルとしたい。 上記で使用しているソース(主要な部分抜粋)は以下の通りです。 【元ウィンドウ】 <script type="text/javascript"> <!-- function newsubmit() { window.open("about:blank", "kekka", "WindowStyle"); mainform=top.window.document.motoform; mainform.action = "kekka.php"; mainform.target = "kekka"; mainform.submit(); } // --> </script> <form name="motoform" method="POST" action="<?= $_SERVER['PHP_SELF'] ?>"> ・・・ <input type="button" value="結果" name="kekka" onClick="newsubmit();"> ・・・ <select name="no" onchange="this.options[this.selectedIndex].value"> <option value="100">100</option> <option value="200">200</option> <option value="300" selected>300</option> <option value="400">400</option> <option value="500">500</option> </select> ・・・ </form> 【別ウィンドウ(kekka.php)】 <form name="subform" method="POST" action="<?= $_SERVER['PHP_SELF'] ?>"> ・・・ <?php print "no: " .$_POST['no']. "<br>\n"; ?> ・・・ </form> POSTデータの受渡しは、出来ています。 別ウィンドウのURLを、001.html、002.html、003.html・・・のように、別々のHTMLにしようとも考えましたが、 それぞれの別ウィンドウでどうしてもPHPの同一ロジックを入れたいため、同一のkekka.phpとしています。 それ故に、既に同じウィンドウ(kekka.php)が表示されているので、別ウィンドウが上書きされてしまい、 1つの別ウィンドウしか表示されません。 同じPHPを使用して、複数、別ウィンドウを表示させる方法、もしくは、別案などございましたら、 ご教授願えますでしょうか。お願い致します。

    • ベストアンサー
    • PHP
  • 空白にはなにを入れればいいのでしょうか?

    [A君,50,60,70] -> 180 [Bさん,90,70,80] -> 240 [C君,30,40,45] -> 115 という3教科の試験の合計点を学生毎に表示するものですが、<?>の部分になんと書けばいいのかわかりません。。教えてください。 import java.lang.*; import java.io.*; import java.util.*; class Student { private String name; private int[] score; public Student (String name, int[] score){ this.name = name; this.score = score; } public Student(String name, int x, int y, int z){ this.score = new int[3]; } public String toString(){ String s = "[" + name; for (int i=0; i < score.length; i++){ s += “ , “ + score[1]; } s += "]"; return s; } public int total(){ int sum = 0; for (int i=0; i<<?>; i++){ <?> } return sum; } } class StudentTest { public static void main(String[] args){ Student[] data = { new Student("A君",50,60,70), new Student("Bさん",90,70,80), new Student("C君",30,40,45), }; for (int i=0; i<data.length; i++){ System.out.println("" + data[i] + "\t-> " + data[i].total()); } } }  

    • ベストアンサー
    • Java
  • php クラス

    phpエクラスの勉強をしているのですが、参考書に書いているメンバ変数に値を代入している意味がよくわからないので教えてください。メンバ変数の値を書かなくtも動作できるのになぜ必要なのでしょうか? 参考書 <html> <head> <title>サンプル</title> </head> <body> <?php $pr = new Person; $pr->name = "鈴木"; $pr->age = 56; ?> <table border="2"> <tr bgcolor="#AAAAAA"> <th>名前</th> <th>年齢</th> </tr> <?php print "<tr><td>"; print $pr->getname(); print "</td><td>"; print $pr->getage(); print "</td></tr>"; ?> </table> <?php class Person { public $name ="姓名"; public $age = 20; function getname(){return $this->name;} function getage(){return $this->age;} } ?> </body> </html> テスト <?php class Person { public $name ;←ここに値を格納する意味 public $age ;←ここに値を格納する意味 function getname(){return $this->name;} function getage(){return $this->age;} } ?>

    • ベストアンサー
    • PHP

専門家に質問してみよう