2014-03-03 4 views
1

세션 변수를 사용하여 로그인 ID를 저장하려고하는 학교 프로젝트가 있지만 파일간에 세션 변수에 액세스 할 수 없습니다. 저는 비교적 세션에 익숙하지 않지만,이 프로젝트에 사용하고있는 동일한 서버에서보다 단순한 응용 프로그램에서 작업하도록했습니다. 프로그램은 다음과 같이 작동합니다.여러 파일에서 PHP 세션 변수에 액세스

getData.php는 사용자가 자신의 ID와 암호를 입력하는 로그인 양식입니다. front.php는이 양식에서 데이터를 수집하고 php curl을 사용하여 다른 그룹 구성원의 다른 서버로 전달합니다. 이것이 내 부분이 아니기 때문에 나는이 코드를 가지고 있지 않다. 데이터베이스에 액세스하면 데이터베이스의 정보가 curl을 사용하여 나에게 다시 전달되고 테이블의 tList.php에서 형식을 지정합니다.

문제는 MY SERVER에있는 파일간에 세션 변수에 액세스 할 수없는 것입니다. 내가 달성하고자하는 정확한 목표는 tList.php의 front.php에서 작성한 세션 변수에 액세스하는 것이지만, front.php에 변수를 지정하더라도 변수가 설정되지 않습니다.

도움을 주시면 감사하겠습니다. 고맙습니다.

getData.php :

<?php 

session_start(); 

?> 

<html> 
<head> 

    <link rel="stylesheet" type="text/css" href="../css/style.css"> 
    <link rel="stylesheet" type="text/css" href="../css/b.css"> 
    <link href="../css/test.css" rel="stylesheet" type="text/css"> 

</head> 

<body> 

<script type="text/javascript"> 

    function status_toggle() { 

     if(document.getElementById('stud').checked) { 

      document.getElementById('sl').style.display='block'; 
      document.getElementById('tl').style.display='none'; 

     } else if(document.getElementById('teach').checked) { 

      document.getElementById('sl').style.display='none'; 
      document.getElementById('tl').style.display='block'; 

     } 
    } 

</script> 

<!-- Status Selection --> 

<form name="radio" class="nav selection_form" action="" align="center"> 

    <div align="center" class=""> 
     Are you a <br> 
     Student <input id="stud" type="radio" name="status" value="student" onclick="javascript:status_toggle();" checked> 
     &nbsp&nbsp&nbsp or &nbsp&nbsp&nbsp 
     Teacher <input id="teach" type="radio" name="status" value="teacher" onclick="javascript:status_toggle();"> 
    </div> 

</form> 

<!-- Student Form --> 

<form id="sl" name="student_login" action="front.php" class="input-block my_form" autocomplete="on" method="post"> 

    <div align="center"> 
     Username: <input type="text" name="txtUCID" size="15" /><br /> 
     Password: <input type="password" name="txtPasswd" size="15" /><br /> 
      <p><input class="btn-red" id="submit" type="submit" value="Login" /></p> 
    </div> 

</form> 

<form style="display:none" id="tl" name="teacher_login" action="front.php" class="input-block my_form" autocomplete="on" method="post"> 

    <div align="center"> 
     Username: <input type="text" name="teacherTxtUCID" size="15" /><br /> 
     Password: <input type="password" name="teacherTxtPasswd" size="15" /><br /> 
      <p><input class="btn-grn" id="submit" type="submit" value="Login" /></p> 
    </div> 

</form> 

<div align="center" class="alert_box input-block my_form"> 

     <h2 align="center" type="text" id="local_db"> change me!</h2> 
     <h2 align="center" type="text" id="njit_db"> change me!</h2> 

</div> 

</body> 

</html> 

front.php :

<?php 
session_start(); 

$un = $_POST["txtUCID"]; 
$pw = $_POST["txtPasswd"]; 

$_SESSION['id'] = $un; 

$curl = curl_init('web.njit.edu/~mc332/cs_490/loginSTD.php'); 

$postData= array(

    'txtUCID' => $un, 
    'txtPasswd' => $pw 

); 

curl_setopt_array($curl, array(

    CURLOPT_RETURNTRANSFER => 0, 
    CURLOPT_POST => true, 
    CURLOPT_POSTFIELDS => $postData, 
    CURLOPT_FOLLOWLOCATION => 1, 
    CURLOPT_MAXREDIRS => 5 

)); 

echo $_SESSION['id']; 

$result = curl_exec ($curl); 

curl_close ($curl); 

tList.php

<?php 
session_start(); 
?> 

<html> 

<head> 
    <link rel="stylesheet" type="text/css" href="../css/style.css"> 
    <link rel="stylesheet" type="text/css" href="list.css"> 
</head> 

<body> 

<div class="header"> 
    Your Tests 
</div> 

<div class="list-view"> 

    <?php 
     echo "SV: ".$_SESSION['id']; 

     $result = $_POST['tests']; 

     echo "<table>"; 
     echo "<tr><th>Test ID</th><th>Test Name</th><th>Attempted</th><th>Score</th><th> Attempt Test </th></tr>"; 

     $json = json_decode($result); 

     $i = 0; 
     while($i < count($json)) { 

      $id = $json[$i][0]; 
      $name = $json[$i][1]; 

      $tId = $id; 

      echo "<tr> <td> $id </td> <td> $name </td> <td> ? </td> <td> ?/100 </td> <td> <form method=\"post\" action=\"goToTest.php\" id=\"form$tId\"><button type=\"submit\">Take Test</button></input><input type=\"text\" style=\"display: none;\" name=\"poop\" value=\"$tId\"></input></form></td> </tr>"; 

      $i++; 
     } 

     echo "</table>"; 

     echo "end"; 

    ?> 

</div> 

</body> 

</html> 
여기

작업 애플리케이션이다

FILE1 :

01,235,
<?php 
session_start(); 

$_SESSION['test'] = "test"; 

echo "<a href=\"t2.php\">Click</a>"; 

?> 

파일 2 :

<?php 
session_start(); 

echo $_SESSION['test']; 

?> 

답변

1

으로 session_start() 함수는 태그 앞에 나타나야합니다

<?php session_start(); ?> 

<html> 
<body> 

</body> 
</html> 

http://www.w3schools.com/php/php_sessions.asp

보십시오이 당신이 세션에 유효한 값을 전달하고 있는지 확인하기 변하기 쉬운.

<?php 
    session_start(); 
    if (!empty($_POST["txtUCID"])){ 
     $_SESSION['id'] = $_POST["txtUCID"]; 
    } else { 
    $_SESSION['id'] = 'no value set'; 
    } 
echo $_SESSION['id']; 
+0

session_start() 함수는 모든 적절한 위치에 태그 앞에 나타납니다. 그것은 <-! Doctype html -> 앞에 있어야합니까? – Mike

+1

예. 그것은 공백을 포함하여 모든 html 앞에 있어야합니다. –

+0

불행히도, 그 문제를 해결하지 못했습니다. 실제로 중요한 두 파일은 session_start()를 코드의 첫 번째 줄로 사용합니다 (물론 안에 있음). 방금 첫 번째 파일에 세션을 열어 작동 여부를 확인했지만 방금 확인한 내용으로 변경했습니다. – Mike

관련 문제