我很抱歉,如果这个问题的标题有点荒谬,但我真的无法想出更好的东西。
现在,我基本上试图做的是:
让用户登录并重定向到包含表单的页面,一旦用户填写表单,就会向用户和邮件列表发送电子邮件。
现在,在数据库中,我显然有用户名和密码,除了这两行,我还有相应的电子邮件。
我不希望用户输入他的电子邮件,我想以某种方式访问包含电子邮件的数据库行,并让电子邮件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);
?>
我有实际的登录系统功能,它拒绝不正确的用户和传递组合,接受正确的用户并重定向到表单,它只是邮件部分,我真的不知道该怎么做。我用它的代码实际上是从几个小时的谷歌搜索拼凑而成的,当它不起作用时,我真的不应该感到惊讶。
非常感谢任何帮助。 (在发布回复时,请假装我尽可能简单,编程确实让我的头部受伤)
答案 0 :(得分:0)
你做得部分正确。你用过session。但保持“授权”是(你可以看到)相当无用。为什么不保留登录用户的个人资料?一般情况下,您会检查会话中是否有“个人资料”。如果你这样做,那就意味着它被授权使用。如果没有,那就不是。同样的效果,但现在它更有用。因此,请保持用户引用(通常是他的唯一ID或甚至整个配置文件从数据库中获取,因此您可以节省一些查询),因此在其他页面上,您可以根据您从会话和预填表单中使用电子邮件或其姓名获取的ID来获取其配置文件或者其他什么