PHP会话 - 阻止整个页面加载

时间:2015-10-18 04:07:16

标签: php session

我对后端编程相当新,而且似乎找不到简单(在我看来)问题的答案。我理解,如果我只想显示给定用户的特定数据(例如购物车中的项目),我会使用会话ID来识别该用户,并将该特定用户的任何信息从数据库插入我的页面通过php的 echo 功能。现在,如果我有一个包含很多html代码行的页面并希望代码只在会话中运行怎么办?我应该将所有代码放入 else {echo" ... html code ...&#34 ;;} 并让页面看起来像这样:

<?php
    session_start();    
    if (!isset($_SESSION['id'])) {
        header('location:../');
        exit();
    } else {
        echo "
            <html>
            <body>
                code
                code
                code
                code
            </body>
            </html> ";
    }
?>

这似乎有效,但整个方法似乎非常笨重,我的直觉告诉我,除非用户登录,否则我不应该阻止每个页面加载。此外,此方法创建带引号的各种问题,使代码真的难以阅读和调试。

4 个答案:

答案 0 :(得分:1)

<?php
  session_start();    
  if (!isset($_SESSION['id'])) {
    header('location:../');
    exit(); // <-- terminates the current script
  }
// close the php tag and write your HTML :)
?>
<html>
  <body>
    code
    code
    <!-- if you need another php tag somewhere else -->
    <?php if(1 != 2) echo '<em>PHP works :)</em>'; ?>
    code
    code
  </body>
</html>

答案 1 :(得分:0)

您的会话无论您是否认出用户,我都会在那里。 您可以通过表单变量或会话cookie传递会话ID。并通过设置会话ID

来调用会话
session_id($session_var_passed);
session_start();

你应该测试传递的会话。

答案 2 :(得分:0)

你可以这样做。

<?php

    $shouldShow = 0;
    session_start();
    if (isset($_SESSION['id'])){
        $shouldShow = 1;



}
?>
<html>
<body>


<script>

var shouldLoad = <?php echo $shouldShow; ?>;
if (shouldLoad == 1){

    loadPage(true); // load page is an imaginary Javascript function which
            //you can make to load the page.

}

</script>
</body>
</html>

通过这种方式,您可以混合使用php和java脚本来实现目标,并使网站更加用户友好。

第一个php部分包含php变量,如果会话存在,将设置为1。

现在你有了一个HTML部分,你有一个脚本标记,在该标记下有一个变量。你只需回显php变量&#34; shouldLoad&#34;进入这个javascript变量。所以现在你的javascript知道要加载或不加载网页。在您的javascript代码中进行必要的调整,以根据变量的值加载网页。

另一种方法是。

    <?php


    session_start();
    if (!isset($_SESSION['id'])){           
        header('Location: http://myhost.com/mypage.php');
        // redirect the page to another location (a page saying no session found)

}

?>


<html>
<body>
    your html codes you want to show
</body>
</html>

此外,如果您只想退出PHP脚本并且不关心酷UI,您可以简单地将&#34; exit()&#34;你的内心如果&#39;条件,以便脚本终止它不会找到所需的会话ID。

答案 3 :(得分:0)

如果你认为页面太笨重,你可以做这样的事情

<?php
    session_start();    
    if (!isset($_SESSION['id'])) {
        header('yourFile.php);
        exit();

}

“your file.php”

<?php
     echo "
                <html>
                <body>
                    code
                    code
                    code
                    code
                </body>
                </html> ";
     ?>