如果这个问题的标题有点荒谬,我很抱歉,但我真的想不出更好的了。
现在,我基本上试图做的是以下内容:
让用户登录并被重定向到其中包含表单的页面,一旦用户填写表单,就会向用户和邮件列表发送一封电子邮件。
现在,在数据库中,我显然有用户名和密码,除了这两行,我还有一个相应的电子邮件。
我不希望用户输入他的电子邮件,我想以某种方式访问包含电子邮件的数据库行,并让电子邮件发送脚本自动用用户的电子邮件填写 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);
?>
我有实际的登录系统运行,它拒绝不正确的用户并传递组合,接受正确的用户并重定向到表单,这只是我不知道该怎么做的邮件部分。我拥有的代码实际上是通过数小时的谷歌搜索拼凑而成的,当它不起作用时,我真的不应该感到惊讶。
任何帮助将不胜感激。(请假装我在发布回复时尽可能简单,编程真的让我头疼)