2012-07-24 19 views
0

我正在制作一个涉及登录和保存会话等的网站。在我的一个页面上,php登录检查代码在文件开始处不执行。完全一样。所有这一切都是正常的HTML之后。它附加到一个js文件。任何原因,为什么不会被称为?提前致谢!PHP不在html开头执行

<?php 
session_start(); 

if (!isset($_SESSION['username'])) { 

    header("Location:index.php"); 

} 
?> 
+0

'它附加到一个js文件' - 这是什么意思?它是什么? – asprin 2012-07-24 05:23:46

+0

你怎么知道它不执行?也许会话变量已经设置好了。 “什么是附加到一个JS文件”是什么意思?你的HTML文件实际上是JS? – Joey 2012-07-24 05:23:53

+0

啊。让我澄清 - 也有一个JavaScript文件,如'' – 2012-07-24 05:26:30

回答

0

您的代码是正确的,但通常您尝试错误地找到此代码。

把这个代码在顶部或更好地从一个函数调用这个看这个

<? 

function checkAdminLogin() 
    { 
     session_start(); 

     if (!isset($_SESSION['login_admin'])) 
     { 

       header("location:index.php?user=login"); 
     } 
    } 

?> 

和它保存为islogin.php

,利用此功能在以往任何时候ü希望

说在home.php看起来像这样

<?php 

include("islogin.php"); 
checkAdminLogin(); 
?> 
+1

这真的不会比Quinn做的更好。 – Ben 2012-07-24 06:05:24

+0

谢谢!这工作。 – 2012-07-26 18:32:31

+0

哎呀不,它不。我结束了我的JavaScript做到了通过ajax(我已经提出请求onLoad) – 2012-07-26 22:02:33

0

session_start()和任何header('...')应位于呼叫页面的开头。这些是开始/继续每个页面的会话。标题可以设置页面内容,到期时间,重定向和其他信息。如果任何HTML或输出在其调用之前完成,则代码将不会执行。

+0

但是之前没有HMTL – 2012-08-05 23:32:10

0

如果您在代码之前输出任何html,它将不起作用。

你可以使用元重定向,这将避免这个问题。

<?php 
session_start(); 

if (!isset($_SESSION['username'])) { 

    echo '<meta HTTP-EQUIV="REFRESH" content="0; url=index.php">'; 

} 
?> 
+0

嗯我试试这个 – 2012-08-05 23:32:56