3

Laravel で、reddits のような安全な賛成/反対投票システムや、偽の ajax リクエストでロードできないスタック オーバーフローのシステムを作成するにはどうすればよいでしょうか。(専門用語がわからなかったらすみません)。

私は3つのテーブルを持っています:

**User**
id

**Post**
id

**Vote**
id
user_id
post_id
vote (int)

私の一般的な考えは、賛成票または反対票ボタンがクリックされたときに、JQuery を使用して、post_id と投票 (賛成票の場合は 1、反対票の場合は -1) を持つ POST データで AJAX を起動することです)。これは、VotesController@vote ルートによって選択されます。投票メソッドは、ユーザーが認証されているかどうかを確認し、同じユーザーと同じ投稿からの投票があるかどうかを確認し、投票が存在する場合: 変更 (反対投票)、そうでない場合は追加します (賛成投票)。

これが私のちょっとした疑似コードです

function vote()
{
    //Checks if user is logged in
    if(Auth::check()){

        //checks if ajax request
        if (Request::ajax())
        {
                            //get my data
            $post = Input::post('post');
                            $vote = Input::post('vote');
            $user = Auth::user()->id;

            //checks if user voted
            $vote = querythatisnotyetcoded

            //if row exists 
            if($vote->count() > 0){
                //change row AKA DOWNVOTE
                Vote->vote = $vote // however you change values
            }
            else{
                //add new row AKA UPVOTE
                Vote::create([
                    'user_id' => $user,
                    'post_id' => $post,
                                'vote' => $vote
                ]);
            }
        }
        else{
            return "No Ajax Request";
        }
    }
    else{
        return "Not logged in";
    }
}   

そのロジックが安全かどうか教えてください。

*編集: コードが半分茶色になっている理由がわからない (修正済み!)

4

2 に答える 2