この質問のタイトルが少しばかげている場合は申し訳ありませんが、私は本当にこれ以上のものを思い付くことができませんでした。
さて、私が本質的にやろうとしていることは次のとおりです。
ユーザーにログインして、フォームが含まれているページにリダイレクトしてもらいます。ユーザーがフォームに入力すると、ユーザーとメーリングリストの両方に電子メールが送信されます。
これで、データベースには明らかにユーザー名とパスワードがあり、これら2つの行に対応する電子メールもあります。
ユーザーに自分の電子メールを入力させたくありません。どういうわけか、電子メールを含むデータベース行にアクセスし、電子メールのsendscriptにユーザーの電子メールを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);
?>
私は実際のログインシステムを機能させています。間違ったユーザーとパスの組み合わせを拒否し、正しい組み合わせを受け入れてフォームにリダイレクトします。文字通りどうすればよいかわからないのは郵送部分だけです。私が持っているコードは、何時間ものグーグルから文字通りつなぎ合わされていますが、それが機能しない場合でも、私は本当に驚かないはずです。
どんな助けでも大歓迎です。(返信を投稿するときは、できるだけ単純なふりをしてください。プログラミングは文字通り頭を痛めます)