xmlファイルをphp→mysql

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
shoshinsha

xmlファイルをphp→mysql

#1

投稿記事 by shoshinsha » 12年前

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

現在xcode上でxmlファイルをpostすることができたのですが、mysqlはs調べてみたところxmlファイルのままでは保存できないとのことでした。

そこでそれに合わせてphp側でも変換などの処理をしなければ行けないと思うのですが、どのようにしていけばよいでしょうか? アドバイスもらえれば幸いです、

YuO
記事: 947
登録日時: 15年前
住所: 東京都世田谷区

Re: xmlファイルをphp→mysql

#2

投稿記事 by YuO » 12年前

shoshinsha さんが書きました:現在xcode上でxmlファイルをpostすることができたのですが、mysqlはs調べてみたところxmlファイルのままでは保存できないとのことでした。
そこでそれに合わせてphp側でも変換などの処理をしなければ行けないと思うのですが、どのようにしていけばよいでしょうか? アドバイスもらえれば幸いです、
そのXMLデータをどう扱いたいのでしょうか。

単純に保存しておけばよい (クエリとして使わない) のであれば,TEXT型の列に入れてしまえばよいです。

ただ,普通はXML自体はデータをシリアライズした結果としてのXMLでしょう。
であれば,XMLのスキーマとDBのスキーマをどう対応させるかを決めて,PHP側でその対応に沿ってINSERT文等を発行していくことになります。
XMLのスキーマをDB側によせてつくっておけば,DBの正規化の段階で分解する過程を,XMLに対して行っていくような感じになるかと思います。

shoshinsha

Re: xmlファイルをphp→mysql

#3

投稿記事 by shoshinsha » 12年前

返信ありがとうございます。

xmlデータは単純に保存するのではなく、一応、iphone側で呼び出されたらDBからそのxmlファイルを読み込んで、iphone側で使用したいと考えております。 呼び出す際にはxmlパースを使えばよいtと考えているのですが、TEXT型でよろしいのでしょうか?

xmlファイルの形としては

コード:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
	<real>0.24993503093719482</real>
	<real>0.23378300666809082</real>
	<real>0.2180359959602356</real>
	<real>0.36251997947692871</real>
	<real>0.81670200824737549</real>
	<real>0.019291043281555176</real>
	<real>0.48606997728347778</real>
	<real>0.67233902215957642</real>
</array>
</plist>

このような形なのですが、うまくこの数字?をデータベース保存したいです。

YuO
記事: 947
登録日時: 15年前
住所: 東京都世田谷区

Re: xmlファイルをphp→mysql

#4

投稿記事 by YuO » 12年前

shoshinsha さんが書きました:xmlデータは単純に保存するのではなく、一応、iphone側で呼び出されたらDBからそのxmlファイルを読み込んで、iphone側で使用したいと考えております。
これは,iPhoneではXMLのデータをそのまま使いたい,ということですか。
そうであるならば,例えばMySQL用のDDL

コード:

CREATE TABLE `propertylist`
(
    `id` INT PRIMARY KEY AUTO_INCREMENT,
    `xml` TEXT NOT NULL
);
で作られるようなテーブルを用意しておき,
  • 最初にXMLを送られてきたときにはWeb APIはid値を返し,iPhone側ではそのid値を記憶する
  • iPhoneはXMLがほしいときに先のid値を指定して要求する
  • Web APIはid値を元にXMLを取得し,XMLをそのまま返す
でできます。

見たところ,検索されることを前提としていないXMLデータのようなので,Webアプリケーション側でXMLをパースする必要性を感じません。

shoshinsha

Re: xmlファイルをphp→mysql

#5

投稿記事 by shoshinsha » 12年前

ありがとうございます。
>>これは,iPhoneではXMLのデータをそのまま使いたい,ということですか。

iphoneでidなどを指定して呼び出したらxmlのデータを読み込んで配列に格納するつもりです。
まずはxmlのファイルデータを保存しなければ行けないので…

>>見たところ,検索されることを前提としていないXMLデータのようなので,Webアプリケーション側でXMLをパースする必要性を感じません。

少し自分なりに調べたのですが、php側で処理をして、apacheサーバ上にxmlファイルを置いてしまうということはできますでしょうか?
トピック名がphp→mysqlとなっていて非常に申し訳ないのですが、mysqlを使わずにサーバ上にxmlファイルとして保存ということは可能でしょうか?
トピック名とずれてしまい申し訳ないです。よろしくおねがいします、

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: xmlファイルをphp→mysql

#6

投稿記事 by softya(ソフト屋) » 12年前

