Selbstregistrierung

This commit is contained in:
aschwarz 2023-04-17 11:47:44 +02:00
parent 376170cce7
commit 2c7081b8ab
8 changed files with 345 additions and 5 deletions

View File

@ -63,8 +63,8 @@ if ($function == 'usersave') {
$uid = $db->insert_id;
if (!$sql1) {
echo '<div class="alert alert-danger"><i class="fa fa-fw fa-thumbs-down"></i> Es gab ein Fehler in der Datenbank: Insert User</div>|***|error';
exit;
$error++;
exit;
}
for ($i = 0; $i < sizeof($rollen); $i++) {
$sql2 = $db->query("INSERT INTO jumi_admin_rollen_user_zuord ( rid

View File

@ -0,0 +1,153 @@
<?php
require_once("../config.inc.php");
$function = $_POST['function'];
if ($function == 'membersave') {
$vorname = trim($_POST['vorname']);
$nachname = trim($_POST['nachname']);
$mail = trim($_POST['mail']);
$alter16 = trim($_POST['alter16']);
$singstimme = $_POST['singstimme'];
$result = $db->query("SELECT count(*) Anz FROM jumi_admin WHERE mail = '$mail'");
$row = $result->fetch_array();
#Fehlercheck
$result = $db->query("SELECT count(*) Anz FROM jumi_chor_saenger WHERE mail = '$mail'");
$row = $result->fetch_array();
if ($row['Anz'] != "0") {
echo '<div class="alert alert-danger"><i class="fa fa-fw fa-thumbs-down"></i> User ist im System bereits vorhanden!</div>|***|error';
exit;
}
if (!filter_var($mail, FILTER_VALIDATE_EMAIL)) {
echo '<div class="alert alert-danger"><i class="fa fa-fw fa-thumbs-down"></i> Geben Sie eine gültige Mailadresse ein!</div>|***|error';
exit;
}
$error = 0;
$datum = date("Y-m-d H:i:s");
$sql1 = $db->query("INSERT INTO jumi_chor_saenger ( vorname
, nachname
, mail
, singstimme
, alter16
, selfreg_date
)
VALUES
( '$vorname'
, '$nachname'
, '$mail'
, '$singstimme'
, '$alter16'
, '$datum'
)
");
if (!$sql1) {
echo '<div class="alert alert-danger"><i class="fa fa-fw fa-thumbs-down"></i> Es gab ein Fehler in der Datenbank: Insert User</div>|***|error';
$error++;
exit;
}
if ($error == 0) {
$empfaenger = "$mail";
$betreff = "Anmeldung JU & MI";
if($alter16 == '1'){
$text = "
<html>
<head>
<title>Registrierung JU & MI</title>
</head>
<body>
<font face='Arial' size='2'>
Hallo $vorname!<br><br>
schön, dass du dich für den Jugendchor registriert hast!<br><br>
Im Anhang befindet sich eine Einverständniserklärung. Diese benötigen wir unter anderem,
dass wir den Jugendchor im Livestream zeigen dürfen.<br>
Wir würden uns ebenso freuen, wenn wir eure Zusage für unsere Kanäle in den sozialen Medien bekommen würden..<br>
<br><br>
Bitte unterschreibt das Formular und schickt es an uns zurück. Die Mailadresse lautet: <a mailto='info@ju-and-mi.de'>info@ju-and-mi.de</a>
Falls ihr das Dokument nicht einscannen könnt, reicht ein gut lesbares Foto oder gebt uns das Formular <b>vor</b> einem Jugendgottesdienst zurück.
<p>
Vielen Dank,<br>
euer JU & MI Team
</body>
</html>";
$datei = "../media/Einwilligung_unter_16.pdf";
}else{
$text = "
<html>
<head>
<title>Registrierung JU & MI</title>
</head>
<body>
<font face='Arial' size='2'>
Hallo $vorname!<br><br>
schön, dass du dich für den Jugendchor registriert hast!<br><br>
Im Anhang befindet sich eine Einverständniserklärung. Diese benötigen wir unter anderem,
dass wir den Jugendchor im Livestream zeigen dürfen.<br>
Wir würden uns ebenso freuen, wenn wir eure Zusage für unsere Kanäle in den sozialen Medien bekommen würden.
<br><br>
Da du noch keine 16 Jahre alt bist, müssen deine Eltern/Sorgesberechtigte auf dem beigefügten Formular unterschreiben.<br>
Sobald ihr das Einverständnis habt, schickt es an uns zurück. Die Mailadresse lautet: <a mailto='info@ju-and-mi.de'>info@ju-and-mi.de</a>.<br>
Falls ihr das Dokument nicht einscannen könnt, reicht ein gut lesbares Foto oder gebt uns das Formular <b>vor</b> einem Jugendgottesdienst zurück.
<p>
Vielen Dank,<br>
euer JU & MI Team
</body>
</html>";
$datei = "../media/Einwilligung_unter_16.pdf";
}
$result_absender = $db->query("SELECT wert FROM jumi_parameter WHERE pid = 1");
$row_absender = $result_absender->fetch_array();
if ($row_absender['wert'] == '') {
$absender = 'info@ju-and-mi.de';
} else {
$absender = $row_absender['wert'];
}
$boundary = "PHP-mixed-".md5(time());
#$headers = "MIME-Version: 1.0\n";
#$headers .= "Content-type: text/html; charset=utf-8\n";
$headers .= "From: Info JU & MI <$absender>\n";
$headers .= "Reply-To: Info JU & MI <$absender>\n";
$headers .= "Content-Type: multipart/mixed; boundary=\"".$boundary."\"\n";
#$headers .= " boundary=\"".$boundary."\"\r\n";
$size = filesize($datei);
$data = file_get_contents($datei);
$type = mime_content_type($datei);
$name = basename($datei);
$data = chunk_split(base64_encode($data));
$boundWithPre = "\n--".$boundary;
$message .= "--".$boundary."\r\n";
$message .= "Content-Type: text/html; charset=\"UTF-8\"\r\n";
$message .= "Content-Transfer-Encoding: 8bit\r\n\r\n";
$message .= $text."\r\n";
# Anhang ab hier
$message .= $boundWithPre;
$message .= "\nContent-Type: application/octet-stream; name=\"".$name."\"";
$message .= "\nContent-Transfer-Encoding: base64\n";
$message .= "\nContent-Disposition: attachment\n";
$message .= $data;
$message .= $boundWithPre."--";
$return = @mail($empfaenger, $betreff, $message, $headers);
if (!$return) { // Abfrage ob Mailversand funktioniert hat
echo '<div class="alert alert-danger"><i class="fa fa-fw fa-thumbs-down"></i> Vielen Dank für die Registrierung. Es konnte allerdings <b>keine Mail</b> verschickt werden!</div>|***|success';
exit;
} else {
echo '<div class="alert alert-success"><i class="fa fa-fw fa-thumbs-up"></i> Vielen Dank für die Registrierung. Eine Mail mit weiteren Hinweisen wurde an dich geschickt.</div>|***|success';
exit;
}
}
}
?>

View File

@ -0,0 +1,40 @@
function membersave(){
var vorname = document.getElementById("vorname").value;
var nachname = document.getElementById("nachname").value;
var mail = document.getElementById("mail").value;
var alter16 = document.querySelector('input[name="alter16"]:checked').value;
//komma getrennte Werte bei Mehrfachauswahl
var singstimme = $("#singstimme").val();
$.ajax({
type: 'POST',
url: '../controller/selfregistration.php',
data: {
'function': 'membersave',
'vorname': vorname,
'nachname': nachname,
'mail': mail,
'singstimme': singstimme,
'alter16': alter16
},
success: function(result) { //we got the response
if(result!=''){
var a = result.split('|***|');
if(a[1]=="success"){
document.getElementById("vorname").value ="";
document.getElementById("nachname").value ="";
document.getElementById("mail").value ="";
var elements = document.getElementById("singstimme").options;
for(var i = 0; i < elements.length; i++){
elements[i].selected = false;
}
}
$('#msg1').show().delay(10000).fadeOut(500);
$('#msg1').html(a[0]);
}
},
error: function(xhr, status, exception) {
console.log(xhr);
}
});
}

Binary file not shown.

View File

@ -0,0 +1,72 @@
<?php
if (!isset($_SESSION)) {
session_start();
}
/*
# Fuer debugging
error_reporting(E_ALL);
ini_set('display_errors', 1);
#echo __LINE__."<br>";
*/
include_once '../classes/TestProjektSmarty.class_subdir.php';
$_SESSION['cur_page'] = $_SERVER['PHP_SELF']; // Fals man Seite direkt aufruft und Autologin funktioniert
require_once("../config.inc.php");
$templatename = substr(basename($_SERVER['PHP_SELF']), 0, -3) . "html";
$smarty = new SmartyAdmin();
if(!rechte(basename(__FILE__), $uid)){
echo "<meta http-equiv=\"refresh\" content=\"0; URL=error.php\">";
exit;
}
require_once "../language/german.inc.php";
if(isset($_GET['action'])){
$action = $_GET['action'];
}else{
$action = '';
}
if($action == ''){
if(isset($_GET['editcsid']) and $_GET['editcsid'] != ''){
# Aus externer Seite edit_user.php
#echo "<br><br><br><br><br><br><br><br>-----------------------------------------------hier";
$csid = $_GET['editcsid'];
$smarty->assign('create_edit', $csid);
$result0 = $db->query("SELECT vorname, nachname, mail, singstimme, bemerkung
FROM jumi_chor_saenger
WHERE csid = $csid;");
$row0 = $result0->fetch_array();
$smarty->assign('member_anlegen_vorname', $row0['vorname']);
$smarty->assign('member_anlegen_nachname', $row0['nachname']);
$smarty->assign('member_anlegen_mail', $row0['mail']);
$smarty->assign('member_anlegen_singstimme', $row0['singstimme']);
$smarty->assign('member_anlegen_bemerkung', $row0['bemerkung']);
$query = "SELECT id, filename, originalname, date_format(datum, '%d.%m.%y - %H:%i') uploaddatum FROM jumi_chor_saenger_uploads WHERE csid='$csid' ORDER BY datum DESC";
$result = $db->query( $query)
or die ("Cannot execute query1");
while ($row = $result->fetch_array()){
$value[] = $row;
}
$smarty->assign('table_data', $value);
}
}
$smarty->assign('action', "$action");
$smarty->display("modern/selfregistration/$templatename");
?>

View File

@ -7,8 +7,6 @@
{else}
<title>JU & MI S&auml;ngerIn bearbeiten</title>
{/if}
<title>JU & MI S&auml;ngerIn erfassen</title>
<link rel="stylesheet" href="../jquery/jquery.timepicker.min.css">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="../bootstrap/node_modules/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet">
@ -54,7 +52,7 @@
<form name="form_id" id="form_id" action="javascript:void(0);" enctype="multipart/form-data">
<div class="card">
<div class="card-header">
<i class="fas fa-edit me-1"></i>
<i class="fa-solid fa-user"></i>
{if $create_edit == ''}
S&auml;ngerIn erfassen
{else}

View File

@ -49,7 +49,7 @@
<div class="container-fluid">
<div class="card">
<div class="card-header">
<i class="fas fa-edit me-1"></i>
<i class="fa-solid fa-user"></i>
S&auml;ngerIn bearbeiten
</div>
<div class="card-body">

View File

@ -0,0 +1,77 @@
<!DOCTYPE html>
<html lang="de">
<head>
<title>JU & MI Registrierung</title>
<link rel="stylesheet" href="../jquery/jquery.timepicker.min.css">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="../bootstrap/node_modules/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet">
<script src="../bootstrap/node_modules/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
<!-- icons in nav-->
<script src="../dashboard/js/all.js" crossorigin="anonymous"></script>
<script src="../jquery/jquery-3.4.1.min.js"></script>
<link rel="stylesheet" href="../bootstrap/node_modules/bootstrap-icons/font/bootstrap-icons.css">
<link href = "../jquery/jquery-ui-themes-1.13.2/jquery-ui.css" rel = "stylesheet">
</head>
<body>
<br>
<main>
<!--Anwendung-->
<script src="../js/components/selfregistration.js"></script>
<div class="container-fluid">
<div class="card">
<div class="card-header">
<i class="fa-solid fa-user"></i>
JU & MI Registrierung
</div>
<div class="card-body">
<div class="row">
<div class="row mt-2 mt-sm-4 mb-2 mb-sm-4">
<div class="col-12 col-md-4">Vorname:</div>
<div class="col-12 col-md-8"><input type="text" class="form-control" name="vorname" id="vorname" value="{$member_anlegen_vorname}" required></div>
</div>
<div class="row mt-2 mt-sm-4 mb-2 mb-sm-4">
<div class="col-12 col-md-4">Nachname:</div>
<div class="col-12 col-md-8"><input type="text" class="form-control" name="nachname" id="nachname" value="{$member_anlegen_nachname}" required></div>
</div>
<div class="row mt-2 mt-sm-4 mb-2 mb-sm-4">
<div class="col-12 col-md-4">Mailadresse:</div>
<div class="col-12 col-md-8"><input type="email" class="form-control" name="mail" id="mail" value="{$member_anlegen_mail}" required></div>
</div>
<div class="row mt-2 mt-sm-4 mb-2 mb-sm-4">
<div class="col-12 col-md-4">Ich bin 16 Jahre alt oder &auml;lter?</div>
<div class="col-12 col-md-8">
<div class="form-check">
<input class="form-check-input" value="1" type="radio" name="alter16" id="alter16_ja">
<label class="form-check-label" for="alter16_ja">Ja, ich bin 16 Jahre alt oder &auml;lter</label>
</div>
<div class="form-check">
<input class="form-check-input" value="0" type="radio" name="alter16" id="alter16_no" checked>
<label class="form-check-label" for="alter16_no">Nein, ich bin noch keine 16 Jahre alt</label>
</div>
</div>
</div>
<div class="row mt-2 mt-sm-4 mb-2 mb-sm-4">
<div class="col-12 col-md-4">Singstimme:</div>
<div class="col-12 col-md-8">
<select name="singstimme"class="form-control" id="singstimme">
<option value="1">Sopran</option>
<option value="2">Alt</option>
<option value="3">Tenor</option>
<option value="4">Ba&szlig;</option>
<option value="5">Wei&szlig; ich nicht</option>
</select>
</div>
<p align='center'>
<button class="col-6 btn btn-primary btn-sm mt-3" id="save" onclick="membersave();">Speichern</button>
</p>
</div>
</div>
</div>
<div id="msg"></div>
<div id="msg1"></div>
</div>
</main>
</div>
</body>
</html>