簡體   English   中英

登錄表單重新出現在每個頁面上

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM