我对后端编程相当新,而且似乎找不到简单(在我看来)问题的答案。我理解,如果我只想显示给定用户的特定数据(例如购物车中的项目),我会使用会话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> ";
}
?>
这似乎有效,但整个方法似乎非常笨重,我的直觉告诉我,除非用户登录,否则我不应该阻止每个页面加载。此外,此方法创建带引号的各种问题,使代码真的难以阅读和调试。
答案 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> ";
?>