**已关闭。**此问题为not reproducible or was caused by typos。它目前不接受回答。
此问题是由打印错误或无法再重现的问题引起的。虽然类似的问题可能是on-topic在这里,这一个是解决的方式不太可能帮助未来的读者。
5天前关闭。
Improve this question的
我花了两个月的时间从Jon Duckett的PHP & MYSQL中学习PHP。我正在我的网站上实施注册和电子邮件验证。我首先在成员表中存储一个新行,然后在令牌表中存储一个带有令牌和成员ID的行。然后,我向新用户发送一封带有锚点标签的电子邮件,该标签将把令牌发送回我网站上的一个页面,以验证电子邮件地址。电子邮件发送,但在我的雅虎电子邮件帐户,没有消息显示。html和锚标签显示在原始电子邮件的底部。在我的Outlook电子邮件地址上,该邮件显示为必须下载的附件。我只需要一个点击这里的消息显示在电子邮件中。
<?php
declare(strict_types = 1); // Use strict types
//use Validate; // Import Validate class
include '../src/bootstrap.php'; // Setup file
include 'includes/header.php';
$member = []; // Initialize member array
$errors = []; // Initialize errors array
$error_header = ''; // Initialize error header
$token = '';
//$id = '';
if (!array_key_exists("firstname", $member))
{
$member['firstname'] = '';
}
if (!array_key_exists("lastname", $member))
{
$member['lastname'] = '';
}
if (!array_key_exists("email", $member))
{
$member['email'] = '';
}
if (!array_key_exists("username", $member))
{
$member['username'] = '';
}
if (!array_key_exists("password", $member))
{
$member['password'] = '';
}
if (!array_key_exists("firstname", $errors))
{
$errors['firstname'] = '';
}
if (!array_key_exists("lastname", $errors))
{
$errors['lastname'] = '';
}
if (!array_key_exists("email", $errors))
{
$errors['email'] = '';
}
if (!array_key_exists("username", $errors))
{
$errors['username'] = '';
}
if (!array_key_exists("password", $errors))
{
$errors['password'] = '';
}
if (!array_key_exists("confirm", $errors))
{
$errors['confirm'] = '';
}
if ($_SERVER['REQUEST_METHOD'] == 'POST') { // If form was posted
// Get form data
$member['firstname'] = $_POST['firstname']; // Get firstname
$member['lastname'] = $_POST['lastname']; // Get lastname
$member['email'] = $_POST['email']; // Get email
$member['username'] = $_POST['username']; // Get username
$member['password'] = $_POST['password']; // Get password
$confirm = $_POST['confirm']; // Get password confirmation
// Validate form data
$errors['firstname'] = Validate::isText($member['firstname'], 1, 254)
? '' : 'Forename must be 1-254 characters';
$errors['lastname'] = Validate::isText($member['lastname'], 1, 254)
? '' : 'Surname must be 1-254 characters';
$errors['email'] = Validate::isEmail($member['email'])
? '' : 'Please enter a valid email';
$errors['username'] = Validate::isText($member['username'])
? '' : 'Please enter a valid username';
$errors['password'] = Validate::isPassword($member['password'])
? '' : 'Passwords must be at least 8 characters and have:<br>
A lowercase letter<br>An uppercase letter<br>A number
<br>And a special character';
$errors['confirm'] = ($member['password'] = $confirm)
? '' : 'Passwords do not match';
$invalid = implode($errors); // Join error messages
if (!$invalid) { // If no errors
$result = $cms->getMember()->create($member); // Create member
if ($result === false) { // If result is false
$errors['email'] = 'Email address already used'; // Store a warning
$errors['username'] = 'Or username already used';
}
else
{ // Otherwise send to login
$to = $member['email'];
$subject = 'Verify email address';
$id = $cms->getMember()->getIdByEmail($to); // Get member id
if ($id > 0)
{
$token = $cms->getToken()->create($id, 'verify_email');
$link = DOMAIN . '.com/' . 'verify-email.php?token=' . $token;
$body = '<html><head><title>Verify email</title><body><p>To verify email address click: <a href="' . $link . '">here</a></p></body></html>';
//$body = 'This is a test of the email notification system';
/* $headers = "MIME-VERSION: 1.0\r\n";
$headers .= "Content-type: text/htlm;charset=iso-8859-1\r\n";
$headers .= "From: rogeralms@almsgames.com";
$headers .= "X-Mailer: PHP " . phpversion(); */
$headers = "From: rogeralms@almsgames.com\r\n";
$headers .= "Content-type: text/htlm\r\n";
mail($to, $subject, $body, $headers);
header("Location: index.php?success=Check email for validation of email address.");
//redirect('login.php', ['success' => 'Thanks for joining! Please log in.']);
}
else
{
$error_header = '<div class="alert alert-danger">id returned ' . $id . '</div>';
}
}
}
else
{
$error_header = '<div class="alert alert-danger">Please correct errors</div>';
}
}
?>
<main class="container" id="content">
<section class="header">
<h1>Register</h1>
</section>
<form method="post" action="register.php" class="form-membership">
<!-- {% if errors %}<div class="alert alert-danger">Please correct errors</div>{% endif %} -->
<?php echo $error_header ?>
<div class="form-group">
<label for="firstname">Firstname: </label><input type="text" name="firstname" value="<?= htmlspecialchars($member['firstname']) ?>" id="firstname" class="form-control">
<div class="errors"><?= $errors['firstname'] ?></div>
</div>
<div class="form-group">
<label for="surname">Lastname: </label><input type="text" name="lastname" value="<?= htmlspecialchars($member['lastname']) ?>" id="lastname" class="form-control">
<div class="errors"><?= $errors['lastname'] ?></div>
</div>
<div class="form-group">
<label for="email">Email address: </label><input type="email" name="email" value="<?= htmlspecialchars($member['email']) ?>" id="email" class="form-control">
<div class="errors"><?= $errors['email'] ?></div>
</div>
<div class="form-group">
<label for="username">UserName: </label><input type="text" name="username" value="<?= htmlspecialchars($member['username']) ?>" id="username" class="form-control">
<div class="errors"><?= $errors['username'] ?></div>
</div>
<div class="form-group">
<label for="password">Password: </label><input type="password" name="password" id="password" class="form-control">
<div class="errors"><?= $errors['password'] ?></div>
</div>
<div class="form-group">
<label for="confirm">Confirm password: </label><input type="password" name="confirm" id="confirm" class="form-control">
<div class="errors"><?= $errors['confirm'] ?></div>
</div>
<input type="submit" class="btn btn-primary" value="Register">
</form>
</main>
<?php include 'includes/footer.php'; ?>
字符串
我已经尝试了几个版本的标题,但我就是不能让消息的主体通过。
有人能给予我我做错了什么吗?
谢谢你的好意
我已经尝试了几个版本的$headers,但似乎都不起作用。
1条答案
按热度按时间xtupzzrd1#
我觉得你写的代码不太严格,What does '<?=' mean in PHP?,尤其是分号。
字符串