这是我的代码:
<?php
ob_start();
session_start();
include("index.php");
if (isset($_POST['user'],$_POST['pass'])):
$con=mysqli_connect("connect info");
if ( !$con ){
die('Could not connect to Database: '.mysqli_error());}
$pass=($_POST['pass']);
$query0 = "SELECT * FROM user WHERE username = '" . $_POST['user'] ."' AND password = '" . $pass . "'";
$resource0 = mysqli_query($con,$query0);
if(!$resource0):
die("Error conducting query. ".mysqli_error($con));
endif;
if(mysqli_num_rows($resource0) == 0){
echo "Username not find";
header("Location: /login.php");}
$result0 = mysqli_fetch_row($resource0);
$_SESSION['ID'] = $result0[0];
$_SESSION['userType'] = $result0[3];
if(!isset($_SESSION['ID'])):
//header("Location: ...");
else:
header("Location: ....");
endif;
else:
if(isset($_POST['from'])):
$_SESSION['from'] = $_POST['from'];
endif;
?>
<?php endif; ?>
此代码获取用户的用户名和密码信息,并在数据库中存储和搜索用户 ID。一旦找到它存储在会话变量“ID”中的信息。
问题:当会话“ID”变量被传递到下一页时,它没有被设置。令人惊讶的是,这段没有 ob_start 函数的代码昨天早上可以工作,但下午就不行了。我知道它没有设置,因为有两件事:当我在下一页回显时,什么都没有出现,因为当我尝试使用会话“ID”变量运行查询时,我收到一个 mysql 错误,说无法进行查询。
这是下一页上不起作用的代码。起初我想,我的查询可能有问题,因为我收到了这个错误:
“执行查询时出错。您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 '' 附近使用正确的语法”
但是当我尝试打印会话“ID”变量时,没有打印任何内容。
<?php session_start;
// Create connection
$con=mysqli_connect(connect info....);
// Check connection
if (mysqli_connect_errno($con))
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$query0 = "SELECT * FROM studentProfile WHERE sID = ".$_SESSION['ID'];
$resource0 = mysqli_query($con,$query0);
if(!$resource0):
echo $_SESSION['ID'];
die("Error conducting query. ".mysqli_error($con));
endif;
.......(rest of code)
已经尝试过的解决方案:我已经尝试了所有... session_write_close()、session_regenerate_id(true)、session_commit()、ob_end_flush()。我最初尝试在主页上设置会话变量,但是一旦在会话“ID”变量中执行了这些功能,就根本不再设置。
请帮忙!我已经阅读了我能找到的关于这个问题的所有论坛,但似乎没有任何效果。