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

时间:2012-08-30 22:15:12

标签: php mysql

我很抱歉,如果这个问题的标题有点荒谬,但我真的无法想出更好的东西。

现在,我基本上试图做的是:

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

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

我不希望用户输入他的电子邮件,我想以某种方式访问​​包含电子邮件的数据库行,并让电子邮件sendcript自动使用用户的电子邮件填写from字段。

如果我发布代码的顺序让你跳了很多,我真的很抱歉,我不确定哪种顺序最有意义。

验证登录的代码:

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;
        }
    }

}
}

在电子邮件脚本中:       mail(“$ row”,“test”,$ messagebody,“From: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);
?>

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

非常感谢任何帮助。 (在发布回复时,请假装我尽可能简单,编程确实让我的头部受伤)

1 个答案:

答案 0 :(得分:0)

你做得部分正确。你用过session。但保持“授权”是(你可以看到)相当无用。为什么不保留登录用户的个人资料?一般情况下,您会检查会话中是否有“个人资料”。如果你这样做,那就意味着它被授权使用。如果没有,那就不是。同样的效果,但现在它更有用。因此,请保持用户引用(通常是他的唯一ID或甚至整个配置文件从数据库中获取,因此您可以节省一些查询),因此在其他页面上,您可以根据您从会话和预填表单中使用电子邮件或其姓名获取的ID来获取其配置文件或者其他什么