【问题标题】:PHP Session ID issue [closed]PHP会话ID问题[关闭]
【发布时间】:2012-08-19 09:09:04
【问题描述】:

我有一个网站,在我刷新页面之前,网站上的某些内容不会出现。

我在我的代码session_start(); 中发现了这一点,如果我删除我的 PHP 会话 ID,我页面上的东西又消失了,似乎这个会话需要在第一页加载时设置...有人知道该怎么做吗?

顺便说一句,不会出现的东西是一个表单,一个 GET 表单。

谢谢

这是会话的代码

function wpsc_core_load_session() {
    if ( !isset( $_SESSION ) )
        $_SESSION = null;

    if ( ( !is_array( $_SESSION ) ) xor ( !isset( $_SESSION['nzshpcrt_cart'] ) ) xor ( !$_SESSION ) )
        session_start();
}

他是什么没有出现

<form class="product_search" style="font-size:0px !important;" method="GET" action="<?php echo $pp_url?>/" >
                <input name="product_search" id="wpsc_search_autocomplete" class="wpsc_product_search wpsc_live_search_embed .wpsc_live_search" autocomplete="off" style="padding:0px !important; height:25px !important; vertical-align:top;" />
                <script type='text/javascript' > /* <![CDATA[ */
                    jQuery('#wpsc_search_autocomplete').keypress( function(e){
                        if ( e.keyCode == 13 ) {
                            var url = '<?php echo $pp_url ?>'+'?product_search='+jQuery(this).val();
                            url = encodeURI(url);
                            jQuery(window.location).attr('href', url);
                        }
                    });
                     /* ]]> */
                     </script>
                     <input type="submit" id="button" name="button" class="searchBtn" value="GO"/>
            </form>

我打开了我的 Wordpress 调试器,结果就是这样

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /home/content/19/9468119/html/wp-content/plugins/jquery-colorbox/jquery-colorbox.php:34) in /home/content/19/9468119/html/wp-content/plugins/wp-e-commerce/wpsc-core/wpsc-constants.php on line 13

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/content/19/9468119/html/wp-content/plugins/jquery-colorbox/jquery-colorbox.php:34) in /home/content/19/9468119/html/wp-content/plugins/wp-e-commerce/wpsc-core/wpsc-constants.php on line 13

当缺少的表单在那里时,会出现此消息....

Notice: A session had already been started - ignoring session_start() in /home/content/19/9468119/html/wp-content/plugins/wp-e-commerce/wpsc-core/wpsc-constants.php on line 18

【问题讨论】:

  • 能否将代码添加到问题中,好吗?
  • -1,什么?我查看了您的堆栈溢出历史记录,您可以清楚地以句子的形式整理出一个完整的想法。这个问题没有显示出这种技能。如果您改写一下,并且可能会显示一些代码,它将为您找到答案。
  • 我很抱歉我之前缺少代码。

标签: php session


【解决方案1】:

你有一个基本问题:

if ( !isset( $_SESSION ) )
    $_SESSION = null;

if ( ( !is_array( $_SESSION ) ) xor ( !isset( $_SESSION['nzshpcrt_cart'] ) ) xor ( !$_SESSION ) )
    session_start();

您无法在会话开始之前访问它。尝试启动它然后访问它...

xor 也是按位比较...我不确定这是否是您在这里寻找的,也许是||

似乎需要在第一页加载时设置此会话...有人知道该怎么做吗?

通常第一页加载由脚本的顶部或在输出标题之前运行的任何内容表示,但由于您的新页面,我只会在顶部说。试着把它放在那里。

您很可能收到错误消息并关闭了display_errors,因此我认为您会得到一个空白页。

【讨论】:

  • 我对这些东西很陌生......我刚刚在这段代码之前放了一个 session_start() 吗?
  • @user979331 是的,把它放在你脚本的顶部,它会完成它的工作
  • 我把它放在我的函数的顶部,但没有用....我试着在我的标题中放置一个 session_start()
  • @user979331 也许你可以给我们看更多的代码?还可以尝试制作一个刚刚开始会话并显示表单的测试页面。
  • 我运行了一个调试器,我会告诉你它出现的错误
猜你喜欢
  • 1970-01-01
  • 2011-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-26
  • 2010-11-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多