181 lines
8.9 KiB
PHP
Executable File
181 lines
8.9 KiB
PHP
Executable File
<?php
|
|
|
|
use PHPMailer\PHPMailer\PHPMailer;
|
|
use PHPMailer\PHPMailer\Exception;
|
|
|
|
// Inclure les fichiers de l'autoloader de Composer
|
|
require 'vendor/autoload.php';
|
|
|
|
require("../../include/variables.php");
|
|
require("../../include/init.php");
|
|
|
|
if (isset($_SESSION['userID'])) {
|
|
header("Location: index.php");
|
|
die("Vous êtes déjà connecté");
|
|
}
|
|
|
|
require("../../include/main-functions.php");
|
|
require("../../include/inputs.php");
|
|
require("../../include/panels.php");
|
|
|
|
$pdo = sqlConnect($sqlDatabaseHost, $sqlDatabaseName, $sqlDatabaseUser, $sqlDatabasePass);
|
|
|
|
$redirectPage = isset($_GET['p']) ? $_GET['p'] : "home.php";
|
|
|
|
if(isset($_POST['username'])) {
|
|
if(isset($_POST['g-recaptcha-response'])) {
|
|
$recaptchaResponse = $_POST['g-recaptcha-response'];
|
|
$recaptchaUrl = 'https://www.google.com/recaptcha/api/siteverify?secret=' . urlencode($recaptchaSecretKey) . '&response=' . urlencode($recaptchaResponse);
|
|
$recaptcha = json_decode(file_get_contents($recaptchaUrl));
|
|
if (!$recaptcha->success) {
|
|
$status = "Veuillez cocher la case reCAPTCHA.";
|
|
} else {
|
|
if (isset($_POST['password1']) && isset($_POST['password2'])) {
|
|
if(empty($_POST['username']) == false && empty($_POST['password1']) === false && empty($_POST['password2']) === false) {
|
|
if(preg_match('!\S!u', $_POST['username']) && preg_match('!\S!u', $_POST['password1']) && preg_match('!\S!u', $_POST['password2'])) {
|
|
if($_POST['password1'] == $_POST['password2']) {
|
|
|
|
if (preg_match('/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/', $_POST['email']) == false && preg_match('!\S!u', $_POST['username']) == false) {
|
|
$status = "Caractères illégaux";
|
|
} else {
|
|
$userEmail = isset($_POST['email']) ? strtolower($_POST['email']) : NULL;
|
|
$userDisplayName = htmlspecialchars(substr($_POST['username'], 0, 20));
|
|
$userName = str_replace(" ", "_", strtolower(htmlspecialchars(substr($_POST['username'], 0, 20))));
|
|
|
|
$sqlRequest = "SELECT ID FROM users WHERE username = :username";
|
|
$request = $pdo->prepare($sqlRequest);
|
|
$request->bindParam(":username", $userName);
|
|
$request->execute();
|
|
$result = $request->fetchAll(PDO::FETCH_ASSOC);
|
|
|
|
if($result) {
|
|
$status = "Le nom d'utilisateur existe déjà";
|
|
} else {
|
|
|
|
$request = $pdo->prepare("INSERT INTO users (username, password, email, display_name, role, accreditation) VALUES (:username, :password, :email, :display_name, 1, 1)");
|
|
$request->bindParam(':username', $userName);
|
|
$request->bindParam(':password', md5($_POST['password1']));
|
|
$request->bindParam(':email', $userEmail);
|
|
$request->bindParam(':display_name', $userDisplayName);
|
|
|
|
if ($request->execute()) {
|
|
$mail = new PHPMailer(true);
|
|
|
|
try {
|
|
// Paramètres du serveur SMTP
|
|
$mail->isSMTP(); // Utiliser SMTP
|
|
$mail->Host = 'outlook.office365.com'; // Serveur SMTP Exchange
|
|
$mail->SMTPAuth = true; // Activer l'authentification SMTP
|
|
$mail->Username = 'smtp@e59.fr'; // Nom d'utilisateur SMTP
|
|
$mail->Password = 'WTFdoto5678TFWT'; // Mot de passe SMTP
|
|
$mail->SMTPSecure = 'tls'; // Activer le cryptage TLS
|
|
$mail->Port = 587; // Port TCP pour TLS
|
|
|
|
// Destinataires
|
|
$mail->setFrom('service-adhesions@e59.fr', 'Adhesions');
|
|
$mail->addAddress('communication@e59.fr', 'E59-UVSQ'); // Port TCP à se connecter (tls = 587, ssl = 465)
|
|
|
|
// Vous pouvez ajouter d'autres destinataires en utilisant $mail->addAddress()
|
|
// $mail->addAddress('autre-destinataire@example.com');
|
|
// Vous pouvez aussi ajouter des destinataires en copie (CC) ou en copie cachée (BCC)
|
|
// $mail->addCC('cc@example.com');
|
|
// $mail->addBCC('bcc@example.com');
|
|
|
|
// Pièces jointes (si nécessaire)
|
|
// $mail->addAttachment('/path/to/file.pdf'); // Ajouter un fichier joint
|
|
|
|
// Contenu de l'email
|
|
$mail->isHTML(true); // Activer le format HTML pour l'email
|
|
$mail->Subject = 'Nouvel Utilisateur';
|
|
$mail->Body = $userDisplayName . ' a cree un compte sur e59.fr';
|
|
$mail->AltBody = $userDisplayName . ' a cree un compte sur e59.fr';
|
|
|
|
// Envoyer l'email
|
|
$mail->send();
|
|
} catch (Exception $e) {
|
|
error_log("Erreur de Mailer: {$mail->ErrorInfo}");
|
|
}
|
|
header("Location: index.php?p=" . $redirectPage);
|
|
exit();
|
|
} else {
|
|
$status = "Erreur SQL";
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
$status = "Les mots de passe ne correspondent pas";
|
|
}
|
|
} else {
|
|
$status = "Caractères illégaux";
|
|
}
|
|
} else {
|
|
$status = "Les champs ne doivent pas être vides";
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
$status = "Erreur, captcha vide";
|
|
}
|
|
}
|
|
?>
|
|
|
|
<!DOCTYPE html>
|
|
<html lang="fr">
|
|
|
|
<head>
|
|
<?php fillHead($rootPageURL, "Créer un compte - " . $pageName, $darkTheme, $lightTheme);?>
|
|
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
|
|
<style>
|
|
#register-text {
|
|
font-size: 0.8em;
|
|
margin: 2em 0 2em 0;
|
|
color: #a0a0a0;
|
|
}
|
|
|
|
#register-text a {
|
|
color: var(--text);
|
|
}
|
|
</style>
|
|
</head>
|
|
|
|
<body class="body">
|
|
|
|
<header>
|
|
<div class="panel-content">
|
|
<?php fillHeader($rootPageURL, $headerTitle, $headerSubtitle, $social);?>
|
|
</div>
|
|
</header>
|
|
|
|
<nav>
|
|
<div class="panel-content">
|
|
<?php fillNav($rootPageURL);?>
|
|
</div>
|
|
</nav>
|
|
|
|
<main>
|
|
<div class="content">
|
|
<form action="#" method="post">
|
|
<div class="form">
|
|
<div class="form-title">Créer un compte</div>
|
|
<div class="status"><?=$status?></div>
|
|
<?php
|
|
textInput("text", "", "username", "Login", "");
|
|
textInput("email", "", "email", "Email (facultatif)", "");
|
|
textInput("password", "", "password1", "Mot de Passe", "");
|
|
textInput("password", "", "password2", "Confirmation du Mot de passe", "");
|
|
?>
|
|
<div class="g-recaptcha" data-sitekey="<?=$recaptchaSiteKey?>" data-theme="dark" data-size="normal"></div>
|
|
<button type="submit">Créer un compte</button>
|
|
<div><div id="register-text">Vous avez déjà un compte ? <a href="/login?p=<?=$redirectPage?>">Connexion</a></div></div>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</main>
|
|
<footer>
|
|
<div class="panel-content">
|
|
<?php fillFooter($footerText);?>
|
|
</div>
|
|
</footer>
|
|
</body>
|
|
</html>
|