2017-07-27 3 views
0

私はlaravel 5.4で作業しています。私はダウンロードリンクを提供するウェブサイトの一部を持っていますが、 。承認された場合にのみユーザーがウェブサイトの一部にアクセスできるようにする

例: 私は、ユーザーが購入することができるコースを持っています。各コースはダウンロードのリンクが異なります。ここでは、ユーザーが購入した正確なコースのダウンロードリンクを表示したいと思います。30日間はすべてのコースではありません。

どうすればいいですか?

PS:特定のユーザーを特定のコースに限定して関連付ける方法をデータベース構造についてのガイドが必要です。

ありがとうございます。

+0

使用している認証システムは何ですか? – Maxime

+0

@Maximeどういう意味ですか?私は 'make:auth'をインストールしました。そして、私はそれに対してカスタムルートを使っています。 –

答えて

0

私はLaravelでそれほど経験はありませんが、PHPで行うのはとても簡単です。

if ($_SESSION['premium'] = true) { 
    # Paid content 
} else { 
    echo "Sorry! This is for premium members only!"; 
} 

あなたはまた、照会のオプションがあります:あなたはセッションは、このような真であるかどうかを確認することができそれでは

$_SESSION['premium'] = true; 

:あなたができることの一つは、このようなセッションでの店舗情報ですデータベースに「支払済」という列が1(真)または0(偽)に設定されているかどうかを確認します。私はあなたがする方法を理解していると仮定しています。最近のコメントに応えて

  • ID
  • に続いて

をCourse_IDに

  • のuser_id:

    は、テーブルを作成し、これらの列とpurchasesと呼ばれますページ、クエリテーブル:

    $query = mysqli_query($connection_variable, "SELECT * FROM purchases WHERE user_id='$_SESSION['username'] AND course_id='$course_id'"); 
    if (mysqli_num_rows($query) > 0) { 
        #Show course 
    } else { 
        echo "ERROR MESSAGE HERE"; 
    } 
    

    これを試してみてください。

  • +0

    ありがとう、私はあなたのポイントを得るが、私は支払いを承認した後、すべてのコースがユーザーに公開されていない限り、正確なコース(彼)が支払われたユーザーを接続する方法を知る必要があります! –

    +0

    @RobertNicjoo私の答えを参照して、私はちょうどそれを編集した。 – HoogleyBoogley

    +0

    @hoogleyBoogly私は購入テーブルと情報を作成することができますが、今はそれを渡すことができますが、ダウンロードリンクの有効期限はどうですか? –

    0

    まず、ユーザーのログインを前提とします。

    Purchasesのモデルをuser_id,course_id、タイムスタンプで作成し、1対多の関係を設定します。

    誰かがコースを購入したときにあなたは上の購入テーブルにレコードを追加します。あなたがこれらの購入のリストを持っているとすれば、これらの購入は

    User::find(1)->purchases 
    

    となり、これはダウンロードが許可された購入を返します。スコープを使用して30日の有効期間ルールに影響を与えるために追加の検証が必要になることがあります。ダウンロードは、今日の日付がcreated_at列から30日以内の場合にのみ利用可能です。

    +0

    感謝の男、今私は購入テーブルがあり、私はユーザーと彼/彼女の注文のすべての情報を得ることができますが、まだ 'スコープ'とそれが期限切れにする方法について混乱しますか? –

    +0

    scopeActiveなどのローカルスコープを作成し、今日とcreated_at列の差が30日未満になるレコードのみを返すクエリオブジェクトに対してwhereRawを実行します。 – httpoz

    関連する問題