我正在关注如何通过电子邮件授权注册用户的教程。我在 SMTP 上遇到了一些麻烦。我不知道为什么,但脚本不会发送电子邮件。我不知道这是 SMTP 的问题还是什么。该教程来自 2009 年,因此它可能与最新版本的 php 不完全兼容。有没有人看到导致问题的任何东西?
<?php
echo "<h1>Register</h1>";
$submit = filter_input(INPUT_POST, 'submit');
//form data
$fullname = strip_tags (filter_input(INPUT_POST, 'fullname'));
$username = strtolower(strip_tags (filter_input(INPUT_POST, 'username')));
$password = strip_tags(filter_input(INPUT_POST, 'password'));
$repeatpassword = strip_tags(filter_input(INPUT_POST, 'repeatpassword'));
$date = date("Y-m-d");
$email = strtolower(strip_tags (filter_input(INPUT_POST, 'email')));
if ($submit)
{
//open database
$connect=mysql_connect("localhost","root","myrealpasswordwouldgohere");
mysql_select_db("phplogin");
$namecheck = mysql_query("SELECT username FROM users WHERE username='$username'" );
$count = mysql_num_rows($namecheck);
if($count!=0)
{
die("Username already taken, please choose another");
}
//check for existence
if($fullname&&$username&&$password&&$repeatpassword)
{
if ($password==$repeatpassword)
{
//check char length of username and fullname
if (strlen($username)>25||strlen($fullname)>25)
{
echo "Length of username or full name is too long!";
}
else
{
//check password length
if (strlen ($password)>25 || strlen ($password)<6)
{
echo "Password must be between 6 and 25 characters";
}
else
{
$password = md5($password);
//register user
//generate random number
$random = rand(23456789,98765432);
$queryreg = mysql_query("INSERT INTO users VALUES ('','$fullname','$username','$password','$email','$date','$random','0')");
die ("You have been registered! Check your email to activate your account to activate your account.");
$lastid = mysql_insert_id();
//send activation email
$to = $email;
$subject = "Activate your Account";
$headers = "From: ryansinclair14@gmail.com";
$server = "smtp.gmail.com";
ini_set("SMTP","smtp.gmail.com");
$body = "
Hello $fullname,\n\n
You need to activate you account with the link below:
http://localhost/academy/loginsession/activate.php?id=$lastid&code=$random \n\n
Thanks!
";
//function to send email
mail($to, $subject, $body, $headers);
die("You have been registered! Check your email to activate your account.");
}
}
}
else echo "Your passwords do not match";
}
else echo "Please fill in <b>all</b> fields!";
}
?>
<p>
<html>
<form action='register.php' method='POST'>
<table>
<tr>
<td>
Your full name:
</td>
<td>
<input type='text' name='fullname' value='<?php echo $fullname;?>'>
</td>
</tr>
<tr>
<td>
choose a username:
</td>
<td>
<input type='text' name='username' value='<?php echo $username;?>'>
</td>
</tr>
<tr>
<td>
Choose a password:
</td>
<td>
<input type='password' name='password'>
</td>
</tr>
<tr>
<td>
Repeat your password:
</td>
<td>
<input type='password' name='repeatpassword'>
</td>
</tr>
<tr>
<td>
Email:
</td>
<td>
<input type='text' name='email'>
</td>
</tr>
<table>
<p>
<input type='submit' name='submit' value='Register'>
</form>