[英]Login Form Reappearing on Every Page
每個頁面上都有一個infusionsoft登錄表單模式。 當用戶登錄時,模式將被隱藏,並顯示頁面上的信息,並在刷新時保持顯示狀態。 但是,當用戶導航到另一個頁面時,即使仍然存在來自登錄的cookie,也會再次出現登錄表單。 這是user-auth.php的代碼:
<?php
add_action( 'init', 'user_auth' );
/**
*
*
*/
function user_auth()
{
if( !isset( $_POST['user-auth'] ) ) {
return;
}
$page_id = 6;
$code = get_field( 'access_code', $page_id );
$v_username = isset( $_POST['entryemail'] ) ? $_POST['entryemail'] : '';
$v_value = isset( $_POST['entrycode'] ) ? $_POST['entrycode'] : '';
$v_time = isset( $_POST['remember'] ) ? $_POST['remember'] : 0;
$infusion = new Infusion();
$user = $infusion->findByEmail( $v_username );
if( $user && ( $v_value == $code ) ) {
$time = $v_time ? strtotime('+1 year') : strtotime('+3 day');
$md5 = user_auth_user_save( $user );
$url = parse_url( site_url() );
$path = isset( $url['path'] ) ? $url['path'] : '';
setcookie( 'website_login', $md5, $time, $path, $url['host'] );
$GLOBALS['localpopup'] = true;
}
elseif( $user ) {
$GLOBALS['localpopup'] = 'Invalid access code.';
}
else {
$GLOBALS['localpopup'] = 'Your email cannot be found.';
}
}
形式(login.php):
<?php
$email = isset( $_POST['entryemail'] ) ? $_POST['entryemail'] : '';
$code = isset( $_POST['entrycode'] ) ? $_POST['entrycode'] : '';
$remember = isset( $_POST['remember'] ) ? $_POST['remember'] : false;
$error = '';
if( isset( $GLOBALS['localpopup'] ) ) {
$error = $GLOBALS['localpopup'];
}
?>
<div class="form-code-wraper" id="code-login">
<span class="logo-popup"><img src="<?php echo THEMEURL ?>images/logo.png" alt="Pointy"/></span>
<h1>Welcome</h1>
<h2>Please enter your access code</h2>
<form accept-charset="UTF-8" action="" class="entry-form" method="POST">
<div class="input-holder-popup enter-code clearfix">
<div class="input-row clearfix">
<label for="entryemail">Email: </label>
<input class="field-input-container" id="entryemail" name="entryemail" type="email" dir="ltr" required value="<?php echo $email ?>"/>
</div>
<div class="input-row clearfix">
<label for="entrycode">Code: </label>
<input class="field-input-container" id="entrycode" name="entrycode" type="text" required value="<?php echo $code ?>"/>
</div>
<div class="input-row clear remember-input">
<input type="checkbox" id="remember" name="remember" value="1" <?php if( $remember ) : ?> checked="checked"<?php endif ?>/> <label for="remember">Remember me</label>
</div>
</div>
<div class="buttons send-button">
<input type="submit" name="user-auth" value="Enter" id="user-auth" />
</div>
</form>
<div class="send-info">
<?php if( $error ) : ?><div class="error-message"><?php echo $error ?></div><?php endif ?>
<a href="#" class="register-link">No code? Click here</a>
</div>
</div>
popup.php:
<?php
if(is_page('282')){
return;
}else {
if( user_auth_popup_hide() ) {
return;
}
}
?>
<div id="light" class="white_content">
<?php get_template_part( 'blocks/popup/login' ) ?>
<?php get_template_part( 'blocks/popup/register' ) ?>
</div>
<div id="fade" class="black_overlay"></div>
function user_auth_popup_hide()
{
$localpopup = isset( $GLOBALS['localpopup'] ) && ( $GLOBALS['localpopup'] === true );
$cookie = isset( $_COOKIE['website_login'] );
$special_page = in_array( get_the_ID(), array(
169,
172,
) );
return $localpopup || $cookie || $special_page;
}
已解決:這不是代碼問題,而是安裝了阻止身份驗證Cookie的緩存的問題。
代碼中的小錯誤。...而不是使用
$ url = parse_url(site_url()); $ path = isset($ url ['path'])嗎? $ url ['path']:'';
cookie需要使用setcookie('website_login',$ md5,$ time,'/','websitedomainname.com')設置;
我之前曾嘗試使用“ /”作為路徑,但無法使用,因此在這種情況下,網站域名至關重要。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.