访问多个文件中的PHP会话变量
我有一个学校项目,我试图使用会话变量来保存登录ID,但是我似乎无法跨文件访问会话变量。我对会话比较陌生,但是我已经让它们在我用于本项目的同一台服务器上的更简单的应用程序中工作。该计划的工作如下: php是用户输入ID和密码的登录表单。 php从该表单收集数据,并使用php curl将其转发到另一台服务器(另一个组成员的服务器)。因为这不是我的部分,我没有这个代码。 访问数据库后,来自数据库的信息也会使用curl转发回我,我将其格式化到tList.php中的表中 问题是会话变量似乎无法在我的服务器上的文件之间访问。我试图实现的确切目标是访问我在tList.php上的front.php中创建的会话变量,但是即使我在front.php中分配了变量,也没有设置这些变量 任何帮助都将不胜感激。多谢各位 getData.php:访问多个文件中的PHP会话变量,php,session,curl,Php,Session,Curl,我有一个学校项目,我试图使用会话变量来保存登录ID,但是我似乎无法跨文件访问会话变量。我对会话比较陌生,但是我已经让它们在我用于本项目的同一台服务器上的更简单的应用程序中工作。该计划的工作如下: php是用户输入ID和密码的登录表单。 php从该表单收集数据,并使用php curl将其转发到另一台服务器(另一个组成员的服务器)。因为这不是我的部分,我没有这个代码。 访问数据库后,来自数据库的信息也会使用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="../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>
    or    
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>
功能状态_切换(){
if(document.getElementById('stud')。选中){
document.getElementById('sl').style.display='block';
document.getElementById('tl').style.display='none';
}else if(document.getElementById('teach')。选中){
document.getElementById('sl').style.display='none';
document.getElementById('tl').style.display='block';
}
}
你是
学生
 或nbsp
老师
用户名:
密码:
用户名:
密码:
改变我!
改变我!
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);
你的测试
以下是工作应用程序:
文件1:
<?php
session_start();
$_SESSION['test'] = "test";
echo "<a href=\"t2.php\">Click</a>";
?>
文件2:
<?php
session_start();
echo $_SESSION['test'];
?>
session_start()函数必须出现在标记之前
<?php session_start(); ?>
<html>
<body>
</body>
</html>
尝试此操作以确保将有效值传递到会话变量中
<?php
session_start();
if (!empty($_POST["txtUCID"])){
$_SESSION['id'] = $_POST["txtUCID"];
} else {
$_SESSION['id'] = 'no value set';
}
echo $_SESSION['id'];
session_start()函数出现在所有适当位置的标记之前。一定要在这之前吗?是的。它必须在任何html之前,包括空格,不幸的是,这并没有解决问题。这两个真正重要的文件将session_start()作为第一行代码(当然在内部)。我刚刚在第一个文件中打开了会话,以查看它是否有效,但我确实将其更改为您所说的方式,只是为了确保。您是否从服务器收到任何错误响应?另外,在front.php中,您将会话变量设置为POST设置的值。您确定已经设置了该值吗?正如user2547075所说,您显示给我们的代码在打开PHP标记之前有内容。如果您尚未在日志中看到错误,那么您的错误报告也会出现问题。先解决后者。然后检查源代码中的BOM标记,然后检查会话cookie是否由服务器设置并由浏览器返回。
<?php
session_start();
if (!empty($_POST["txtUCID"])){
$_SESSION['id'] = $_POST["txtUCID"];
} else {
$_SESSION['id'] = 'no value set';
}
echo $_SESSION['id'];