Я создаю веб-страницу, которая должна быть доступна только людям, использующим @example.com
или @subdomain.example.com
. В папке public_html
есть страница index.php
, а затем остальное содержимое находится в example.com/content
, поэтому в идеалеПодкаталог /content
не должен быть доступен.
Вот HTML-код страницы входа в систему;
<form action="./login.php" method="post">
<input type="text" id="email" placeholder="Enter your work email address." name="email" required=""><br>
<input type="submit">
</form>
И PHP для login.php
есть;
<?php
$email = 'email@subdomain.example.com';
$domains = array('example.com', 'subdomain.example.com');
$pattern = "/^[a-z0-9._%+-]+@[a-z0-9.-]*(" . implode('|', $domains) . ")$/i";
if (preg_match($pattern, $email)) {
echo '<script>
window.location = "http://example.com/content/"
</script>';
} else {
echo 'This is not a valid Company email address. Please go back and try again.';
}
?>
<?php
$email = $_POST["email"];
$timestamp =date('l jS \of F Y h:i:s A');
$text = "Email: ".$email." At: ".$timestamp."\n";
$file = fopen("./users.txt","a+ \n");
fwrite($file, $text);
fclose($file);
?>
Идея состоит в том, что люди в компании смогут войти в систему, но только еслиих адрес электронной почты совпадает со списком, поэтому я бы указал, что steve@example.com
, igor@example.com
и jon@example.com
смогут войти в систему. Только предопределенные электронные письма должны иметь доступ.Если адрес электронной почты действителен как до @
, так и после @example.com
, пользователь должен быть перенаправлен на example.com/content
и не сможет получить доступ к example.com/content
, пока не введет свой адрес электронной почты.Я бы также что-то сохранил, чтобы jon2018@example.com
было jon2018@example.com = Jon
, чтобы на странице можно было распечатать приветственное сообщение Hi, Jon
.
Список людей и время их входасохранен в .txt
файл.Мне просто нужно выяснить, почему;
1
В настоящее время любой может войти в систему независимо от ввода в текстовое поле.
2
Как ограничить вход только предопределенными адресами электронной почты иубедитесь, что это действительные адреса электронной почты.
3
Сохраните разрешенные адреса электронной почты и имена для сообщения Hi
, хотя это можно пропустить.
4
убедитесь, чточто /content
недоступно до тех пор, пока кто-то не войдет в систему (в идеале это сообщение, а затем перенаправление на страницу входа в систему).
Я знаю, что могу также реализовать пароли, но у меня нет возможностей или знаний о них.как это сделать, чтобы любая помощь с методом электронной почты, который я выбрал, будет принята с благодарностью.Надеюсь, я объяснил это достаточно подробно.
Любая помощь будет признательна, спасибо заранее :)
UPDATE 1
$users = array("jon@example.com", "igor@example.com", "steve@example.com");
if(($users = $users === TRUE){
header("Location: http://example.com/content/");
}else{
die('This is not a valid Company email address. Please go back and try again.');
}
Если бы япросто аутентифицируйте пользователей на основе электронной почты и не связывайтесь с именами (т. е. пропустите приветственное сообщение), как это будет работать подобно приведенному выше фрагменту (включая субдомены).Я просто не могу использовать SQL, потому что он слишком сложный.