• ベストアンサー

SQLite

自宅サーバを立ち上げてandroid用の動画配信やってみたいのですが、 自宅サーバのpublicにSQliteファイルをおいて、クライアントアプリからクエリを叩くってできますか?やり方としては普通ですか? サーバ、SQliteの知識はほとんどないのでこのような運用でいいのか迷ってます。

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

  • ベストアンサー
  • seastar3
  • ベストアンサー率69% (99/142)
回答No.1

 意外と回答が付かないようなので、基本的な操作しか知らないのですが、助言差し上げます。  まず、クライアント側で作ったSQLコマンド文字列を、直接sqlite_query( )命令に埋め込むことは可能です。しかし、もしこのPHPファイルの仕組みを悪用する相手が、DROP TABLE コマンドをくっつけて呼び出してきたら、データベースが壊されてしまうでしょう。また勝手に )で閉じてめちゃくちゃなhtmlタグを入れると、好き勝手なPHPコマンドを割り込まされる可能性もあります。これは大変なセキュリティホールになってしまいます。クロスサイトスクリプティング攻撃もしくはSQLインジェクション攻撃を調べてみて下さい。  その対策としては、htmlspecialchars()関数やstripcslashes()関数などで受け取った文字列を置き換えて、勝手なプログラム動作が起きないようにします。  思惑の画像ファイル抽出をしたければ、必要な変数(ファイル名の一部、ファイルサイズ上限、ファイルの日付範囲、ファイル形式など)のみをフォームから受け付け、クエリ文字列やヘッダ情報として受け渡して、文字列をチェックした後に、PHPプログラム中で生成するSQL文の中に組み込み、sqlite_query()命令で実行させる手順をとるべきです。

