繁体   English   中英

如何检索存储在 session 中的 id?

[英]How to retrieve the id stored in a session?

我有一个允许您注册和登录的表格和一个允许您选择日期和时间的预订表格。 我希望能够在“user_id”字段的“预订”表中检索用户 ID。

我的数据库如下所示:

我的数据库

以及填写我的预订表的表格:

<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);

$mysqli = new mysqli('localhost', 'root', 'root', 'bookingcalendar');
if(isset($_GET['date'])){
    $date = $_GET['date'];
    $stmt = $mysqli->prepare("select * from bookings where date = ?");
    $stmt->bind_param('s', $date);
    $bookings = array();
    if($stmt->execute()){
        $result = $stmt->get_result();
        if($result->num_rows>0){
            while($row = $result->fetch_assoc()){
                $bookings[] = $row['timeslot'];
            }
            $stmt->close();
        }
    }
}

if(isset($_POST['submit'])){
    $name = $_POST['name'];
    $timeslot = $_POST['timeslot'];
    $adresse = $_POST['adresse'];
    $telephone = $_POST['telephone'];
    $ville = $_POST['ville'];
    $stmt = $mysqli->prepare("select * from bookings where date = ? AND timeslot = ?");
    $stmt->bind_param('ss', $date, $timeslot);
    if($stmt->execute()){
        $result = $stmt->get_result();
        if($result->num_rows>0){
            $msg = "<div class='alert alert-danger'>Cette horaire est déja réservé</div>";
        }else{
            $stmt = $mysqli->prepare("INSERT INTO bookings 
                            (name,user_id, timeslot, date, adresse, telephone,ville)
                    VALUES(?,?,?,?,?,?,?)");
            $stmt->bind_param('sDsssss', $name,$_SESSION['user_id'], $timeslot, 
                                        $date, $adresse, 
                                        $telephone, $ville);
            $stmt->execute();
            $msg = "<div class='alert alert-success'>*Merci d'avoir pris rendez-vous chez Génération Céline Coiff</div>";
            $bookings[]=$timeslot;
            $stmt->close();
            $mysqli->close();
        }
    }
}

在我的“成员”表中,ID 存储如下:

<?php
session_start();
 
$bdd = new PDO('mysql:host=127.0.0.1;dbname=bookingcalendar', 'root', 'root');
 
if(isset($_POST['formconnexion'])) {
   $mailconnect = htmlspecialchars($_POST['mailconnect']);
   $mdpconnect = sha1($_POST['mdpconnect']); 
   if(!empty($mailconnect) AND !empty($mdpconnect)) {
      $requser = $bdd->prepare("SELECT * FROM membres WHERE mail = ? AND motdepasse = ?");
      $requser->execute(array($mailconnect, $mdpconnect));
      $userexist = $requser->rowCount();
      if($userexist == 1) {
         $userinfo = $requser->fetch();
         $_SESSION['user_id'] = $userinfo['user_id'];
         $_SESSION['pseudo'] = $userinfo['pseudo'];
         $_SESSION['mail'] = $userinfo['mail'];
         header("Location: index.php");

您还没有编写代码来添加用户 ID,那么它不会自动进入数据库。

首先用这个session_start();

然后更改您的代码,如下所示:

 $stmt = $mysqli->prepare
       ("INSERT INTO bookings (name, user_id, timeslot, date, adresse, telephone,ville)
        VALUES(?,?,?,?,?,?,?)");
 $stmt->bind_param('sdsssss', $name, $_SESSION['user_id'], $timeslot, $date, $adresse, $telephone, $ville);

在插入查询中,我添加了 user_id 字段并在绑定语句中给出了它的值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM