如何根据当前记录的用户凭据从MYSQL数据库中检索信息


How to retrieve information from a MYSQL DB based on currently logged user credentials

如果这个问题的标题有点可笑,我很抱歉,但我真的想不出更好的答案了。

现在,我主要想做的是:

让用户登录并重定向到包含表单的页面,一旦用户填写表单,就会向用户和邮件列表发送电子邮件。

现在,在数据库中,我显然有用户名和密码,除了这两行之外,我还有一封相应的电子邮件。

我不希望用户键入他的电子邮件,我希望以某种方式访问包含电子邮件的数据库行,并让电子邮件发送脚本自动填写用户电子邮件的发件人字段。

我真的很抱歉,如果我发布代码的订单让你跳来跳去,我真的不确定什么订单最有意义。

验证登录的代码:

require 'Mysql.php';
class Membership {
function validate_user($un, $pwd) {
    $mysql = New Mysql();
    $ensure_credentials = $mysql->verify_Username_and_Pass($un, $pwd);
    if($ensure_credentials) {
        $_SESSION['status'] = 'authorized';
        header("location: index.php");
    } else return "Please enter a correct username and password";
} 
function log_User_Out() {
    if(isset($_SESSION['status'])) {
        unset($_SESSION['status']);
        if(isset($_COOKIE[session_name()])) 
            setcookie(session_name(), '', time() - 1000);
            session_destroy();
    }
}
function confirm_Member() {
    session_start();
    if($_SESSION['status'] !='authorized') header("location: login.php");
}
}

访问数据库以检索用户名和密码的代码:

require_once 'includes/constants.php';
class Mysql {
private $conn;
function __construct() {
    $this->conn = new mysqli(DB_SERVER, DB_USER, DB_PASSWORD, DB_NAME) or 
                  die('There was a problem connecting to the database.');
}
function verify_Username_and_Pass($un, $pwd) {
    $query = "SELECT *
            FROM members
            WHERE usr = ? AND pass = ?
            LIMIT 1";
    if($stmt = $this->conn->prepare($query)) {
        $stmt->bind_param('ss', $un, $pwd);
        $stmt->execute();
        if($stmt->fetch()) {
            $stmt->close();
            return true;
        }
    }
}
}

在电子邮件脚本中:邮件("$row"、"test"、$messagebody、"发件人:Website@site.com");

最后,下面是我目前在保存表单的页面上方的代码:

<?php
require_once 'classes/Membership.php';
require_once 'includes/constants.php';
$membership = New Membership();
$membership->confirm_Member();
session_start();
if (isset($_SESSION['username']));
$username = $_SESSION['username'];
$dbc = new mysqli(DB_SERVER, DB_USER, DB_PASSWORD, DB_NAME);
$query = "SELECT email FROM members";
$result = mysqli_query($dbc, $query);
$row = mysqli_fetch_array($result);
?>

我有实际的登录系统功能,它拒绝不正确的用户和密码组合,接受正确的组合并重定向到表单,这只是我完全不知道该怎么做的邮件部分。我为它编写的代码实际上是通过数小时的谷歌搜索拼凑而成的,当它不起作用时,我真的不应该感到惊讶。

如有任何帮助,我们将不胜感激。(在发布回复时,请假装我尽可能简单,编程真的让我头疼)

您做得部分正确。您使用了会话。但是保持"授权"(正如你所看到的)是非常无用的。为什么不保留登录用户的档案?一般情况下,您会检查会话中是否有"配置文件"。如果你这样做,那么这意味着它被授权使用。如果不是,那就不是。同样的效果,但现在更有用了。因此,请保留用户referecen(通常是从DB中获取的唯一Id,甚至整个配置文件,这样您就可以省去一些查询),因此在其他页面上,您可以简单地根据从会话中获得的Id获取他的配置文件,并在表单中预填电子邮件或他的姓名或任何