>mysqlを使わずにサーバ上にxmlファイルとして保存ということは可能でしょうか?

可能ですが前から説明している通り、ユーザー識別情報が必要です。ユーザー識別情報でファイル名を作らないとファイル名がバッティングしてしまいますから絶対に必要です。MySQLでも格納するときに検索キーとしてユーザー識別情報が必要なのと同じ事です。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

shoshinsha

Re: xmlファイルをphp→mysql

#7

投稿記事 by shoshinsha » 12年前

ありがとうございます。 ファイル名はxcode上でユーザーがtextfieldに入力したものをファイル名とするつもりです。
実装に関してですが、iphoneからhttp通信をしてphpファイルにアクセス、phpファイルがxampp/htdocs内にファイルを保存という流れで大丈夫でしょうか?

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: xmlファイルをphp→mysql

#8

投稿記事 by softya(ソフト屋) » 12年前

その場合は「textfieldに入力したもの」がファイル名として適正なものである事と他のユーザーと重ならない保証が必要です。

> 実装に関してですが、iphoneからhttp通信をしてphpファイルにアクセス、phpファイルがxampp/htdocs内にファイルを保存という流れで大丈夫でしょうか?

大丈夫に見えますが、どこまでphpを使いこなせているかわかりませんので多分大丈夫です。とぐらいにしか言えません。
それこそ先に実験すべきで、iPhoneのコードを組まなくても実験できますよ。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

shoshinsha

Re: xmlファイルをphp→mysql

#9

投稿記事 by shoshinsha » 12年前

ありがとうございます。

ファイル名として適正なものというのは入力されたもののタイプ(数字やローマ字など)ということでよろしいでしょうか?


先に実践すべきとのことですが、htmlファイルでアップロード実装とphpファイルでアップロードされたファイルをサーバ保存としてxampp/htdocsに保存ということをげんざいやっているのですがそういうことでしょうか?

ご返信お待ちしております。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: xmlファイルをphp→mysql

#10

投稿記事 by softya(ソフト屋) » 12年前

> ファイル名として適正なものというのは入力されたもののタイプ(数字やローマ字など)ということでよろしいでしょうか?

ファイル名に何の文字が使えるかはOSなどに依存します。
それと他のファイルを破損しない情報という意味も含みます。
index.phpとか入力できたら既ににあるファイルも書き換えられかねませんよね。
./data/とか出来たら他のフォルダのファイルも書き換え可能です。

>先に実践すべきとのことですが、htmlファイルでアップロード実装とphpファイルでアップロードされたファイルをサーバ保存としてxampp/htdocsに保存ということをげんざいやっているのですがそういうことでしょうか?

iPhoneからもアップロードと同じ形式でやるなら問題ないです。
xampp/htdocsにファイルを保存するのはセキュリティ的にどうかと思いますが。
最終的には、どこに保存するんでしょうか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

shohsinhsa

Re: xmlファイルをphp→mysql

#11

投稿記事 by shohsinhsa » 12年前

ありがとうございます。

そこまでしっかりかんがえないといけないんですね。ありがとうございます。

>>iPhoneからもアップロードと同じ形式でやるなら問題ないです。
xampp/htdocsにファイルを保存するのはセキュリティ的にどうかと思いますが。
最終的には、どこに保存するんでしょうか?

セキュリティ的に危ないんですか。
xampp(apache)を使っているかたはデータは普通どこにほぞんするのでしょうか?

YuO
記事: 947
登録日時: 15年前
住所: 東京都世田谷区

Re: xmlファイルをphp→mysql

#12

投稿記事 by YuO » 12年前

shohsinhsa さんが書きました:>>iPhoneからもアップロードと同じ形式でやるなら問題ないです。
xampp/htdocsにファイルを保存するのはセキュリティ的にどうかと思いますが。
最終的には、どこに保存するんでしょうか?
ファイルごとDBに突っ込むのが基本です。

DBを使わず,または,使ってもパスを保存する場合は,一度プログラムを経由して取得するのがよいです。
この場合,ファイルが専用のディレクトリに置きます。
ディレクトリトラバーサルの脆弱性が含まれないように注意が必要ですが。
オフトピック
この掲示板の場合,画像などは
http://dixq.net/forum/download/file.php?id=XXXX
という形で提供されています。
恐らくDBに画像データが入っていて,idがキーなのだと思います。
それすら行わないのであれば,内容を精査した上で専用の公開ディレクトリに置くことになります。
当然ながら権限などのチェックは行えなくなります (Basic認証をユーザーごとにかける,ということは可能ですが……)。

閉鎖

“C言語何でも質問掲示板” へ戻る