好吧,所以我基本上尝试的是将两个数据库连接到我的index.php 文件,然后使用其中一个数据库来登录用户,并使用其他数据库之一来存储用户的 session 。
我不知道如何存储用户的 session 。我想要做的是显示用户信息,例如电子邮件和用户名之类的信息,然后当他们注销时,我希望该信息随着 session 而消失,但目前当用户登录时,信息保持不变老用户,它不会改变。
我在下面包含了我的代码。在我的代码中,当我提到 session 就像它的数据库一样时,那是因为我创建了一个名为 session 的数据库和表,而我的另一个数据库称为数据库,该表称为管理。
索引
<?php
session_start();
$servername = "localhost";
$username = "root";
$password = "****";
$dbname = "database";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
if($_SERVER["REQUEST_METHOD"] == "POST") {
// username and password sent from form
$myusername = mysqli_real_escape_string($db,$_POST['username']);
$mypassword = mysqli_real_escape_string($db,$_POST['password']);
$sql = "SELECT id FROM admin WHERE username = '$myusername' and passcode = '$mypassword'";
$result = mysqli_query($db,$sql);
$row = mysqli_fetch_array($result,MYSQLI_ASSOC);
$active = $row['active'];
$count = mysqli_num_rows($result);
// If result matched $myusername and $mypassword, table row must be 1 row
if($count == 1) {
$session_id = session_id();
$sql = "INSERT INTO session(session_id,username) VALUES('$session_id','$myusername')";
mysqli_query($db,$sql);
header("Location: test2.php");
}else {
$error = "";
}
}
?>
配置
<?php
define('DB_SERVER', 'localhost');
define('DB_USERNAME', 'root');
define('DB_PASSWORD', '******');
define('DB_DATABASE', 'database');
$db = mysqli_connect(DB_SERVER,DB_USERNAME,DB_PASSWORD,DB_DATABASE);
?>
session
<?php
include('config.php');
session_start();
$user_check = $_SESSION['myusername'];
$ses_sql = mysqli_query($db,"select username from admin where username = '$user_check' ");
$row = mysqli_fetch_array($ses_sql,MYSQLI_ASSOC);
$login_session = $row['username'];
?>
测试 2 页面(这是我要登录的页面,以便显示用户信息。)
<?php
session_start();
include("config.php");
$servername = "localhost";
$username = "root";
$password = "*****";
$dbname = "database";
$dbname2 = "session";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname, $dbname2);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$session_id = session_id();
$sql = "SELECT id, username, passcode, email, Address, City, Country, Zip, FirstName, LastName, About FROM admin WHERE username = (SELECT username FROM session WHERE session_id = '$session_id')";
$result = $conn->query($sql);
$row = $result->fetch_assoc();
?>
最佳答案
正如我在评论中所说:
"Basically, what you need to do is assign a session array to a post array and then pass that session to other pages (and query in a WHERE clause), then destroy the session on logout."
所以这是您可以使用的逻辑,作为一个基本示例:
旁注:
我很可能需要更多时间来检查您的整个代码来修复它。这更容易/更快。
<?php
session_start();
$_POST['user'] = "John"; // Take the POST array from your named input
if (!isset($_SESSION['var'])) {
$_SESSION['var'] = $_POST['user'];
} else {
echo "It seems the session is already set " . $_SESSION['var'];
}
$username = $_SESSION['var'];
echo $username;
...然后检查后续页面中是否设置了 session 并应用相同的逻辑。
另请注意您的问题下留下的评论。
销毁 session 引用:
关于php - 尝试将两个数据库连接到一个 php 文件并存储用户 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38840589/