使用.load()方法加载到index.php中的外部php文件无法识别$ _SESSION变量

时间:2017-10-25 14:16:57

标签: javascript php jquery html session

所以我的主页只需点击一个按钮即可将其他php页面加载到其中,因此它可以是单页网站,而无需一次加载所有内容。

的index.php

<?php 
session_start();
?>
<head>
$('#btnPetShop').one( "click", function(){
            $( "#page_shop" ).load( "shop.php" );
        });
</head>
<body>
<?php
echo session_status();/----Always returns 1, no matter if logged in or not----/
if(isset($_SESSION['admin']))
        {
            if($_SESSION['admin']==1)
                {
                    /----this part works, I am logged in as admin----/
                }
        }
?>
<div id="page_shop"></div>
</body>

shop.php

<?php

        if(isset($_SESSION['admin']))
        {
            if($_SESSION['admin']==1)
                {

                }
            else{}
        }
        else{}  <----I end up here as if $_SESSION['admin'] is not set----/


        /----code entered here loads fine----/
?>

想法是在shop.php中的每篇文章上创建一个删除和编辑按钮(如果您以管理员身份登录)。 问题是$ _SESSION [&#39; admin&#39;]在index.php上被识别,但不在shop.php中识别

我尝试直接输入shop.php的内容并且它可以正常工作,问题是我希望只需点击一下按钮即可加载。

3 个答案:

答案 0 :(得分:0)

您需要在需要访问会话数据的每个页面中添加<f:image src="{uid}" treatIdAsReference="1" cropVariant="smartphone" maxWidth="{imagemaxwidth}" maxHeight="{imagemaxheight}" />

请参阅:http://php.net/manual/en/function.session-start.php

修改

由于我原来的答案中提到的解决方案不适合您,session_start();在您的代码中返回1,这意味着您的服务器上启用了会话。只剩下一件事可以解释你的会话丢失了:

您正在使用AJAX请求加载session_status(),该网址与shop.php完全在同一个域中吗?尝试在index.php之前添加完整路径,看看是否能解决问题。

为了清楚起见,如果shop.phpindex.php上运行,则新代码将为:

http://localhost/test/index.php

答案 1 :(得分:0)

如果你想使用任何Session变量,那么(在任何PHP页面中)你必须首先声明session_start();所以,在你的情况下,如果你有$ _SESSION [&#39; admin&#39;] =&#34; User1234&#34;在index.php上,如果你想在shop.php中使用$ _SESSION [&#39; admin&#39;]的值,你必须再次声明session_satart();然后使用它。例如,如果让我们考虑index.php有会话变量$ _SESSION [&#39; admin&#39;] =&#34; User1234&#34;现在你要打印&#34;欢迎用户1234&#34;在shop.php然后你可以做到如下所示。

index.php

<?php
session_start();
$_SESSION['admin'] = "User1234";
?>

<强> Shop.php

<?php
session_start();
echo "Welcome, ". $_SESSION['admin']
?>

<强>输出:

Welcome, User1234

答案 2 :(得分:0)

好吧,我觉得愚蠢......我找到了解决方案。

我把它作为剧本

$('#btn_logout').click(function(){
            <?php session_destroy();?>
        });

这是一个很大的不,如果你这样做,你应该感到羞耻