解決したいことは、phpのsetcookieで1回目のアクセスと2回目以降で分岐かつ、
postのでパスワードがマッチした時に、モダールウィンドウが閉じる処理をしたいのですが、
1回目のアクセス時 → パスワード入力 OK → 他ページ移管した時に再度パスワードが出てしまいます。
通常は、パスワード入力 OK →他ページ移管した時は、setcookieで指定した時間内はパスワード画面を出したくありません。
パスワード画面を出したいときは、初回アクセス時、かつ パスワードが違う時、かつ2回目以降アクセス時かつパスワードが違う時です。
ご教授いただけますでしょうか。
function.php
//setcookie add_action( 'get_header', 'my_setcookie'); function my_setcookie() { if ( is_archive()|| is_single() ) setcookie( 'visitedHome', 'true', time() + 60*60*24*1, '/' ); //setcookie( 'isMobile', wp_is_mobile() ? 'true' : 'false', 0, '/' ); }
// header.php
<?php $http = is_ssl() ? 'https' : 'http' . '://'; $url = $http . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]; $pass = get_field('password','option'); if ( isset( $_COOKIE['visitedHome'] ) && ($_POST['pass'] == $pass) ) : ?> <?php echo '<p class="name">2回目かつパスワードOK場合</p>'; ?> <?php $http = is_ssl() ? 'https' : 'http' . '://'; $url = $http . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]; $pass = get_field('password','option'); elseif (!isset( $_COOKIE['visitedHome'] ) && ($_POST['pass'] !== $pass)) :?> <?php // パスワードチェック // パスワード不一致(パスワード入力フォーム表示) echo '<div class="blog-modal-wrap">'; echo '<div class="blog-modal-area">'; echo '<div id="access"></div>'; //echo '<button id="del">Cookieを削除する</button>'; echo '<p class="name">1回目かつパスワード違う場合</p>'; echo '<p class="name">内容を見るには暗証番号が必要です。</p>'; echo '<form action="'. $url .'" method="POST" class="blog-form-area">'; echo '<input type="password" size="5" name="pass" value="">'; echo '<input type="submit" value="開く"><br>'; echo '</form>'; echo '</div>'; echo '</div>'; ?> <?php $http = is_ssl() ? 'https' : 'http' . '://'; $url = $http . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]; $pass = get_field('password','option'); elseif (isset( $_COOKIE['visitedHome'] ) || ($_POST['pass'] !== $pass)) :?> <?php // パスワードチェック // パスワード不一致(パスワード入力フォーム表示) echo '<div class="blog-modal-wrap">'; echo '<div class="blog-modal-area">'; echo '<div id="access"></div>'; //echo '<button id="del">Cookieを削除する</button>'; echo '<p class="name">2回目かつパスワード違う場合</p>'; echo '<p class="name">内容を見るには暗証番号が必要です。</p>'; echo '<form action="'. $url .'" method="POST" class="blog-form-area">'; echo '<input type="password" size="5" name="pass" value="">'; echo '<input type="submit" value="開く"><br>'; echo '</form>'; echo '</div>'; echo '</div>'; ?> <?php $http = is_ssl() ? 'https' : 'http' . '://'; $url = $http . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]; $pass = get_field('password','option'); elseif (isset( $_COOKIE['visitedHome'] )) :?> <?php // パスワードチェック // パスワード不一致(パスワード入力フォーム表示) echo '<div class="blog-modal-wrap">'; echo '<div class="blog-modal-area">'; echo '<div id="access"></div>'; //echo '<button id="del">Cookieを削除する</button>'; echo '<p class="name">ページ移動2回目の場合</p>'; echo '<p class="name">内容を見るには暗証番号が必要です。</p>'; echo '<form action="'. $url .'" method="POST" class="blog-form-area">'; echo '</form>'; echo '</div>'; echo '</div>'; ?> <?php else : ?> <?php endif; ?>
回答2件
あなたの回答
tips
プレビュー