2012-07-14 6 views
0

최근에 작은 보고서 관리 시스템을 만들려고했습니다. 이 이상한 문제가 발생할 때까지 모든 것이 잘되고있었습니다. 코드에는 html이 많이 포함되어 있으므로 중요한 부분 만 포함합니다.코드 블록이 실행되지 않습니다.

기본적으로 로그인 페이지입니다. 정보를 SESSION 변수에 저장하고 있습니다.

사용자 이름과 패스가 일치하지 않을 경우 추가 처리를 위해 오류 메시지가 아래의 기능에 표시됩니다.

편집 : 내 프로젝트의 모든 페이지는 다음과 같은 내용

// 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의 일부

으로 config.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-------- 

지금 여기에 이상한 행동으로 제공합니다. 페이지 자체 &에 로그인 데이터를 게시 에러가 발생했을 경우, 오류가 세션 변수에 설정된 {$ _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을 사용하고있다.

감사합니다.

+0

스크립트 시작 부분에'session_start()'가 있습니까? – PeeHaa

+0

추가 정보를 추가했습니다. 문제는 세션 변수가 설정되지 않고, 위의 내용을 인쇄 할 때 if 조건을 평가하는 것입니다. – Nick

답변

0

실제로 세션을 사용하려면 session_start()으로 전화 하시겠습니까? 그것 없이는, 당신은 단지 당신의 시간을 낭비 할 것입니다. 세션을 시작하지 않으면 PHP는 이 아니며은 쓸 데이터를 $_SESSION에 저장하고 이전에 다른 곳에 저장된 데이터는로드하지 않습니다.

+0

분명히 나는 ​​그것을 부르고있다. 모든 페이지는 session_start()가있는 설정 파일을 포함합니다. print 문을 추가 할 때 세션 변수의 내용을 표시하고 작성했지만 지금은 그 정보를 추가했을 때 분명하다고 생각 했으므로 그 정보를 포함하지 않았습니다. 감사. – Nick

0

이 문제가 해결되었습니다. HTML에서 머리로 PHP 스크립트의 위치를 ​​바꾸는 것이 트릭을 만들어 냈다는 것을 알았습니다.

관련 문제