• 締切済み

PHPのソケット通信について

PHPにおいてのソケット通信についての質問です。マイページ機能をもたせたシステムの構築をしています。 マイページで認証を行い、そのユーザのユーザIDと乱数を一緒にデータベースに認証成功時に格納しています。 そして、マイページから別サーバへリンクしたときにPOSTしてこのユーザIDと乱数を送ります。 ユーザがマイページを経由して別サーバにアクセスしてきているかどうかということを確認するために、別サーバからこのマイページを運用するサーバに対してユーザIDと乱数をソケット通信によって送り、データベースに登録されているかどうかを別サーバ上のページを遷移するたびに確認したいのです。 データベースに登録されているユーザなら、マイぺージを経由してアクセスしてきているということでページを表示させて、登録されていないなら、マイページのログインページを表示させるようにしたいです。 Socket通信について調べてみたもののわかりにくいものが多くて、理解しかねますので、よろしくお願いします。 サンプルのコードをのせていただくと、なお嬉しいです。 開発環境は OS windows vista 言語 PHP5 サーバ Apache DBMS MYSQL です。 よろしくお願いします。

  • PHP
  • 回答数2
  • ありがとう数1

みんなの回答

回答No.2

> 今、システム内でのdbへのアクセスへは > $db=mysql_connect("localhost","root","パスワード") > としております。 > これは、別サーバからもアクセス可能なのでしょうか? > それはphpからのアクセス方法ですね。 アクセス可能かどうかはデータベース側の設定によります。 mysqlならば以下が参考になるでしょう。 http://www.dbonline.jp/mysql/user/index6.html http://d.hatena.ne.jp/uriyuri/20081024/1224798772

mockinmicky
質問者

補足

なるほど。データベースによって権限を設定してあげたらいいのですね。 この場合、select文による検索でそのタプルがあるかどうかがわかればいいので アクセスしてくるサーバ?でいいのかな? に対してselect文の権限をつけて、後の権限はつけないって感じでしょうか??

回答No.1

「サーバ間でのセッション共有」がしたいんですね(セッションは使ってないようですが)。 別サーバからデータベースへは直接アクセスできないんですか? 質問のソケット通信については、以下でまとめられていました。 http://www.programming-magic.com/20080226023511/ 自分がするなら、fsocketはhttpヘッダやPOSTデータを扱うのが面倒そうなので、 http_requestやhttp_clientといったクラスを使うと思います。 質問からは大きく外れますがMQ使ってるのならMQ使うのも良いですね。

mockinmicky
質問者

補足

迅速な解答ありがとうございます。 その通りです。セッションの共有がしたいのです。言葉足らずでした。 今、システム内でのdbへのアクセスへは $db=mysql_connect("localhost","root","パスワード") としております。 これは、別サーバからもアクセス可能なのでしょうか? 知識不足ですいません。

