スマホとPCで異なる端末で試験中にはまったお話
あるお客様の会員制「投稿サイト」において、連続投稿を防止する機能を制作しました。
その試験中にはまったお話です。
気づくとなんてバカなんだと思うのですが、結構気づくまで時間がかかってしまいました(泣)。
自分への反省の意味も含めて備忘録として記載しておきます。
1.制作した内容
あるお客様の会員制「投稿サイト」において、いたずら目的の連続投稿を防ぐため、アカウントと同一IPアドレスからの投稿を1日2件までと制御する機能を実装しました。具体的には、アクセスしてきたIPアドレスと日付をサイト内に保存する事で1日に投稿できる件数を2件までと制御しておりました。
(厳密には、グローバルIPアドレスになるので場所が変わればIPアドレスが変わるのですが。)
2.実現手段
PHP)1日に投稿できる回数をチェックする関数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | function check_continuous_thread_entry(){ $maxcount_per_day = 2; //1日に投稿できる回数を宣言 //current access ipaddress $ipaddress = $_SERVER['REMOTE_ADDR']; $today = new DateTime(); $args = array( 'post_type' => '(カスタム投稿名)', 'posts_per_page' => '-1', 'post_status' => 'any', 'meta_query' => array( array( 'key' => 'author_ip', //ログイン時にIPaddressを保存してます。 'value' => $ipaddress, 'compare' => '=', ), ), ); $count=0; $mypost = get_posts($args); if($mypost){ $query_count = count($mypost); if($query_count > 1){ $today = new DateTime(); foreach($mypost as $post){ $entrydate = get_the_date('Y-m-d', $post->ID); $entry_datetime = new DateTime($entrydate); $compare = $today->diff($entry_datetime); if($compare->days == 0){ //差分がゼロの場合、今日の日付で登録されている $count++; if($maxcount_per_day <= $count){ return 'NG'; //1日に投稿できる許容回数をオーバー } } } } } return ; } |
3.はまったお話
最終的に試験をするのに、PCとスマホを使って連続投稿の試験を実施。しかし、PCで連続投稿を拒否されるとスマホでも拒否される事象が発生。
本来であればPCとスマホは、IPアドレスが異なるので1日に許容できる連続投稿回数が2回であるならば、PC2回、スマホ2回と合計4回は投稿できるはずなのに、そのように動作はしない。
4.原因
よくよく考えてみたら、スマホも同じWiFiに接続していました(泣)。
思い込みとは恐ろしいものです。
そのため、PCと同じIPアドレスで拒否されていました。くー(泣)。
気づくのに少し時間がかかってしまいましたが、もちろん、無事納品はできました。。。
WEB DESIGN全てお任せ!ホームページ制作
RishunTradingでは、日本にはないコンセプトや高いデザイン性をもったヨーロッパ製品の輸入販売、及び、Webサイト制作事業などをおこなっております。
「全てお任せ!ホームページ制作」は、ドメイン取得からサーバー設定、レスポンシブルデザイン(スマホ、タブレット対応)、SEO対策がすべて含まれたお得なホームページを制作するサービス商品です。
運用開始後に「Webサイト運用管理サービス(保守)」と組み合わせて購入しますと、メンテナンス、更新も含めてすべて弊社で実施しますので、お客様は安心して本業に集中する事ができます。
しかもなんと、「全てお任せ!ホームページ制作」は、¥100,000!で提供しております。
本業が忙しい中小企業様に大変ご好評を頂いている商品です。
独自ドメイン取得
サーバー開設&設定
レイアウト設計
レスポンシブルデザイン
(*1)検索エンジン最適化
(SEO対策)場所Maps
お問い合わせフォーム
SSL化
各種SNS連携
運用マニュアル