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

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

ただいまの
回答率

90.61%

  • PHP

    19903questions

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

  • JavaScript

    15991questions

    JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

商品が当たるシステム

解決済

回答 2

投稿

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

creative_09

score 16

以下の実現ができる方法としてphpのみまたはphpとjavascriptを併用したほうが良いのかアドバイスお願い致します
phpのみで実現できるようであればPHPのみのほうが良いのですが、javascriptと併用した場合のメリットデメリットなどがあればと思い投稿しました

当方はこれから必要な言語を勉強したいと考えている超初心者ですので、くわしくアドバイス頂ければ幸いです

■流れ
・ログイン必須のサイトでログイン認証
・簡単なゲームに挑戦
・ゲームの結果によって配送商品が出てくるので、配送登録などが必要
・myページや管理者ページにて結果を閲覧が可能

■条件 
以下の点はどう実現するのかさえわからないので教えて頂ければ幸いです

・在庫があるので、同時の抽選の場合でも在庫がオーバーしないようにしたい
(データベースを常に参照?)
・ミニゲームに挑戦の際にアニメーションを挿れたい
(gif画像で補う?)
・抽選結果を不正に取得できない
(javascriptだとあぶない?)

以上ですが、よろしくお願い致します

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 2

checkベストアンサー

+4

・在庫があるので、同時の抽選の場合でも在庫がオーバーしないようにしたい

在庫の払い出しをする際に、DBでトランザクションという仕組みを絡めてやるとよいでしょう。
ようは銀行でお金を下ろすときに預金額以上下ろせない仕組みと同じです。

・ミニゲームに挑戦の際にアニメーションを挿れたい
(gif画像で補う?)

PHPはサーバー言語なのでUI処理は弱い(というより目的が違う)ので
なんらかのアニメーションの処理をPHP以外で実装するのが賢明です。

  • gifアニメ
  • ムービー
  • javascript/HTML5

もちろん、ajaxなどでPHPから画像をもってきて表示する手もありますが
ネット経由で複数の画像をサーバーに取りにいってアニメーションのように
みせるのは負荷が高いので現実的ではありません

・抽選結果を不正に取得できない
(javascriptだとあぶない?) 

データ管理をサーバー側で行えばほとんどの不正は防げます。
もちろん不正をされないような仕組みを作る必要はあります

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2017/12/19 15:49

    DBでトランザクション。調べて勉強してみます。
    データ管理をサーバーで行いたいです。
    UIはなにであってもDBを参照する形であればそれで良いといった感じの解釈でよかったのでしょうか??

    キャンセル

  • 2017/12/19 16:07

    > UIはなにであってもDBを参照する形であればそれで良い

    そうですね
    結局ユーザー側で管理できるのは「くじをひく」という要求くらいで
    その要求が妥当かどうかをサーバーがチェックをして
    問題なければユーザーに「ひいてるアニメ実行していいよ」と戻し、
    その後(もしくは同時に)結果を渡すような処理になります

    たとえばユーザーがチケットの数だけガチャをまわせるとして
    チケット数はサーバーが管理しユーザーは逆に好きなだけガチャを回す
    要求はできるのです。
    ただしチケット数を超えた要求は不正な要求なので処理をしないとか
    エラーを返すようなUIにすればよいでしょう

    もちろん、適当なトークンで抽選券にIDをつけて管理することもできるでしょう

    キャンセル

  • 2017/12/19 16:33

    なるほど、すごくプログラミングでの流れが理解できてきました。
    複数のカードから複数枚引く場合、引いたカードはめくれたまま。次のカードを引く
    そういったUIをPHPのみでも作成可能なのでしょうか?
    こういったコンテンツの場合、jqueryとphpもしくはphpのみ。javascriptとphp。
    どういった組み合わせが適切な実現方法なのか、もしくは一般的によく使われている形などがあれば教えて頂ければ幸いです。

    キャンセル

  • 2017/12/19 16:40

    とくにインタラクティブな処理はページの遷移を抑制する必要があるでしょう
    そうなると自然とデータのやりとりはajaxを利用することになるでしょうから
    基本的にはjavascriptとくにjQueryでの処理が現実的になります。
    ただしシビアなリアルタイム処理が必要であれば
    なんらかのアプリケーションベースでUIを構築して
    ラグを吸収しないといけないでしょう

    キャンセル

  • 2017/12/19 19:24

    非常によく流れがつかめてきました。
    ありがとうございます
    php jquery で制作していくこととします。
    jqueryで複数カードから何枚かひくことようなことが可能ということも安心しました。
    頑張ってみたいと思います。なにかありましたらまたよろしくお願い致します

    キャンセル

+2

不正防止のため、抽選作業自体は、基本的に、サーバサイドで行うことになると思います。
その場合、言語は php でも JavaScript でも構いません。

ただ、詳しく調べてませんが、抽選方法によっては「景品表示法」を意識しないと、違反してしまうケースが出てきそうです。

まず、法律から調べて、実装方法を検討してみてはいかがでしょうか?

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2017/12/19 13:55

    風営法も気をつけて下さい
    お金が絡むなら出資法も。

    キャンセル

  • 2017/12/19 13:58

    > yambejp さん
    風営法って、なんか引っかかりますか?ノーケアでした^^;

    キャンセル

  • 2017/12/19 14:00

    あ、理解しました。調べるとボロボロ出てきますね^^;

    キャンセル

  • 2017/12/19 14:19

    いわゆる風営法の第2条1項4号で、「まあじやん屋、ぱちんこ屋その他設備を設けて客に射幸心をそそるおそれのある遊技をさせる営業」というのが規定されています(景品と交換できるものはこれになる)。ので、これに引っかかるかどうか、ですね。くじを引く、は遊技になりえませんが、何らかのゲームをすると引っかかる可能性が出てきます(そのゲームの良しあしで得られる景品が異なってくるので)。
    ただ、4号営業はそもそも無店舗型を想定していないのですけれども。

    キャンセル

  • 2017/12/19 14:24

    > ただ、4号営業はそもそも無店舗型を想定していないのですけれども。

    みたいですね。

    実店舗と併用等、運用形態によってはちゃんと調べないといけないっぽいですね。

    キャンセル

  • 2017/12/19 14:54

    法律など、サービスを作る上で大切なことを教えて頂きありがとうございます。
    作ろうとしているものはスロットのようなものではなく、くじ引きのようなイメージです。キャンペーンサイトのようなシステムが一番良い形です。
    一般的にはjavascriptとPHPで作られているケースが多いのでしょうか?
    phpのみで作成してもアニメーションなど実現できるのでしょうか?

    キャンセル

  • 2017/12/19 15:04

    フロントは飾りなので、極端な話、GIF動画でも良いです。
    サーバ側で当たり判定が出れば、当たり動画、はずれれば、はずれ動画です。
    もちろん、JavaScript で飾ってもかまいません。

    キャンセル

  • 2017/12/19 15:38

    アニメーション演出だけならGIFでも可能で、PHPのみでも製作可能な気がしてきました
    15枚のカードから10枚を選ぶようなスタイルの場合(1等ー5等ランダム)はjavascriptを使うといったことでしょうか

    キャンセル

  • 2017/12/19 17:02

    実装のイメージが共有できないので何とも^^;
    こんな些事にとらわれず、勉強したいのであれば、さっさと手を動かしてみたほうがイイですよ。

    キャンセル

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

  • ただいまの回答率 90.61%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

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

  • PHP

    19903questions

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

  • JavaScript

    15991questions

    JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。