代码块未执行

时间:2012-07-14 15:37:11

标签: php

我最近试图制作一个小报告管理系统。一切顺利,直到遇到这个奇怪的问题。由于代码包含大量的html,我只会包含重要的部分。

基本上这是一个登录页面。我将信息存储在SESSION变量中。

当用户名和密码不匹配时,会在下面的函数中给出错误消息以供进一步处理。

编辑:我的项目中的每个页面都包含一个带有以下内容的config.php

// Start of config.php
session_start();
error_reporting(E_ERROR);

// ********************* Database Config **********************//
$dbHost = "localhost";          // MySQL host
$dbUser = "";   // MySQL username
$dbPass = "";   // MySQL password
$dbDatabase = "";  // MySQL main database name

login.php的一部分如下所示。

//START OF PHP CODE//
include("config.php");

    function gotError($msg)
    {
        $_SESSION['err'] = $msg;
        header("Location: login.php");
        die();
    }

//CODE FOR EVALUATION OF DATA//

// END OF THE PHP CODE & BELOW THE HTML WILL START //

在同一页面上,在启动的PHP代码下面,有一个页面的html代码。在html之间,有一些PHP代码用于使用上面的数据集。

----------- SOME HTML CODE HERE----
         <?php

         if(isset($_SESSION['err']))
         {
         $html.= "<script type='text/javascript'>";
         $html.= '$.alert("'.$_SESSION['err'].'");';
         $html.= "</script>";
         print $html;
         }
        ?>
----------------- SOME HTML CODE HERE--------

现在这里出现了奇怪的行为。该页面将登录数据发布到自身&amp;如果发生错误,则在会话变量{$ _SESSION ['err']}中设置错误,然后再次重定向到自身,如果$ _SESSION ['err']不为空,则会显示一个jquery消息框。

上面的代码不能以原始形式工作,但是,如果我喜欢下面显示的代码,代码可以正常工作。我的意思是整个代码包括先前没有工作的条件组件。一旦删除该特定行,条件评估就不起作用。

     <?php
     print($_SESSION['err']);

     if(isset($_SESSION['err']))
     {
     $html.= "<script type='text/javascript'>";
     $html.= '$.alert("'.$_SESSION['err'].'");';
     $html.= "</script>";
     print $html;
     }
    ?>

有没有人对此有所了解?我使用的是PHP 5.3.8版。

谢谢。

2 个答案:

答案 0 :(得分:0)

您是否正在呼叫session_start()以实际启用会话?没有它,你只会浪费你的时间。除非您开始会话,否则php将保存您写入$_SESSION的所有数据,而不会加载之前保存在其他位置的任何数据。

答案 1 :(得分:0)

我解决了这个问题。结果表明,在HTML之间改变PHP脚本在头到尾之间的位置就行了。