无法使用$会话变量从数据库检索数据

1qczuiv0  于 2021-06-20  发布在  Mysql
关注(0)|答案(0)|浏览(252)

我一直在做一个与租房有关的项目。访客可以注册或登录,只有登录的用户才能添加房屋出租。每个用户都有自己的个人资料,显示他的用户名,电子邮件和住宿,他上传了出租。我的问题是,我无法检索登录用户的电子邮件。另外,在mysql数据库中,我在acom(modation)表中使用了一个外键,它引用了用户的主键(userid)。密钥与用户id不匹配。任何建议都会非常有用。事先非常感谢。发布以下部分代码:
单文件

<?php include('server.php') ?>
<? php

if (isset($_SESSION['username'])) {
$_SESSION['msg'] = "You're now logged in.";
unset($_SESSION["register.php"];
header('Location: user_index.php');
}
?>
<!DOCTYPE html>
<html>
<link href="https://fonts.googleapis.com/css?family=Eater" rel="stylesheet">
<link rel="stylesheet" type="text/css" href="mystyle.css">
<body>
<p id="pagetitle">Booking Planet </p>
<div class="navbar" id="topnav">
<button onclick="document.getElementById('id01').style.display='block'" 
style="width:auto;">Login</button>
<button  onclick="document.getElementById('id02').style.display='block'" 
style="width:auto;">Register</button>
<a href="#home"> HOME </a>
</div>
<?php
 $db = mysqli_connect('localhost', 'root', '', 'registration');
 // Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$result = mysqli_query($db,"SELECT * FROM accom");
echo "<p> </p>";
echo "<div class='acclist'> Explore some fairytale destinations.. </div>";
echo "<ul>";
while($row = mysqli_fetch_array($result))
{
$image=$row['image'];
$target = "images/".basename($image);
echo "<img src='" . $target  . "' width=800 height=500/>";
echo "<li id='title'><b>"  . $row['title'] . "</b></li>";
echo "<li> Description: &nbsp; <i>" . $row['description'] . "</i></li>";
echo "<li> Address: &nbsp; <i>". $row['address'] . "</i></li>";
echo "<li> Available from: &nbsp; <i>" . $row['checkin'] . "</i></li>";
echo "<li> Available until: &nbsp; <i>" . $row['checkout'] . "</i></li>";
?><button onclick="document.getElementById('id01').style.display='block'" 
type='button' class='bookbtn'>Log-in to book now!</button>
<?php 
echo "<li><img src='sepline.png' width=1500 height=75> </li>";}
echo "</ul>";
mysqli_close($db);
?>
</div>
<div id="id01" class="modal">
<? php include('errors.php'); ?>
<form action="" method="post" class="modal-content animate" name="login" >
<div class="logocontainer"> Booking Planet
</div>
<h3> Account Log-in. </h3>  
<div class="container">
<? php echo $errors; ?>
  <label><b>Username</b></label>
  <input type="text" placeholder="Enter Username" name="username" required>

  <label><b>Password</b></label>
  <input type="password" placeholder="Enter Password" name="password" 
  required>

  <button type="submit" name="login_user">Login</button>
  </div>
  <div class="container">
  <button type="button"  class="cancelbtn" id="cncl1">Cancel</button>
  </div>
  </form>
  </div>
  <!-- REGISTRATION -->
  <div id="id02" class="modal">

  <form action="" method="post" class="modal-content animate" name="register" 
   >
  <div class="logocontainer"> Booking Planet
  </div>
   <h3> Create an account. </h3>
   <div class="container">
  <label><b>Username</b></label>
  <input type="text" placeholder="Enter Username" name="username" required>
  <label><b>Name</b></label>
  <input type="text" placeholder="Enter your Name!" name="name" required>
  <label><b>Surname</b></label>
  <input type="text" placeholder="Enter your Surname!" name="surname" required>
  <label><b>Password</b></label>
  <input type="password" placeholder="Enter Password" name="password" required>
  <label><b>Email</b></label>
  <input type="email" placeholder="Enter Email" name="email" required>
  <div class="avatar"><label>Select your avatar: </label>
  <input type="file" name="avatar" accept="image/*" required />

  <button type="submit" name="reg_user">Register</button>  
</div>
<div class="container">
  <button type="button" class="cancelbtn" id="cncl2">Cancel</button> 
</div>
</form>
</div>
<script src="myscripts.js"></script>
</body>
</html>

user_index.php:与register.php非常相似,它是重定向已注册或登录的用户的地方。我在贴代码的开头。

<?php include('server.php'); ?>
<?phpinclude('auth.php');
session_start();
if ($_SESSION['username']<1) {
session_destroy();
unset($_SESSION['username']);
header("Location: register.php");
}
$db = mysqli_connect('localhost', 'root', '', 'registration');
// Check connection
if (mysqli_connect_errno())
{
 echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$result = mysqli_query($db,"SELECT email FROM users WHERE 
username='$_SESSION['username']'");
$row = mysqli_fetch_array($result);
$_SESSION['email'] = $result;
$username = $_SESSION['username'];
$_SESSION['id']=$id;
header("Location: server.php");
?>

php:包含注册和登录的验证。此外,链接到数据库。我将跳过验证部分。

<?php 
 session_start(); 
 $email=$_SESSION['email'];
 // initializing variables
 $errors = array(); 
 // connect to the database
 $db = mysqli_connect('localhost', 'root', '', 'registration');
 //...validationon code
 //once no errors, register user
    if (count($errors) == 0) {
  $password = md5($password);//encrypt the password before saving in the 
  database
  $query = "INSERT INTO users (username, email, password, name, surname) 
          VALUES('$username', '$email', '$password', '$name', '$surname')";
  mysqli_query($db, $query);
  $_SESSION['username'] = $username;
  $_SESSION['email'] = $email;
  $_SESSION['success'] = "You are now logged in";
  header('Location: user_index.php');
   }
  }
 // LOGIN USER
 $msg = '';
 if (isset($_POST['login_user'])) {
 $username = mysqli_real_escape_string($db, $_POST['username']);
 $password = mysqli_real_escape_string($db, $_POST['password']);
 if (empty($username)) {
 array_push($errors, "Username is required");
  }
 if (empty($password)) {
 array_push($errors, "Password is required");
 }
 if (count($errors) == 0) {
 $password = md5($password);
 $query = "SELECT * FROM users WHERE username='$username' AND 
 password='$password'";
 $results = mysqli_query($db, $query);
 if (mysqli_num_rows($results) == 1) {
 session_start();
  $_SESSION['email']=$row['email'];
  $_SESSION['username'] = $username; 
  $_SESSION['email'] = $email;
  $_SESSION['id']= $id;  
  $_SESSION['success'] = "You are now logged in";
  header('Location: user_index.php');
  }else {
    echo $msg;
    }
   }
  }

验证.php

<?php
session_start();
if(!isset($_SESSION["username"])){
echo $errors; }
?>

对于您可能需要的任何其他信息,请随时询问。我真的很抱歉这段文字和代码。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题