関連するQ&A

  • MySQL又はSQLiteについて

    お世話になります。 Androidアプリ開発でPHPファイルを読み込み、更にMySQLへ接続してデータベースの中身を反映させるとこまでは成功しました。 しかし、Androidアプリとデータベースの連携で調べると、SQLiteを推奨しているサイトや書籍が多いのですが、軽量のファイルベースで手軽に構築・運用できるという点は、何となくイメージできるのですが、MySQLに比べてSQLiteが明らかに優れている点はあるのでしょうか? 私は、8割方PHPでwebコンテンツの開発を行ってきました。そしてデータベースは100%MySQLを利用してきました。Androidアプリ開発を開始したのは、つい最近の事でSQLiteも今まで殆ど触れていませんでしたので、特にMySQLとSQLiteでメリット・デメリットの大差が無いのであれば、触りなれているMySQLを選択しようと考えています。 因みに、iOSアプリについては別の者が開発しています。 最終的には、AndroidとiOS両方の端末が1つのデータベースへ読みに行く構想ですので、もしiOSの開発側で、SQLiteの方が圧倒的に優れているとなれば話は変わってきますが・・・。 MySQLとSQLiteを比較して、SQLiteが優れている点のアドバイスをいただければ幸いです。 何卒、どうぞよろしくお願い申し上げます。

  • SQLiteにてテーブル一覧を取得したい

    SQLiteにてテーブル一覧を取得したい PHPにてSQLiteを使って勉強中なのですが、 sqlite_openでファイルを読み込み クエリーを投げて、そのファイルの中にあるテーブル一覧を取得したいのですが、 どのようにすれば一覧が取れるでしょうか? sqlite_query($sqlite, '.tables');だと構文エラーになってしまいますし、 execのような物から取ろうとするとかなり複雑なロジックになってしまいます。

    • ベストアンサー
    • PHP
  • MySQLとSQLiteの違いについて。

    MySQLとSQLiteの違いについて。 ちょっと調べたところによると、SQLiteはアプリケーションに組み込んで使い、 MySQLはサーバーとして使うそうですが、その意味がいまいちわかりません。 それは、MySQLは複数のクライアントの共有データベースとして使うけど、 SQLiteは個人ユーザーの単体データベースとして使うということでしょうか? よろしくお願いします。

    • ベストアンサー
    • MySQL
  • SQLiteによる運用について

    SQLite3によるプロジェクト管理システム(Tracとか)の運用を考えております。 下記件について知りたく投稿させていただきました。 1.SQLiteは、データが肥大化するほどパフォーマンスが低下しますか? 2.SQLiteは、データの損失が発生しやすいでしょうか? の以上です。 比較対象としてはMySQLを考えています。本用途については、下記に述べますので、本用途での運用での問題及び、MySQLを使った場合の利点についてお答いただければ幸いです。 2.に関しては、どちらも大差ないと思いますが、当方ではVMWareにより、ゲストPCを仮想ファイル上で運用しておりまして、DBファイルも仮想ファイル上の中に入ります。その運用上で注意しなければならないことがございましたらご連絡いただきたいです。 開発者はせいぜい10~15人程度ですので、複数のセッションからのアクセスについては、あまり考慮しなくてよいと考えております。

  • sqliteのインストールが出来ていない?

    http://d.hatena.ne.jp/maru_cc/20080420/1208634913 上記を参考にして、sqliteを入れました。 「sqlite -version」とコマンドすると、 「2.8.17」と表示されます。 ただ、クライアントマシンから「phpinfo」を表示させてみると sqliteについては --without-sqlite\' となっており(これは入ってないという事?)、 表示されません。 サーバマシンの再起動、アパッチの再起動も行いましたがインストール出来ていないのでしょうか? インストールされているのかどうかの正確な確認方法を含めまして、sqliteについてご教授お願いいたします。 長文になってしまいましたので質問を以下にまとめます。 1.インストールが出来ているのか?どう確認すればよいのか? 2.インストール出来ていないとしたら、インストール方法は? (色々なサイトを見たんですが、情報が古かったりで参考に出来ませんでした・・・)

  • sqlite_query()に関する質問

    ブラウザからポストでSQL文を受け取り、それをもとにDBを作成するスクリプトを考えています。 スクリプトの実行権限は、ページにログインできたユーザ(サイト管理者)のみ与えられています。 では、質問に移ります。 スクリプトに渡される$_POST['sql']の値が、クエリ文の言語仕様的に正しい書式ではなかった場合、 $sql = sqlite_escape_string($_POST['sql']); sqlite_query('hoge',$sql); の結果は、 Warning: sqlite_query() [function.sqlite-query]: near "なんたら~": syntax error in /なんたら~ といったエラーを吐き、 さらに、ファイルサイズ0の余計なクズファイルが作成されてしまうのですが、、 このクズファイルが結果的に作成されないように設計するには、どのようにしたら良いでしょうか。 私なりに2つの方法を考えてみましたので、アドバイスを頂けると嬉しいです。 (1) $_POST['sql']の時点で正規表現をもとに、SQL文の書式が正しいかチェックをし、 誤った書式のSQL文をsqlite_query()に渡すことを回避する方法。 ※私の能力的に、希望とする正規表現を正確に考え出すことができるか、はなはだ怪しいため、 できれば、避けたい方法です。 (2) 正規表現を使った方法だと、やや繁雑になりそうなので、それはやめにし、 ひとまず、SQL文の正誤を問わず、sqlite_query()を実行させ、 その結果、クズファイルが出来てしまうようなら削除する、といった方法。 ※クズファイルが生成されたかどうかのチェックは、 生成されたファイルのファイルサイズ == 0? をもとに行います。 ※ただし、私の利用するサーバの仕様上、 クズファイルは 所有者=「apache」 として作成されてしまうため、 もしかしたら、スクリプトからは削除できないかもしれません。 その場合には、こちらの方法は廃案となります。汗 (3) その他の方法(オススメの方法がありましたら、是非教えて下さい!) 以上、どなたか、ご助言よろしくお願い致します。

    • ベストアンサー
    • PHP
  • sqlite_open()なんですが

    PHPで <?php $db=sqlite_open("rensyuu.sqlite",0666,$err); $row=sqlite_query($db,"select count(*) from sqlite_master where name='tb1';"); $kotae=sqlite_fetch_single($row); print($kotae); sqlite_close($db); ?> と打ったものを実行したら、 Warning: sqlite_open() [function.sqlite-open]: file is encrypted or is not a database in.... というエラーになりました。 どうもsqlite3で作ったのが原因っぽいんですがなにか ご存知でしたら教えていただけませんか。

  • SQLITEの構築について

    現在、レンタルサーバーでSQLITEを使おうと思い、 <html> <head><title>PHP TEST</title></head> <body> <?php $link = sqlite_open('test.db', 0666, $sqliteerror); if (!$link) { die('接続失敗です。'.$sqliteerror); } print('接続に成功しました。<br>'); // SQLiteに対する処理 sqlite_close($link); print('切断しました。<br>'); ?> </body> </html> と、スクリプトを組んだのですが、ブラウザでアクセスすると Call to undefined function sqlite_open()という、エラーが出てしまいます。これがsqlite_open()関数が定義されていないという意味はわかるのですが、何故このエラーが表示されるのか理解できません。 レンタルサーバーではSQLITEが使えるとかかれており、またphpのバージョンも5.1.6と、SQLITEが標準でバンドルされているはずなんですが、何もしようともcall to undefined ~~  というエラーが出てしまいます。 レンタルサーバー内でこのエラーを出さず、sqliteを使えるようにするにはどうしたらよいでしょうか?ご教授お願いします。 また、余談かもしれませんが、自分なりに、検索し、調べた結果、php.iniというファイルを作成し display_errors = On extension=php_pdo_sqlite.dll extension=php_pdo.dll extension=php_sqlite.dll と、書き込んだファイルをサーバーにあげたのですが、無意味でした。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • HP上からのPHPによるSQLiteの読み込み

    表題のとおり、PHPでsqliteのDBにアクセスして、表示しようと考えています。 サーバーに以下の内容を書いた、result.phpというファイルを置いて、ページを開きました。 <html> <body> <h3>テスト</h3> <?php try{ $db = new SQLite3('sqlit.db'); $result = sqlite_query($db, "SELECT * FROM table"); $db->close(); } catch (PDOException $e) { print "エラー!: " . $e->getMessage() . "<br/>"; } ?> </body> </html> すると、以下のエラーが出ました。 Warning: sqlite_query() expects parameter 1 to be resource, object given in /home/(ファイル置いてある場所)/result.php on line 7 sqlit.dbは適当に作ったファイルで中身はどうでもいいのですが、 エラー内容で検索したところ、一つ目の引数のdb形が違うよーみたいな意味のようですが、解決策がわかりません。 ためしにsqlit.dbを適当な名前にしたところ、その適当な名前のファイルの名前は出てきましたが、 エラー内容は同じでした。 つまり、new SQLite3は実行できている=PHPでSQLのファイルの作成、読み込みは出来ている。 しかし、テーブル名が違うとかといった内容ではなく、型が違う、といわれ困っています。 同じ階層に置いた「php.ini」に以下の3行を記載し、配置してあります。 extension=php_pdo_sqlite.dll extension=php_sqlite.dll extension=php_pdo.dll しばらく調べたのですが、phpそのものが実行されないとか、dbファイルがないといった状況なら調べられそうではあるのですが、実行は出来たけど読み込もうとするとエラーになる。 といわれ調べても情報が出てこず困っています。 何かエラーの可能性になる部分や、調べ方がありましたら教えてください。 ちなみにファイルを置いてあるのはさくらインターネットのサーバーでして、 PHPの設定は「PHP 5.3.8 (CGI版) 」にしてあります。

    • 締切済み
    • PHP
  • Android内部のSQLiteデータベースを使う

    Androidアプリ内の既にあるSQLiteデータベースを利用したいのですが、 やり方が分かりません・・。 私が実行したのは、 excelデータ->csvファイルを変換しカンマ区切り,UTF-8変換した上で SQLite3(winコンソール)で .import ファイル名 テーブル名 を実行し実行ファイルを作成しました。 winコンソール上でデータベースにアクセス・文字化け等せずきちんとアクセス、表示することができました。 しかしながら、このデータベースをandroid内のassets?フォルダ内に保持した上で android(のプログラミング上)からオープンし、利用する方法が分かりませんでした・・。 どのようにコーディングすれば 自分で作成したデータベースにアクセスすることができるのでしょうか・・。 SQLiteHelper?というのでアクセス出来るのでしょうか・・。 すみませんがご教授お願いいたします。