1

奇妙な問題があります。Webページを修正しています。一部のページでは、jquery は次の行でロードされます

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 

Internet Explorer で、この行を含むページを読み込んで Web ページの別の場所をクリックすると、ユーザーがログアウトされる場所は関係ありません。実際にこの関数が最後に実行されるようです(PHP言語を使用)

function logout()
{
global $db;
session_start();

/* Delete the user from table online */
mysql_query("DELETE FROM online WHERE user_id='$_SESSION[user_id]'");

/* Update the table last seen in table users */
$date_now = date("Y-m-d");
$time_now = date("H:i");
$date_last_seen = $date_now. ' '. $time_now;

mysql_query("UPDATE users SET date_last_seen = '$date_last_seen'
WHERE id='$_SESSION[user_id]'");

if(isset($_SESSION['user_id']) || isset($_COOKIE['user_id'])) {
mysql_query("update `users` set `ckey`= '', `ctime`= '' 
where `id`='$_SESSION[user_id]' OR  `id` = '$_COOKIE[user_id]'") or die(mysql_error());
}           

/************ Delete the sessions****************/
unset($_SESSION['user_id']);
unset($_SESSION['user_name']);
unset($_SESSION['user_level']);
unset($_SESSION['HTTP_USER_AGENT']);
session_unset();
session_destroy(); 

/* Delete the cookies*******************/
setcookie("user_id", '', time()-60*60*24*COOKIE_TIME_OUT, "/");
setcookie("user_name", '', time()-60*60*24*COOKIE_TIME_OUT, "/");
setcookie("user_key", '', time()-60*60*24*COOKIE_TIME_OUT, "/");

header("Location: index.php");
}

セッションが破棄され、ユーザー セッションがデータベースから削除され、ページが index.php にリダイレクトされます。ログイン ページで Cookie を保存するために [Remember me] が選択されている場合、ページは適切に機能します。

jqueryをロードする2つの異なるページで、この行を一番上に追加しました

<?php 
session_set_cookie_params(1800);
session_start();
?>

セッション Cookie は正しく保存されますが、ユーザーが再度ログアウトされるため、最後には何も起こりません。

jquery は、必要なときにのみロードする 2 ページにのみロードされます。汎用ヘッダーに配置しようとしましたが、同じ問題が発生します。jquery の行を削除すると、必要な機能を除いて、ページは正常に機能しました。だから行き止まりみたいな。

これはIEでのみ発生することを思い出してください(IE 8およびIE 10でテスト済み)。他のブラウザでは正常に動作します

これは、いずれかのページで実行されることになっている jquery コードです。

<script type="text/javascript" src="js/jquery.min.2012_09_29.js"></script> 
<script type="text/javascript" src="js/jquery.opacityrollover.js"></script> 
<script type="text/javascript" src="js/jquery.galleriffic.js"></script>

<!-- Optionally include jquery.history.js for history support -->
<script type="text/javascript" src="js/jquery.history.js"></script>

<script type="text/javascript">
$(document).ready(function () {
$('a#img_thumb').click(function() {
    var del_name=$(this).attr('href');
    del_name=del_name.replace('#','');
    $('input[id="delete_image"]').attr('value',del_name);
}); 
});
</scipt>

<script type="text/javascript">
        jQuery(document).ready(function($) {
            // We only want these styles applied when javascript is enabled
            $('div.navigation').css({'width' : '96px', 'float' : 'right'});
            $('div.content').css('display', 'block');

            // Initially set opacity on thumbs and add
            // additional styling for hover effect on thumbs
            var onMouseOutOpacity = 0.80;
            $('#thumbs ul.thumbs li, div.navigation a.pageLink').opacityrollover({
                mouseOutOpacity:   onMouseOutOpacity,
                mouseOverOpacity:  1.0,
                fadeSpeed:         'fast',
                exemptionSelector: '.selected'
            });

            // Initialize Advanced Galleriffic Gallery
            var gallery = $('#thumbs').galleriffic({
                delay:                     1000,
                numThumbs:                 10,
                preloadAhead:              10,
                enableTopPager:            false,
                enableBottomPager:         false,
                imageContainerSel:         '#slideshow',
                controlsContainerSel:      '#controls',
                captionContainerSel:       '#caption',
                loadingContainerSel:       '#loading',
                renderSSControls:          true,
                renderNavControls:         true,
                playLinkText:              'Play Slideshow',
                pauseLinkText:             'Pause Slideshow',
                prevLinkText:              '&lsaquo; Previous Photo',
                nextLinkText:              'Next Photo &rsaquo;',
                nextPageLinkText:          'Next &rsaquo;',
                prevPageLinkText:          '&lsaquo; Prev',
                enableHistory:             true,
                autoStart:                 false,
                syncTransitions:           true,
                defaultTransitionDuration: 200,
                onSlideChange:             function(prevIndex, nextIndex) {
                    // 'this' refers to the gallery, which is an extension of $('#thumbs')
                    this.find('ul.thumbs').children()
                        .eq(prevIndex).fadeTo('fast', onMouseOutOpacity).end()
                        .eq(nextIndex).fadeTo('fast', 1.0);

                    // Update the photo index display
                    this.$captionContainer.find('div.photo-index')
                        .html('Photo '+ (nextIndex+1) +' of '+ this.data.length);
                },
                onPageTransitionOut:       function(callback) {
                    this.fadeTo('fast', 0.0, callback);
                },
                onPageTransitionIn:        function() {
                    var prevPageLink = this.find('a.prev').css('visibility', 'hidden');
                    var nextPageLink = this.find('a.next').css('visibility', 'hidden');

                    // Show appropriate next / prev page links
                    if (this.displayedPage > 0)
                        prevPageLink.css('visibility', 'visible');

                    var lastPage = this.getNumPages() - 1;
                    if (this.displayedPage < lastPage)
                        nextPageLink.css('visibility', 'visible');

                    this.fadeTo('fast', 1.0);
                }
            });

            /**************** Event handlers for custom next / prev page links **********************/

            gallery.find('a.prev').click(function(e) {
                gallery.previousPage();
                e.preventDefault();
            });

            gallery.find('a.next').click(function(e) {
                gallery.nextPage();
                e.preventDefault();
            });

            /****************************************************************************************/

            /**** Functions to support integration of galleriffic with the jquery.history plugin ****/

            // PageLoad function
            // This function is called when:
            // 1. after calling $.historyInit();
            // 2. after calling $.historyLoad();
            // 3. after pushing "Go Back" button of a browser
            function pageload(hash) {
                // alert("pageload: " + hash);
                // hash doesn't contain the first # character.
                if(hash) {
                    $.galleriffic.gotoImage(hash);
                } else {
                    gallery.gotoIndex(0);
                }
            }

            // Initialize history plugin.
            // The callback is called at once by present location.hash. 
            $.historyInit(pageload, "advanced.html");

            // set onlick event for buttons using the jQuery 1.3 live method
            $("a[rel='history']").live('click', function(e) {
                if (e.button != 0) return true;

                var hash = this.href;
                hash = hash.replace(/^.*#/, '');

                // moves to a new page. 
                // pageload is called at once. 
                // hash don't contain "#", "?"
                $.historyLoad(hash);

                return false;
            });

            /****************************************************************************************/
        });
    </script>

これはギャラリー的な jquery プラグインです

何か案は?ありがとうございました

4

2 に答える 2

1

問題は、welcome.php ページにありました (ページは、welcome.php?p=new_page1、welcome.php?p=new_page2 などの形式で読み込まれます)。問題は、welcome.php コードでユーザーをログアウトさせる忘れられた endession() スクリプトでした。私はjqueryデバッグを使用しましたが、スクリプトが削除されていることがわかりました。ヒントをくれた@KLK1に感謝します;-)

于 2013-04-19T19:41:31.813 に答える
0

JS コードを公開できますか? この問題を引き起こすのは、IE の JQuery のイベント リンク イベントに関するものだと思います。

js に次のようなものがあります: .on("click", function(){...})?

于 2013-04-19T10:57:18.983 に答える