関連するQ&A

  • ソケット通信

    現在プロセス間通信について学んでおり、 今はソケットを使ったプロセス間通信のプログラムを書いています。 そのソケット通信での質問なのですが、 2台のパソコンでINETドメインのソケットを使って プログラムを書いているのですが、 サーバーを実行した後、 別のパソコンでサーバー側のパソコンのIPアドレスを指定して クライアントを実行しようとすると、 connect:Connection timedout と表示されて実行できません。 同じプログラムをUNIXドメインで 1台のパソコンで実行すると正しく実行できます。 これは、プログラムに問題があるのでしょうか? それとも、ソケット通信を行う際には 何かパソコン等の設定が必要なのでしょうか? 教えてください。お願いします。 あと、セマフォを用いたプロセス間通信のサンプルプログラムが のっているホームページなどご存知でしたら、 教えていただけるとありがたいです。

  • PHPで以下のようなものを実現したいのですが

    以下を前提とする。  データベース:mysql 5.0.45  テーブル名:user  項目名:id、名前  phpバージョン:PHP 5.2.4   (1)http://サーバ.index.php?id=xxxxにアクセス (2)テーブル(user)の項目idに{xxxx}があるかどうか確認 (3)あれば、http://サーバ/index.htmlへ、  なければ、http://サーバ/error.htmlへリダイレクト 以上のようなふるまいを実現したいのですが、 PHP初心者のため、ご教授いただければと思います。 よろしくお願いいたします!

    • ベストアンサー
    • PHP
  • PHPとflashの連携

    いつもお世話になっております。 PHPとflashの連携について質問させていただきます。 1)flashでログインページを作成し、formデータをPHPへ送信 2)login.phpでユーザの認証を行い、セッションにユーザIDを登録し、XMLデータでflashに返す。 3)test.phpでセッションにユーザIDの登録があるか調べ、なければリダイレクト あれば、処理続行(別のXMLデータを返す)。 上記のような処理を行う場合、どのように実装したらよろしいでしょうか。 現状ですと、(1)はできています。 login.phpでセッションにユーザIDを登録するのですが、セッションを破棄していないのにtest.phpではセッションがなくなってしまいます。 よろしくご教示お願いいたします。

    • ベストアンサー
    • PHP
  • php認証

    php認証 phpとmysqlを使って、ユーザーIDごとに違うページを割り当てる認証システムを作りたいのですが、良い書籍などはありますか? また、スクリプトをあげていただけるととても助かります。。。

    • ベストアンサー
    • PHP
  • ソケット通信について

    こんにちは。初心者開発者です。 .NetでPDAをクライアントにしたクライアントサーバー型の処理を現在開発しております。 【環境】 場所:台湾 クラアント:Windows CE5.0 サーバー:WindowsXP 中国語版 無線LANアクセスポイント:ASUS RT-G32 【現象】 ソケット通信自体はできたのですが、いくつかの疑問点があります。 (1)無線LANポイントの機種によってPDAとソケット通信してる間しかPingが通らない。  PCからPDAのPingが通らない状況で、ソケット通信が始まるとPingが通る状態になります。 (2)(1)の無線LANポイントだとPDAでのレシーブ時のポーリングが永久にレシーブOKの状態にならない。  無線LANのソケット通信の立ち上がりを検出できないのか、初回のポーリングが永久にOKにならない事が多いです。  ソケットをシャットダウンしてクローズした後に再処理した時に上手くいくことが多いです。 (3)70k程度の通信に10秒以上かかることがあります。サーバーがセンドしてからクラアントがレシーブするまで。  ソケット通信だと大体こんなかかるものなのでしょうか? 【質問】 (1)(2)の現象に関しては、台湾の業務で導入をしていますが、現地で購入できる無線LANでお勧めの物があれば教えていただければと思います。 後、通信中でなくても常にPingが通る状態というのは何かそれようの設定があるのか、心当たりがあったら教えていただければと思います。 (3)自分初めてソケット通信プログラムを作りますので大体の所感が分かりません。  宜しかったら、それだと絶望的に遅いから何かを見直した方がいいとかアドバイスいただければと思います。 よろしくお願いいたします。

  • DBをPHPでaccessしているページについて

    MysqlをPHPでアクセスしているページがあるのですが、セキュリティの観点からSSL通信をしようと考えています。WWWサーバはAPACHEを使っております。認証局からデータをいただいてAPACHEに組みこもうと考えております。https通信になったとき、PHPはそのままでMysqlと通信は出来るのでしょうか。 https://www.hogehoge.hogehoge/でアクセスするようになった場合ページ内のPHPモジュールはそのままでDBと通信は出来るのでしょうか。 よろしく、お願いいたします。

  • TwitterIDからユーザーネームの取得

    PHP環境で認証は通っているとします。 TwitterIDがデータベースに登録されていてそれをもとにユーザーネームを取得したいです。 TwitterIDは認証に使っている人とは別の人のIDです。 こういうことは可能でしょうか よろしくお願いします。 認証にはHybridAuthを使っています。

    • ベストアンサー
    • PHP
  • ソケット通信におけるデータ送信手法

    ソケット通信ができるサーバプログラムをPHPにて組んでいますが、疑問があります。 Server/Clientの形で、PHPでくんだServer側はListenして通信を待っているのですが、仮に、サーバ側から任意のタイミングで通信を発生させることは可能なのでしょうか。 これが1点です。 あと、1つのサーバプログラムに対して、複数のクライアントが接続するようなパターンは作成可能なのでしょうか。 暗中模索のため、難儀しています。 ご教示いただければ幸いです。

    • ベストアンサー
    • PHP
  • IIS+PHPで、PHPファイルが実行できない?

    XP-pro SP2+IIS5.1+PHP5で、イントラネット内だけに公開するページを作ろうとしています。公開フォルダのアクセス権限に、アクセスを許可したい人にフルコントロールを与えています。(各人はActive Directory認証で、ドメインにログインしています。) IISは統合Windows認証にだけチェックを入れています。  HTMLファイルには権限を与えた人はアクセス出来るようになったのですが、PHPにアクセスしようとするとパスワードなどを求める画面が出てきて、ドメインにログインする時のIDなどを入力しても拒否されてしまいます。 ところが作成者本人だけはPHPファイルを正常に実行できています。(サーバPCからも、別のPCからも) 何をどのように設定すれば、作成者以外の人にもPHPファイルの実行が出来るようになるのでしょうか? 以上、よろしくお願いします。

  • ソケット通信について

    VC++6.0MFCでソケット通信のプログラムを作成しようとしています。勉強始めたばかりなので、やっと普通に通信するプログラムは理解できたところです。 そこで応用していろいろ考えているのですが、方法がわからないところがありますので教えていただければと思ってます。 サーバ側の接続待ちはいつでも受けれるようにして、接続してきたクライアントに対して送信したいと考えております。ソケットの接続情報を保持しておいて、別プロセスの送信プログラムが接続クライアントに対して送信したいと考えてます。その送信プログラムが複数ある場合も同じ接続情報を利用したいと考えてるのですが、可能でしょうか。 説明が下手で申し訳ありません。補足はいたしますので、アドバイスお願いいたします。

専門家に質問してみよう