diff --git a/98_datenbank/450731_3_1.sql b/98_datenbank/450731_3_1.sql new file mode 100644 index 0000000..febda8e --- /dev/null +++ b/98_datenbank/450731_3_1.sql @@ -0,0 +1,207 @@ +-- phpMyAdmin SQL Dump +-- version 4.6.6deb4 +-- https://www.phpmyadmin.net/ +-- +-- Host: localhost:3306 +-- Erstellungszeit: 19. Jan 2023 um 10:08 +-- Server-Version: 10.3.31-MariaDB-0+deb10u1 +-- PHP-Version: 7.0.33-57+0~20211119.61+debian10~1.gbp5d8ba5 + +SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; +SET time_zone = "+00:00"; + + +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; +/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; +/*!40101 SET NAMES utf8mb4 */; + +-- +-- Datenbank: `450731_3_1` +-- + +-- -------------------------------------------------------- + +-- +-- Tabellenstruktur für Tabelle `Benutzer` +-- + +CREATE TABLE `Benutzer` ( + `ID` int(11) NOT NULL, + `name` varchar(42) NOT NULL, + `email` varchar(42) NOT NULL, + `passwort` varchar(200) NOT NULL, + `handyNr` varchar(42) NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- +-- Daten für Tabelle `Benutzer` +-- + +INSERT INTO `Benutzer` (`ID`, `name`, `email`, `passwort`, `handyNr`) VALUES +(60, 'raul', 'raul@gmail.com', '$2y$10$yfod.ElzV7GweeA4gAkkxujxL6clwK3TEtSe0PhR8eExPvYFRNVry', '078 742 34 56'), +(62, 'david', 'raul7@sunrise.ch', '$2y$10$TvdhHe3nqbFgP2H/z.vw0.RDxpwpP/90no.rVXJ8xOpDMtqZzS9yC', '076 987 87 23'), +(63, 'Emily', 'emily@mmp.ch', '$2y$10$jt3uBR5GfEWCID5VcasChui4/ThyfDXmdczmF0lLL7z2wCKyADhT.', '078 168 47 89'), +(64, 'Luan', 'lua@lua.ch', '$2y$10$UCl248CW/o76XFrTHfanYeBGlCLOE7FT0T78lGUv1Aqj5yjHhiyxi', '079 138 93 28'), +(65, 'Michel', 'michelgruen@gmail.com', '$2y$10$PqcGrgkqx252CnMe6rqSseIJiCmHrGxUXZfXTLxRKWe84wnwtQXD.', '079 567 32 12'), +(66, 'David123', 'mmp123', '$2y$10$PgL73RtWNcdqp7UA9.PqfOQNXxMIRfUnuNMzRLp6l8Wr1bbkn9WVi', '079 108 80 81'); + +-- -------------------------------------------------------- + +-- +-- Tabellenstruktur für Tabelle `Kurs` +-- + +CREATE TABLE `Kurs` ( + `ID` int(11) NOT NULL, + `semester` int(42) NOT NULL, + `name` varchar(42) NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- +-- Daten für Tabelle `Kurs` +-- + +INSERT INTO `Kurs` (`ID`, `semester`, `name`) VALUES +(1, 4, 'Interaktive Medien IIII'), +(2, 4, 'Visualisieren IIII'), +(3, 4, 'Schreiben und Sprechen IIII'), +(4, 3, 'Interaktive Medien III'), +(7, 3, 'Medien BWL III'), +(8, 3, 'Medien Recht III'), +(9, 2, 'Interaktive Medien II'), +(10, 2, 'Medien BWL II'), +(11, 2, 'Medien Recht II'), +(12, 1, 'Interaktive Medien I'), +(13, 1, 'Medien BWL I'), +(15, 1, 'Medien Recht I'); + +-- -------------------------------------------------------- + +-- +-- Tabellenstruktur für Tabelle `PDF` +-- + +CREATE TABLE `PDF` ( + `ID` int(11) NOT NULL, + `dokument` varchar(200) DEFAULT NULL, + `benutzer_ID` int(11) DEFAULT NULL, + `kurs_ID` int(11) DEFAULT NULL, + `standort` varchar(42) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- +-- Daten für Tabelle `PDF` +-- + +INSERT INTO `PDF` (`ID`, `dokument`, `benutzer_ID`, `kurs_ID`, `standort`) VALUES +(219, 'pp_tiktok-08.png', 62, 8, 'Bern'), +(220, 'undefined', 62, 1, 'Bern'), +(222, 'Medienrecht_RepetitionNotizen.docx', 29, 11, 'Zuerich'), +(226, 'Medienrecht_RepetitionNotizen.docx', 29, 1, 'Bern'), +(227, 'Medienrecht III_Zusammenfassung_LuanPalma.docx', 64, 11, 'Zuerich'), +(228, 'Markenrecht Repetition.pdf', 64, 7, 'Chur'), +(229, 'Medienrecht_RepetitionNotizen.docx', 64, 10, 'Zuerich'), +(230, 'Zusammenfassung_Medienrecht_3Sem.pdf', 63, 8, 'Bern'), +(231, 'Zusammenfassung_MedienBWL_2Sem.pdf', 63, 10, 'Chur'), +(233, 'zusammenfassung-bwl.pdf', 66, 13, 'Bern'), +(235, 'Zusammenfassung.ai', 65, 7, 'Bern'); + +-- -------------------------------------------------------- + +-- +-- Tabellenstruktur für Tabelle `Session` +-- + +CREATE TABLE `Session` ( + `ID` int(11) NOT NULL, + `benutzer_ID` int(11) NOT NULL, + `token` varchar(100) NOT NULL, + `timestamp` timestamp NOT NULL DEFAULT current_timestamp() +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- +-- Daten für Tabelle `Session` +-- + +INSERT INTO `Session` (`ID`, `benutzer_ID`, `token`, `timestamp`) VALUES +(77, 63, 'gu7DC3xaZW5bwQL2hATnhGcDwh2Z2Darp2kzsApMYP', '2023-01-19 09:00:32'), +(78, 64, 'SMslRsjru7YdehSP7wa89zO4enDqqNF1n5oOddCO4w', '2023-01-19 09:07:39'), +(79, 63, 'KKeXLfPs3iS9I2hgxh056dY1A53q3sFoDQh1GUp8XT', '2023-01-19 09:01:12'), +(80, 65, 'AlaRqHWDcIHUx3m2vBCv8cFXoVYnk8QygSm1ZF52w7', '2023-01-19 09:04:56'), +(81, 66, '5unsacuAZPQNLLKNyNqoVKr7KeiBDfcfpPaYHqdlxw', '2023-01-19 09:06:23'); + +-- +-- Indizes der exportierten Tabellen +-- + +-- +-- Indizes für die Tabelle `Benutzer` +-- +ALTER TABLE `Benutzer` + ADD PRIMARY KEY (`ID`); + +-- +-- Indizes für die Tabelle `Kurs` +-- +ALTER TABLE `Kurs` + ADD PRIMARY KEY (`ID`); + +-- +-- Indizes für die Tabelle `PDF` +-- +ALTER TABLE `PDF` + ADD PRIMARY KEY (`ID`), + ADD KEY `PDF_benutzerid` (`benutzer_ID`), + ADD KEY `PDF_kursid` (`kurs_ID`); + +-- +-- Indizes für die Tabelle `Session` +-- +ALTER TABLE `Session` + ADD PRIMARY KEY (`ID`), + ADD KEY `Session_benutzerid` (`benutzer_ID`); + +-- +-- AUTO_INCREMENT für exportierte Tabellen +-- + +-- +-- AUTO_INCREMENT für Tabelle `Benutzer` +-- +ALTER TABLE `Benutzer` + MODIFY `ID` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=67; +-- +-- AUTO_INCREMENT für Tabelle `Kurs` +-- +ALTER TABLE `Kurs` + MODIFY `ID` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=16; +-- +-- AUTO_INCREMENT für Tabelle `PDF` +-- +ALTER TABLE `PDF` + MODIFY `ID` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=236; +-- +-- AUTO_INCREMENT für Tabelle `Session` +-- +ALTER TABLE `Session` + MODIFY `ID` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=82; +-- +-- Constraints der exportierten Tabellen +-- + +-- +-- Constraints der Tabelle `PDF` +-- +ALTER TABLE `PDF` + ADD CONSTRAINT `PDF_kursid` FOREIGN KEY (`kurs_ID`) REFERENCES `Kurs` (`ID`); + +-- +-- Constraints der Tabelle `Session` +-- +ALTER TABLE `Session` + ADD CONSTRAINT `Session_benutzerid` FOREIGN KEY (`benutzer_ID`) REFERENCES `Benutzer` (`ID`); + +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; +/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; diff --git a/99_versionen/autorisieren_copy1.php b/99_versionen/autorisieren_copy1.php new file mode 100644 index 0000000..26ec0ec --- /dev/null +++ b/99_versionen/autorisieren_copy1.php @@ -0,0 +1,59 @@ + (NOW() - INTERVAL 2 hour)"; + +$stmt = $pdo->prepare($sql); + +$erfolg = $stmt->execute(); + +if ($erfolg) { + + $resultate = $stmt->fetchAll(); + + $sitzungsID = $resultate[0]['ID']; + + $anzahlResultate = count($resultate); + + if ($anzahlResultate == 1) { + + //Sitzung verlängern + updateSession($sitzungsID); + + } else { + + //schicke eine Antwort ans Script «nicht eingeloggt», direkt an Login seite weiter + exit(http_response_code(401)); + + } + +} +function updateSession($sitzungsID) +{ + require('config.php'); + + //setze den Timpstamp auf jetzt, wo die ID eine ID ist + $sql = "UPDATE Session SET timestamp = now() WHERE ID=?"; + $stmt = $pdo->prepare($sql); + $stmt->execute([$sitzungsID]); +} + +function loescheSessions() +{ + require('config.php'); + + + //Bei Delete braucht es kein Stern für all + $sql = "DELETE FROM Session WHERE timestamp < (NOW() - INTERVAL 2 HOUR)"; + + $stmt = $pdo->prepare($sql); + $stmt->execute(); + +} \ No newline at end of file diff --git a/99_versionen/config_copy1.php b/99_versionen/config_copy1.php new file mode 100644 index 0000000..7c69ebc --- /dev/null +++ b/99_versionen/config_copy1.php @@ -0,0 +1,9 @@ +exec("set names utf8"); diff --git a/99_versionen/holeUser_copy1 b/99_versionen/holeUser_copy1 new file mode 100644 index 0000000..1ba5c04 --- /dev/null +++ b/99_versionen/holeUser_copy1 @@ -0,0 +1,22 @@ +prepare($sql); + +$erfolg = $stmt->execute(); + +if ($erfolg) { + + $array = $stmt->fetchAll(); + + $jsonArray = json_encode($array); + + print_r($jsonArray); +} \ No newline at end of file diff --git a/99_versionen/login_copy1.html b/99_versionen/login_copy1.html new file mode 100644 index 0000000..adbc697 --- /dev/null +++ b/99_versionen/login_copy1.html @@ -0,0 +1,27 @@ + + + + + + + Login + + + + + +

Login

+ +
+
+ +
+

+ + +

+ + + + + \ No newline at end of file diff --git a/99_versionen/login_copy1.js b/99_versionen/login_copy1.js new file mode 100644 index 0000000..42aeceb --- /dev/null +++ b/99_versionen/login_copy1.js @@ -0,0 +1,47 @@ +console.log('Hello Login'); + +function login(){ + let email = document.querySelector("#email").value; + let passwort = document.querySelector("#passwort").value; + console.log('Hallo ' + email + passwort); + + + //FormData = Box für unsere Formulardaten + let formData = new FormData(); + formData.append('email', email); + formData.append('passwort', passwort); + + +//Adresse eingeben, wo das Packet hinsoll +fetch("https://450731-3.web.fhgr.ch/php/login.php", + { + body: formData, + //methode bestimmen, get auch möglich. So holen wir im php die Daten $_Post + method: "post", + }) + + //Warten auf Response=res + .then((res) => { + //wir wollen einen Text erhalten, andere Daten manchmal JSON + + return res.json(); + + }) + .then((data) => { + console.log(data);$ + document.querySelector('#nachricht').innerHTML = data[0]; + + //Platziere benutzerID an 1. Stelle und Token an 2. Stelle im localstorage + localStorage.setItem("benutzerID", data[1]); + localStorage.setItem("token", data[2]); + + //Wenn ID und Token nicht 0 ist, also der benutzer eingeloggt ist, öffne die neue Seite(Startseite) + if (data[1] != 0 && data[2] != 0){ + + window.location.href = "https://450731-3.web.fhgr.ch/"; + + + } + + }) + } diff --git a/99_versionen/login_copy1.php b/99_versionen/login_copy1.php new file mode 100644 index 0000000..8354e8d --- /dev/null +++ b/99_versionen/login_copy1.php @@ -0,0 +1,119 @@ +prepare($sql); + +$erfolg = $stmt->execute(); + +//Wenn Statement erfolgreich… +if ($erfolg) { + + //gehe in Datenbank und hole alle Resultate + $array = $stmt->fetchAll(); + + //Hier werden die Resultate gezählt, welche übereinstimmen. Das ist eine Php Funktion + $anzahlResultate = count($array); + + + if ($anzahlResultate == 1){ + + //Wenn Resultat == 1, nimm was in der Tabelle bei Passwort steht und gebe den Wert an die Variabel Passwort + $dbPasswort = $array[0]['passwort']; + //Das gleiche mit der ID + $benutzerID = $array[0]['ID']; + //diese Parameter geben wir der Funktion prüfe PAsswort weiter + pruefepasswort($passwort, $dbPasswort, $benutzerID); + + + } else { + //Fehlermeldung wenn Email nicht korrekt. ID und Token als 0, weil undefind = nicht eingeloggt. Wird im localstorage als 0/0 ausgegeben. + sendeAntwort('Diese E-Mail existiert nicht.', 0, 0); + + + + } + + +} + +function pruefepasswort($benutzerPasswort, $dbPasswort, $benutzerID){ + + //Püft, ob das Benutzer Passwort mit dem Datenbankpasswort überein stimmt. Prüfen öb beide den gleichen Hash zurück geben. + if (password_verify($benutzerPasswort, $dbPasswort)) { + + //erstelle einen Token, wenn Email und Passwort korrekt. BenutzerID schicken wir gleich weiter an die Funktion erstelleToken + erstelleToken($benutzerID); + + + + } else { + + sendeAntwort('Ungültiges Passwort', 0, 0); + + + } + +} + +//Eintrag in Sessiontabelle +function erstelleToken($benutzerID){ + + require('config.php'); + + //Rufe die Funktion generate… mit dem Parameter 42 auf, und speichere den Return in die Variable 'Token', dieser wird in die Tabelle eingefügt. + + $token = generateRandomString(42); + + //Infos werden in die Session Tabelle eingefügt. Passende Benutzer ID und Token Nummer, Timestamp erfolgt automatisch + $sql = "INSERT INTO Session (benutzer_ID, token) VALUES (:benutzer_ID, :token)"; + + /*pdo=Datenbankverbindung die wir im config definiert haben. bereite dich vor, dieses SQL Statement auszuführen*/ + $stmt = $pdo->prepare($sql); + + $erfolg = $stmt->execute(array('benutzer_ID' => $benutzerID, 'token' => $token)); + if ($erfolg) { + //wenn alles geklappt hat + // print_r('Session erfolgreich erstellt.'); + sendeAntwort('Session erfolgreich erstellt.', $benutzerID, $token); + + } else { + //Fehlermeldung, wenn nicht erfolgreich + print_r($erfolg); + + sendeAntwort('Datenbankfehlerw: ' . $erfolg, 0, 0); + + }; + + +} + + +//Funktion zum einem Random String erstellen +function generateRandomString($length) { + //alle Characters, aus den ein Hash generiert werden soll + $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; + $charactersLength = strlen($characters); + $randomString = ''; + for ($i = 0; $i < $length; $i++) { + $randomString .= $characters[rand(0, $charactersLength - 1)]; + } + //Return heisst es gibt was zurück, dort wo man es angefragt hat. + return $randomString; +} + +function sendeAntwort($nachricht, $benutzerID, $token){ + + $antwort = [$nachricht, $benutzerID, $token]; + + $antwort = json_encode($antwort); + + print($antwort); + +} diff --git a/99_versionen/registrieren_copy1.html b/99_versionen/registrieren_copy1.html new file mode 100644 index 0000000..cba44ff --- /dev/null +++ b/99_versionen/registrieren_copy1.html @@ -0,0 +1,37 @@ + + + + + + + Registrierung + + + +

Registrierung

+ +
+
+ +
+

+ + +
+
+ +
+

+ + +

+ + + + + + + + + diff --git a/99_versionen/registrieren_copy1.js b/99_versionen/registrieren_copy1.js new file mode 100644 index 0000000..b399147 --- /dev/null +++ b/99_versionen/registrieren_copy1.js @@ -0,0 +1,58 @@ +console.log('hallo'); +function registrieren (){ + let benutzername = document.querySelector("#benutzername").value; + let handyNr = document.querySelector("#handyNr").value; + let email = document.querySelector("#email").value; + let passwort = document.querySelector("#passwort").value; + // console.log('Hallo ' + benutzername + email + passwort); + + + //FormData = Box für unsere Formulardaten + let formData = new FormData(); + formData.append('benutzername', benutzername); + formData.append('handyNr', handyNr); + formData.append('email', email); + formData.append('passwort', passwort); +//Adresse eingeben, wo das Packet hinsoll + fetch("https://450731-3.web.fhgr.ch/php/registrieren.php", + { + body: formData, + //methode bestimmen, get auch möglich. So holen wir im php die Daten $_Post + method: "post", + }) + + //Warten auf Response=res + .then((res) => { + //wir wollen einen Text erhalten, andere Daten manchmal JSON + return res.text(); + + + }) + .then((data) => { + // console.log(data); + document.querySelector('#nachricht').innerHTML = data; + + }) + } +/* + //Die Grundlage für einen Fetch. Fetch ist eine Funktion, die einen Request an einen Server sendet und das Ergebnis zurückgibt + //In der ersten Zeile wird der Link zur API definiert. Dieser kann immer angepasst werden. + let url = 'https://pokeapi.co/api/v2/pokemon?limit=151&offset=0'; + //Hier startet der Fetch mit der definierten URL. + fetch(url) + //Wenn der Fetch erfolgreich war, wird die Antwort in ein Objekt gespeichert. + .then(response => response.json()) + //Wenn das Objekt gespeichert wurde, wird es in eine Variable gespeichert. Diese Variable heisst "data". + .then(data => { + //Hier kann man mit der Variable arbeiten. Entweder das DOM mit Informationen erweitern, oder eine neue Funktion aufrufen. + //Mit "Console.log(data);" sieht man den Inhalt des Objekts. + console.log(data); + //Ab hier kann man entweder mit der Variable data arbeiten, oder eine funktion aufrufen mit data als Parameter. + + //Beispiel eines Funktionsaufrufs + //"showSomething(data);" + + }) + //Bei einem Fehler wird dieser gefangen "catch" und eine Fehlermeldung in der Konsole ausgegeben. + .catch(error => console.log(error)) + */ \ No newline at end of file diff --git a/99_versionen/registrieren_copy1.php b/99_versionen/registrieren_copy1.php new file mode 100644 index 0000000..5a7aedd --- /dev/null +++ b/99_versionen/registrieren_copy1.php @@ -0,0 +1,38 @@ +prepare($sql); +/*definiert nochmals, was wir ausführen möchten, mit welchen Namen, also Variabel Email greiffen wir auf Email zu, +Platzhalter ohne Dollarzeichen, Wir definieren Variabeln und nutzen sie im execute +Wenn alles geklappt hat, wir erfolg = 1 = true */ +$erfolg = $stmt->execute(array('Name' => $benutzername, 'HandyNr' => $handyNr, 'Email' => $email, 'Passwort' => $passwort)); +//Könnte auch schreiben if erfolg==1 +if ($erfolg) { + + print_r('Registrierung erfolgreich.'); + +} else { +//Fehlermeldung, wenn nicht erfolgreich + print_r($erfolg); +}; \ No newline at end of file diff --git a/99_versionen/script_copy1.js b/99_versionen/script_copy1.js new file mode 100644 index 0000000..bfae2d3 --- /dev/null +++ b/99_versionen/script_copy1.js @@ -0,0 +1,102 @@ +holeBenutzer(); +//holeWGs(); + +function holeBenutzer() { + //Benutzer ID und Token werden aus dem localstorage geholt. + let benutzerID = localStorage.getItem('benutzerID'); + let token = localStorage.getItem('token'); + + //BenutzerID wird in die Form gefügt + let formData = new FormData(); + formData.append('benutzerID', benutzerID); + + //fetchen php file + fetch("https://450731-3.web.fhgr.ch/php/holeBenutzer.php", + { + body: formData, + method: "post", + headers: { + //Verschlüsset Id und Token + 'Authorization': 'Basic ' + btoa(benutzerID + ':' + token), + + } + }) + + .then((res) => { + + // falls die Sitzung nicht abgelaufen ist, verarbeite die JSON antwort, Fehlermeldung abgeklärt. zb 404 Error. 200 OK + if (res.status >= 200 && res.status < 300) { + + return res.json(); + + } else { + //Rückleitung zu login.html + alert('Deine Sitzung ist abgelaufen. Du wirst auf die Login-Seite weitergeleitet.'); + window.location = "/login.html" + + } + + }) + .then((data) => { + // console.log(data); + + + // // mache etwas + + // console.log(data[0].name); + + document.querySelector('#benutzername').innerHTML = data[0].name; + + + + }) +} + +/*function holeWGs(){ + + + let benutzerID = localStorage.getItem('benutzerID'); + let token = localStorage.getItem('token'); + + let formData = new FormData(); + formData.append('benutzerID', benutzerID); + + fetch("https://450731-3.web.fhgr.ch/php/holeWGs.php", + { + body: formData, + method: "post", + headers: { + + 'Authorization': 'Basic ' + btoa(benutzerID + ':' + token), + + } + }) + + .then((res) => { + + // falls die Sitzung nicht abgelaufen ist, verarbeite die JSON antwort + if (res.status >= 200 && res.status < 300) { + + return res.json(); + + } else { + + alert('Deine Sitzung ist abgelaufen. Du wirst auf die Login-Seite weitergeleitet.'); + window.location = "/login.html" + + } + + }) + .then((data) => { + + // mache etwas + console.log(data); + + //WGsAnzeigen(data); + + // console.log(data[0].name); + + + }) + + }*/ diff --git a/99_versionen/upload_wip1.css b/99_versionen/upload_wip1.css new file mode 100644 index 0000000..11b1f88 --- /dev/null +++ b/99_versionen/upload_wip1.css @@ -0,0 +1,47 @@ +.ablageBereich { + max-width: 200px; + height: 200px; + padding: 25px; + display: flex; + align-items: center; + justify-content: center; + text-align: center; + font-family: "Quicksand", sans-serif; + font-weight: 500; + font-size: 20px; + cursor: pointer; + color: #cccccc; + border: 4px dashed #009578; + border-radius: 10px; +} + +.ablageBereich--over { + border-style: solid; +} + +#ablageBereich_input { + display: none; +} + +.ablageBereich_vorschau { + width: 100%; + height: 100%; + border-radius: 10px; + overflow: hidden; + background-color: #cccccc; + background-size: cover; + position: relative; +} + +.ablageBereich_vorschau::after { + content: attr(data-label); + position: absolute; + bottom: 0; + left: 0; + width: 100%; + padding: 5px 0; + color: #ffffff; + background: rgba(0, 0, 0, 0.75); + font-size: 14px; + text-align: center; +} \ No newline at end of file diff --git a/99_versionen/upload_wip1.html b/99_versionen/upload_wip1.html new file mode 100644 index 0000000..5e240c7 --- /dev/null +++ b/99_versionen/upload_wip1.html @@ -0,0 +1,85 @@ + + + + + + + zaeMMP + + + + + + + +
+ +
+

Hallo

+ +
+ +
+ + +
+ + + +
+ +

Upload

+ + +
+ +
+ reinziehen oder klicken um auszuwählen + +
+ +
+ + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + + + +

+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/99_versionen/upload_wip1.js b/99_versionen/upload_wip1.js new file mode 100644 index 0000000..4b22d28 --- /dev/null +++ b/99_versionen/upload_wip1.js @@ -0,0 +1,134 @@ +//ERSTELLEN von Drag&Drop + + //FUNKTION Dag&Drop + //kopiert von https://dcode.domenade.com/tutorials/simple-drag-and-drop-file-upload-html-css-javascript + document.querySelectorAll(".ablageBereich_input").forEach((inputElement) => { + const ablageBereichElement = inputElement.closest(".ablageBereich"); + + ablageBereichElement.addEventListener("click", (e) => { + inputElement.click(); + }); + + inputElement.addEventListener("change", (e) => { + if (inputElement.files.length) { + updateVorschau(ablageBereichElement, inputElement.files[0]); + } + }); + + ablageBereichElement.addEventListener("dragover", (e) => { + e.preventDefault(); + ablageBereichElement.classList.add("ablageBereich--over"); + }); + + ["dragleave", "dragend"].forEach((type) => { + ablageBereichElement.addEventListener(type, (e) => { + ablageBereichElement.classList.remove("ablageBereich--over"); + }); + }); + + ablageBereichElement.addEventListener("drop", (e) => { + e.preventDefault(); + + if (e.dataTransfer.files.length) { + inputElement.files = e.dataTransfer.files; + updateVorschau(ablageBereichElement, e.dataTransfer.files[0]); + } + + ablageBereichElement.classList.remove("ablageBereich--over"); + }); + }); + + /** + * Update der Vorschau auf ein ablageBereichElement. + * + * @param {HTMLElement} ablageBereichElement + * @param {File} file + */ + + // FUNKTION updateVorschau + function updateVorschau(ablageBereichElement, file) { + let vorschauElement = ablageBereichElement.querySelector(".ablageBereich_vorschau"); + + //Erstes Mal-> info entfernen + if (ablageBereichElement.querySelector(".ablageBereich_info")) { + ablageBereichElement.querySelector(".ablageBereich_info").remove(); + } + + // Erstes Mal-> vorschauElement kreiren, wenn nicht vorhanden + if (!vorschauElement) { + vorschauElement = document.createElement("div"); + vorschauElement.classList.add("ablageBereich_vorschau"); + ablageBereichElement.appendChild(vorschauElement); + } + + vorschauElement.dataset.label = file.name; + + /* + //ANZEIGEN Vorschau wenn Bild Dokumente + if (file.type.startsWith("image/")) { + const reader = new FileReader(); + + reader.readAsDataURL(file); + reader.onload = () => { + vorschauElement.style.backgroundImage = `url('${reader.result}')`; + }; + } else { + vorschauElement.style.backgroundImage = null; + } + */ + + }// ENDE FUNKTION updateVorschau + + + + + +//FUNKTION hochladen() + +function hochladen(){ + + // ABSPEICHERN Variabeln Inputs +//let dokumentInput = document.querySelector("#ablageBereich_input"); + +let kursInput = document.querySelector("#kurs_input").value; +let standortInput = document.querySelector("#standort_input").value; + +//console.log(dokumentInput); +console.log(kursInput); +console.log(standortInput); + +//ERSTELLEN new FormData +let formData = new FormData(); + + +//HINZUFÜGEN inputELEMENT zu FormData object +//formData.append("dokument", dokumentInput.files[0]); + +//HINZUFÜGEN inputELEMENT zu FormData object +formData.append("kurs", kursInput); + +//HINZUFÜGEN inputELEMENT zu FormData object +formData.append("standort", standortInput); + + + +// ABSENDEN FormData object an den Server +fetch("https://450731-3.web.fhgr.ch/php/upload.php", { + method: "POST", + body: formData +}) + +.then((response) => { + + return response.text(); //Form angeben in der Antwort erhalten wollen + +}) + +.then((data) => { + console.log(data) + + document.querySelector('#nachricht').innerHTML = data; + +}) + +}; //ENDE FUNKTION hochladen() \ No newline at end of file diff --git a/99_versionen/upload_wip1.php b/99_versionen/upload_wip1.php new file mode 100644 index 0000000..8f3315e --- /dev/null +++ b/99_versionen/upload_wip1.php @@ -0,0 +1,107 @@ +prepare($sql); + +//$erfolg = $stmt->execute(array('kurs' => $kurs, 'standort' => $standort )); +$erfolg = $stmt->execute(array('standort' => $standort )); + +//PRÜFEN ob $erfolg ==1 / ==true + +if ($erfolg) { + + print_r('Registrierung erfolgreich.'); +} else { + + print_r($erfolg); + +} +; + +// Variabeln zB. $email, $username $password +// Spalten Namen zB. name, email, password +// Platzhalter zB. :Name, :Email, :Password + + +//ÜBERPRÜFEN ob Datei hochgeladen +if (isset($_FILES["file"]) && $_FILES["file"]["error"] === UPLOAD_ERR_OK) { + // Get the file + $file = $_FILES["file"]; + $file_name = $file['name']; + $file_tmp_name = $file['tmp_name']; + + //ABSPEICHERN der Datei + move_uploaded_file($file_tmp_name, "path/to/upload/$file_name"); +} else { + echo "There was an error uploading the file."; +} + + +----------------- +------------------------------ +*/ + +//importieren wir das config.php in dieses File +require('config.php'); + +/*Wir haben: +Variabeln= mit $ +Spaltennamen in der Tabelle = Kleingeschrieben +Platzhalter = Grossgeschrieben +Mit Execute fügen wir die Variabeln durch die Platzhalter in den Spaltennamen ein. +*/ + +$standort = $_POST['standort']; + + + +/* Was wollen wir einfügen?, Tabelle Benutzer mit folgenden Spaltennamen(email in kleinbuchstaben), Name der Variabeln */ +$sql = "INSERT INTO PDF (standort) VALUES (:Standort)"; +/*pdo=Datenbankverbindung die wir im config definiert haben. bereite dich vor, dieses SQL Statement auszuführen*/ +$stmt = $pdo->prepare($sql); +/*definiert nochmals, was wir ausführen möchten, mit welchen Namen, also Variabel Email greiffen wir auf Email zu, +Platzhalter ohne Dollarzeichen, Wir definieren Variabeln und nutzen sie im execute +Wenn alles geklappt hat, wir erfolg = 1 = true */ +$erfolg = $stmt->execute(array('Standort' => $standort)); +//Könnte auch schreiben if erfolg==1 +if ($erfolg) { + + print_r('Registrierung erfolgreich.'); + +} else { +//Fehlermeldung, wenn nicht erfolgreich + print_r($erfolg); +}; \ No newline at end of file diff --git a/99_versionen/upload_wip2.html b/99_versionen/upload_wip2.html new file mode 100644 index 0000000..d611743 --- /dev/null +++ b/99_versionen/upload_wip2.html @@ -0,0 +1,99 @@ + + + + + + + zaeMMP + + + + + + + +
+ +
+

Hallo

+ +
+ +
+ + +
+ + + +
+ +

Upload

+ + +
+ +
+ reinziehen oder klicken um auszuwählen + +
+ +
+ + +
+ +
+
+ + + +
+ +
+ + + + +
+ + + + + + +

+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/99_versionen/upload_wip2.js b/99_versionen/upload_wip2.js new file mode 100644 index 0000000..e44546c --- /dev/null +++ b/99_versionen/upload_wip2.js @@ -0,0 +1,195 @@ +//ERSTELLEN von Drag&Drop auf ablageBereich_input +//FUNKTION dragDrop + function dragDrop(){ + + //kopiert von https://dcode.domenade.com/tutorials/simple-drag-and-drop-file-upload-html-css-javascript + document.querySelectorAll("#ablageBereich_input").forEach((inputElement) => { + const ablageBereichElement = inputElement.closest(".ablageBereich"); + + ablageBereichElement.addEventListener("click", (e) => { + inputElement.click(); + }); + + inputElement.addEventListener("change", (e) => { + if (inputElement.files.length) { + updateVorschau(ablageBereichElement, inputElement.files[0]); + } + }); + + ablageBereichElement.addEventListener("dragover", (e) => { + e.preventDefault(); + ablageBereichElement.classList.add("ablageBereich--over"); + }); + + ["dragleave", "dragend"].forEach((type) => { + ablageBereichElement.addEventListener(type, (e) => { + ablageBereichElement.classList.remove("ablageBereich--over"); + }); + }); + + ablageBereichElement.addEventListener("drop", (e) => { + e.preventDefault(); + + if (e.dataTransfer.files.length) { + inputElement.files = e.dataTransfer.files; + updateVorschau(ablageBereichElement, e.dataTransfer.files[0]); + } + + ablageBereichElement.classList.remove("ablageBereich--over"); + }); + }); + + /** + * Update der Vorschau auf ein ablageBereichElement. + * + * @param {HTMLElement} ablageBereichElement + * @param {File} file + */ + + // FUNKTION updateVorschau + function updateVorschau(ablageBereichElement, file) { + let vorschauElement = ablageBereichElement.querySelector(".ablageBereich_vorschau"); + + //Erstes Mal-> info entfernen + if (ablageBereichElement.querySelector(".ablageBereich_info")) { + ablageBereichElement.querySelector(".ablageBereich_info").remove(); + } + + // Erstes Mal-> vorschauElement kreiren, wenn nicht vorhanden + if (!vorschauElement) { + vorschauElement = document.createElement("div"); + vorschauElement.classList.add("ablageBereich_vorschau"); + ablageBereichElement.appendChild(vorschauElement); + } + + vorschauElement.dataset.label = file.name; + + /* + //ANZEIGEN Vorschau wenn Bild Dokumente + if (file.type.startsWith("image/")) { + const reader = new FileReader(); + + reader.readAsDataURL(file); + reader.onload = () => { + vorschauElement.style.backgroundImage = `url('${reader.result}')`; + }; + } else { + vorschauElement.style.backgroundImage = null; + } + */ + + }// ENDE FUNKTION updateVorschau + + };//ENDE FUNKTION dragDrop + + +holeStandorte(); + + +//FUNKTION holeStandorte +function holeStandorte(){ + +//ERSTELLEN formData Objekt +let formData = new FormData(); + +fetch("https://450731-3.web.fhgr.ch/php/holeStandorte.php", + { + body: formData, + method: "post", + + }) + + .then((res) => { + + return res.json(); + + }) + .then((data) => { + + console.log(data); + + standorteAnzeigen(data); + + + }) + + +} //ENDE FUNKTION holeStandorte() + + +//FUNKTION standorteAnzeigen() +function standorteAnzeigen(data){ + console.log("standorteAnzeigen") + + //LOESCHEN Standorte + let standortInput = document.querySelector("#standort_input"); + + standortInput.innerHTML = ""; + + //forEach-Loop + data.forEach(standort => { + + let standortInputOption = document.createElement('option'); + + console.log(standortInputOption); + + standortInputOption.innerHTML = standort.standort; + + + standortInput.appendChild(standortInputOption); + + });//ENDE forEach-Loop + +};//ENDE FUNKTION standorteAnzeigen() + + + +//FUNKTION hochladen() +function dokumentHochladen(){ + +// ABSPEICHERN Variabeln Inputs +//let dokumentInput = document.querySelector("#ablageBereich_input"); +let kursInput = document.querySelector("#kurs_input").value; +let standortInputWert = document.querySelector("#standort_input").value; + +//console.log(dokumentInput); +console.log(kursInput); +console.log(standortInputWert); + +//ERSTELLEN new FormData +let formData = new FormData(); + + +//HINZUFÜGEN inputELEMENT zu FormData object +//formData.append("dokument", dokumentInput.files[0]); + +//HINZUFÜGEN inputELEMENT zu FormData object +formData.append("kurs", kursInput); + +//HINZUFÜGEN inputELEMENT zu FormData object +formData.append("standort", standortInputWert); + + + +// ABSENDEN FormData object an den Server +fetch("https://450731-3.web.fhgr.ch/php/upload.php", { + method: "POST", + body: formData +}) + +.then((response) => { + + //console.log(formData); + + return response.text(); //Form angeben in der Antwort erhalten wollen + +}) + +.then((data) => { + //console.log(data) + + document.querySelector('#nachricht').innerHTML = data; + +}) + +}; //ENDE FUNKTION dokumentHochladen() \ No newline at end of file diff --git a/99_versionen/upload_wip2.php b/99_versionen/upload_wip2.php new file mode 100644 index 0000000..e5117ca --- /dev/null +++ b/99_versionen/upload_wip2.php @@ -0,0 +1,59 @@ +prepare($sql); + + //AUSFUEHREN PDO-Statement, mit welcher Variabel erfolgt Zugriff auf Platzhalter ohne Dollarzeichen + + $erfolg = $stmt->execute(array('Standort' => $standort)); + + //PRUEFEN ob Zugriff auf DB erfolgreich, Meldung ausgeben + //Könnte auch schreiben if erfolg==1 + if ($erfolg) { + + print_r('Registrierung erfolgreich.'); + + } else { + //Fehlermeldung, wenn nicht erfolgreich + print_r($erfolg); + }; + + +//SELECT Infos Standort----------------------------------------------------------------------------------------------------------------- + +//EINFUEGEN in Tabelle PDF in Spalte standort Platzhalter :Standort +$sql = "SELECT DISTINCT standort FROM PDF"; + +$stmt = $pdo->prepare($sql); + +$erfolg = $stmt->execute(); + +if ($erfolg) { + + $array = $stmt->fetchAll(); + + $jsonArray = json_encode($array); + + print_r($jsonArray); +} + + + diff --git a/99_versionen/upload_wip2a.js b/99_versionen/upload_wip2a.js new file mode 100644 index 0000000..4b22d28 --- /dev/null +++ b/99_versionen/upload_wip2a.js @@ -0,0 +1,134 @@ +//ERSTELLEN von Drag&Drop + + //FUNKTION Dag&Drop + //kopiert von https://dcode.domenade.com/tutorials/simple-drag-and-drop-file-upload-html-css-javascript + document.querySelectorAll(".ablageBereich_input").forEach((inputElement) => { + const ablageBereichElement = inputElement.closest(".ablageBereich"); + + ablageBereichElement.addEventListener("click", (e) => { + inputElement.click(); + }); + + inputElement.addEventListener("change", (e) => { + if (inputElement.files.length) { + updateVorschau(ablageBereichElement, inputElement.files[0]); + } + }); + + ablageBereichElement.addEventListener("dragover", (e) => { + e.preventDefault(); + ablageBereichElement.classList.add("ablageBereich--over"); + }); + + ["dragleave", "dragend"].forEach((type) => { + ablageBereichElement.addEventListener(type, (e) => { + ablageBereichElement.classList.remove("ablageBereich--over"); + }); + }); + + ablageBereichElement.addEventListener("drop", (e) => { + e.preventDefault(); + + if (e.dataTransfer.files.length) { + inputElement.files = e.dataTransfer.files; + updateVorschau(ablageBereichElement, e.dataTransfer.files[0]); + } + + ablageBereichElement.classList.remove("ablageBereich--over"); + }); + }); + + /** + * Update der Vorschau auf ein ablageBereichElement. + * + * @param {HTMLElement} ablageBereichElement + * @param {File} file + */ + + // FUNKTION updateVorschau + function updateVorschau(ablageBereichElement, file) { + let vorschauElement = ablageBereichElement.querySelector(".ablageBereich_vorschau"); + + //Erstes Mal-> info entfernen + if (ablageBereichElement.querySelector(".ablageBereich_info")) { + ablageBereichElement.querySelector(".ablageBereich_info").remove(); + } + + // Erstes Mal-> vorschauElement kreiren, wenn nicht vorhanden + if (!vorschauElement) { + vorschauElement = document.createElement("div"); + vorschauElement.classList.add("ablageBereich_vorschau"); + ablageBereichElement.appendChild(vorschauElement); + } + + vorschauElement.dataset.label = file.name; + + /* + //ANZEIGEN Vorschau wenn Bild Dokumente + if (file.type.startsWith("image/")) { + const reader = new FileReader(); + + reader.readAsDataURL(file); + reader.onload = () => { + vorschauElement.style.backgroundImage = `url('${reader.result}')`; + }; + } else { + vorschauElement.style.backgroundImage = null; + } + */ + + }// ENDE FUNKTION updateVorschau + + + + + +//FUNKTION hochladen() + +function hochladen(){ + + // ABSPEICHERN Variabeln Inputs +//let dokumentInput = document.querySelector("#ablageBereich_input"); + +let kursInput = document.querySelector("#kurs_input").value; +let standortInput = document.querySelector("#standort_input").value; + +//console.log(dokumentInput); +console.log(kursInput); +console.log(standortInput); + +//ERSTELLEN new FormData +let formData = new FormData(); + + +//HINZUFÜGEN inputELEMENT zu FormData object +//formData.append("dokument", dokumentInput.files[0]); + +//HINZUFÜGEN inputELEMENT zu FormData object +formData.append("kurs", kursInput); + +//HINZUFÜGEN inputELEMENT zu FormData object +formData.append("standort", standortInput); + + + +// ABSENDEN FormData object an den Server +fetch("https://450731-3.web.fhgr.ch/php/upload.php", { + method: "POST", + body: formData +}) + +.then((response) => { + + return response.text(); //Form angeben in der Antwort erhalten wollen + +}) + +.then((data) => { + console.log(data) + + document.querySelector('#nachricht').innerHTML = data; + +}) + +}; //ENDE FUNKTION hochladen() \ No newline at end of file diff --git a/99_versionen/upload_wip3.html b/99_versionen/upload_wip3.html new file mode 100644 index 0000000..d6ecca3 --- /dev/null +++ b/99_versionen/upload_wip3.html @@ -0,0 +1,102 @@ + + + + + + + zaeMMP + + + + + + + +
+ +
+

Hallo

+ +
+ +
+ + +
+ + + +
+ +

Upload

+ + +
+ +
+ reinziehen oder klicken um auszuwählen + +
+ +
+ + +
+ + + + + +
+ +
+ + + + +
+ + + + + + +

+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/99_versionen/upload_wip3.php b/99_versionen/upload_wip3.php new file mode 100644 index 0000000..7ef32e5 --- /dev/null +++ b/99_versionen/upload_wip3.php @@ -0,0 +1,198 @@ +prepare($sql); +$erfolg = $stmt->execute(array('Standort' => $standort, 'KursName' => $kursName,'Benutzer_ID' => $benutzer_ID,'dokumentName' => $dokumentName)); + +if ($erfolg) { + print_r('Registrierung erfolgreich.'); +} else { + print_r($erfolg); +}; + + + + +//INSERT Variable $standort----------------------------------------------------------------------------------------------------------------- +// //ABSPEICHERN Variable $standort +$standort = $_POST['standort']; + + //$standort = "testOrt"; + + //EINFUEGEN in Tabelle PDF in Spalte standort Platzhalter :Standort + /*$sql = "INSERT INTO PDF (standort) VALUES (:Standort) AND + INSERT INTO PDF (kurs_ID) SELECT ID FROM Kurs WHERE name = (:kursName) "; +*/ + $sql = "INSERT INTO PDF (standort) VALUES (:Standort)"; + + //VORBEREITEN SQL-Statement auszuführen, *pdo=Datenbankverbindung, im config definiert + $stmt = $pdo->prepare($sql); + + //AUSFUEHREN PDO-Statement, mit welcher Variabel erfolgt Zugriff auf Platzhalter ohne Dollarzeichen + $erfolg = $stmt->execute(array('Standort' => $standort) ); + + //$erfolg = $stmt->execute(array('Standort' => $standort) ); + + //PRUEFEN ob Zugriff auf DB erfolgreich, Meldung ausgeben + //Könnte auch schreiben if erfolg==1 + if ($erfolg) { + + print_r('Registrierung erfolgreich.'); + + } else { + //Fehlermeldung, wenn nicht erfolgreich + print_r($erfolg); + }; + + + +//INSERT Variable $kursName----------------------------------------------------------------------------------------------------------------- +// //ABSPEICHERN Variable $kursName +$kursName = $_POST['kursName']; + + //$standort = "testOrt"; + + //EINFUEGEN in Tabelle PDF in Spalte standort Platzhalter :Standort + /*$sql = "INSERT INTO PDF (standort) VALUES (:Standort) AND + INSERT INTO PDF (kurs_ID) SELECT ID FROM Kurs WHERE name = (:kursName) "; +*/ + $sql = "INSERT INTO PDF (kurs_ID) SELECT ID FROM Kurs WHERE name = (:kursName)"; + + //VORBEREITEN SQL-Statement auszuführen, *pdo=Datenbankverbindung, im config definiert + $stmt = $pdo->prepare($sql); + + //AUSFUEHREN PDO-Statement, mit welcher Variabel erfolgt Zugriff auf Platzhalter ohne Dollarzeichen + $erfolg = $stmt->execute(array('kursName' => $kursName) ); + + //$erfolg = $stmt->execute(array('Standort' => $standort) ); + + //PRUEFEN ob Zugriff auf DB erfolgreich, Meldung ausgeben + //Könnte auch schreiben if erfolg==1 + if ($erfolg) { + + print_r('Registrierung erfolgreich.'); + + } else { + //Fehlermeldung, wenn nicht erfolgreich + print_r($erfolg); + }; + + +//INSERT Variable $benutzer_ID----------------------------------------------------------------------------------------------------------------- +// //ABSPEICHERN Variable $benutzer_ID +$benutzer_ID = $_POST['benutzer_ID']; + + //$standort = "testOrt"; + + //EINFUEGEN in Tabelle PDF in Spalte standort Platzhalter :Standort + /*$sql = "INSERT INTO PDF (standort) VALUES (:Standort) AND + INSERT INTO PDF (kurs_ID) SELECT ID FROM Kurs WHERE name = (:kursName) "; +*/ +$sql = "INSERT INTO PDF (benutzer_ID) VALUES (:Benutzer_ID)"; + + //VORBEREITEN SQL-Statement auszuführen, *pdo=Datenbankverbindung, im config definiert + $stmt = $pdo->prepare($sql); + + //AUSFUEHREN PDO-Statement, mit welcher Variabel erfolgt Zugriff auf Platzhalter ohne Dollarzeichen + $erfolg = $stmt->execute(array('Benutzer_ID' => $benutzer_ID) ); + + //$erfolg = $stmt->execute(array('Standort' => $standort) ); + + //PRUEFEN ob Zugriff auf DB erfolgreich, Meldung ausgeben + //Könnte auch schreiben if erfolg==1 + if ($erfolg) { + + print_r('Registrierung erfolgreich.'); + + } else { + //Fehlermeldung, wenn nicht erfolgreich + print_r($erfolg); + }; + + + + + + +/* + +//INSERT Variable $dokumentName----------------------------------------------------------------------------------------------------------------- +// //ABSPEICHERN Variable $dokumentName + + + + //$standort = "testOrt"; + + //EINFUEGEN in Tabelle PDF in Spalte standort Platzhalter :Standort + /*$sql = "INSERT INTO PDF (standort) VALUES (:Standort) AND + INSERT INTO PDF (kurs_ID) SELECT ID FROM Kurs WHERE name = (:kursName) "; + + +*/ + +$dokumentName = $_POST['dokumentName']; + +$sql = "INSERT INTO PDF (dokument) VALUES (:DokumentName)"; + + //VORBEREITEN SQL-Statement auszuführen, *pdo=Datenbankverbindung, im config definiert + $stmt = $pdo->prepare($sql); + + //AUSFUEHREN PDO-Statement, mit welcher Variabel erfolgt Zugriff auf Platzhalter ohne Dollarzeichen + $erfolg = $stmt->execute(array('DokumentName' => $dokumentName) ); + + //$erfolg = $stmt->execute(array('Standort' => $standort) ); + + //PRUEFEN ob Zugriff auf DB erfolgreich, Meldung ausgeben + //Könnte auch schreiben if erfolg==1 + if ($erfolg) { + + print_r('Registrierung erfolgreich.'); + + } else { + //Fehlermeldung, wenn nicht erfolgreich + print_r($erfolg); + }; + + + +/* +//SELECT Infos Standort----------------------------------------------------------------------------------------------------------------- + + +//EINFUEGEN in Tabelle PDF in Spalte standort Platzhalter :Standort +$sql = "SELECT DISTINCT standort FROM PDF"; + +$stmt = $pdo->prepare($sql); + +$erfolg = $stmt->execute(); + +if ($erfolg) { + + $array = $stmt->fetchAll(); + + $jsonArray = json_encode($array); + + print_r($jsonArray); +} + + + +*/ \ No newline at end of file diff --git a/99_versionen/upload_wip3js b/99_versionen/upload_wip3js new file mode 100644 index 0000000..acd96d5 --- /dev/null +++ b/99_versionen/upload_wip3js @@ -0,0 +1,284 @@ +let dokumentName; + +//ERSTELLEN von Drag&Drop auf ablageBereich_input +dragDrop(); + + +//FUNKTION dragDrop + function dragDrop(){ + + + //kopiert von https://dcode.domenade.com/tutorials/simple-drag-and-drop-file-upload-html-css-javascript + document.querySelectorAll("#ablageBereich_input").forEach((inputElement) => { + const ablageBereichElement = inputElement.closest(".ablageBereich"); + + ablageBereichElement.addEventListener("click", (e) => { + inputElement.click(); + }); + + inputElement.addEventListener("change", (e) => { + if (inputElement.files.length) { + updateVorschau(ablageBereichElement, inputElement.files[0]); + } + }); + + ablageBereichElement.addEventListener("dragover", (e) => { + e.preventDefault(); + ablageBereichElement.classList.add("ablageBereich--over"); + }); + + ["dragleave", "dragend"].forEach((type) => { + ablageBereichElement.addEventListener(type, (e) => { + ablageBereichElement.classList.remove("ablageBereich--over"); + }); + }); + + ablageBereichElement.addEventListener("drop", (e) => { + e.preventDefault(); + + if (e.dataTransfer.files.length) { + inputElement.files = e.dataTransfer.files; + updateVorschau(ablageBereichElement, e.dataTransfer.files[0]); + } + + ablageBereichElement.classList.remove("ablageBereich--over"); + }); + }); + + /** + * Update der Vorschau auf ein ablageBereichElement. + * + * @param {HTMLElement} ablageBereichElement + * @param {File} file + */ + + // FUNKTION updateVorschau + function updateVorschau(ablageBereichElement, file) { + let vorschauElement = ablageBereichElement.querySelector(".ablageBereich_vorschau"); + + //Erstes Mal-> info entfernen + if (ablageBereichElement.querySelector(".ablageBereich_info")) { + ablageBereichElement.querySelector(".ablageBereich_info").remove(); + } + + // Erstes Mal-> vorschauElement kreiren, wenn nicht vorhanden + if (!vorschauElement) { + vorschauElement = document.createElement("div"); + vorschauElement.classList.add("ablageBereich_vorschau"); + ablageBereichElement.appendChild(vorschauElement); + } + + vorschauElement.dataset.label = file.name; + + dokumentName = file.name; + + + + /* + //ANZEIGEN Vorschau wenn Bild Dokumente + if (file.type.startsWith("image/")) { + const reader = new FileReader(); + + reader.readAsDataURL(file); + reader.onload = () => { + vorschauElement.style.backgroundImage = `url('${reader.result}')`; + }; + } else { + vorschauElement.style.backgroundImage = null; + } + */ + + }// ENDE FUNKTION updateVorschau + + + };//ENDE FUNKTION dragDrop + + +//holeStandorte(); +holeKurse(); + + +/* +//FUNKTION holeStandorte +function holeStandorte(){ + +//ERSTELLEN formData Objekt +let formData = new FormData(); + +fetch("https://450731-3.web.fhgr.ch/php/holeStandorte.php", + { + body: formData, + method: "post", + + }) + + .then((res) => { + + return res.json(); + + }) + .then((data) => { + + console.log(data); + + standorteAnzeigen(data); + + + }) + + +} //ENDE FUNKTION holeStandorte() + + + +//FUNKTION standorteAnzeigen() +function standorteAnzeigen(data){ + console.log("standorteAnzeigen") + + + let standortInput = document.querySelector("#standort_input"); + + //LOESCHEN Standorte + standortInput.innerHTML = ""; + + //forEach-Loop + data.forEach(standort => { + + let standortInputOption = document.createElement('option'); + + console.log(standortInputOption); + + standortInputOption.innerHTML = standort.standort; + + + standortInput.appendChild(standortInputOption); + + });//ENDE forEach-Loop + +};//ENDE FUNKTION standorteAnzeigen() + +*/ + +//FUNKTION holeKurse() +function holeKurse(){ + +//ERSTELLEN formData Objekt +let formData = new FormData(); + +fetch("https://450731-3.web.fhgr.ch/php/holeKurse.php", + { + body: formData, + method: "post", + + }) + + .then((res) => { + + return res.json(); + + }) + .then((data) => { + + console.log(data); + + kurseAnzeigen(data); + + + }) + + +} //ENDE FUNKTION holeKurse() + + +//FUNKTION kurseAnzeigen() +function kurseAnzeigen(data){ + + console.log("kurseAnzeigen") + + + let kursInput = document.querySelector("#kurs_input"); + + //LOESCHEN Kurse + kursInput.innerHTML = ""; + + //forEach-Loop + data.forEach(kurs => { + + let kursInputOption = document.createElement('option'); + + console.log(kursInputOption); + + kursInputOption.innerHTML = kurs.name; + + + kursInput.appendChild(kursInputOption); + + });//ENDE forEach-Loop + +};//ENDE FUNKTION kurseAnzeigen() + + + + +//FUNKTION hochladen() +function dokumentHochladen(){ + + +// ABSPEICHERN Variabeln Inputs +//let dokumentInput = document.querySelector("#ablageBereich_input"); +let kursInput = document.querySelector("#kurs_input").value; +let standortInputWert = document.querySelector("#standort_input").value; +let benutzerID = localStorage.getItem("benutzerID"); + + + + +//console.log(dokumentInput); +console.log(benutzerID); +console.log(dokumentName); +console.log(kursInput); +console.log(standortInputWert); + +//ERSTELLEN new FormData +let formData = new FormData(); + + +//HINZUFÜGEN inputELEMENT zu FormData object +//formData.append("dokument", dokumentInput.files[0]); + +//HINZUFÜGEN inputELEMENT zu FormData object +formData.append("kursName", kursInput); + +//HINZUFÜGEN inputELEMENT zu FormData object +formData.append("standort", standortInputWert); + +//HINZUFÜGEN inputELEMENT zu FormData object +formData.append("benutzer_ID", benutzerID); + +//HINZUFÜGEN inputELEMENT zu FormData object +formData.append("dokumentName", dokumentName); + + + +// ABSENDEN FormData object an den Server +fetch("https://450731-3.web.fhgr.ch/php/upload.php", { + method: "POST", + body: formData +}) + +.then((response) => { + + //console.log(formData); + + return response.text(); //Form angeben in der Antwort erhalten wollen + +}) + +.then((data) => { + //console.log(data) + + document.querySelector('#nachricht').innerHTML = data; + +}) + +}; //ENDE FUNKTION dokumentHochladen() \ No newline at end of file diff --git a/css/style.css b/css/style.css new file mode 100644 index 0000000..6b7a111 --- /dev/null +++ b/css/style.css @@ -0,0 +1,481 @@ +*{ + box-sizing: border-box; + padding: 0; +} + +html { + + font-family: 'Lucida Sans', 'Lucida Sans Regular', 'Lucida Grande', 'Lucida Sans Unicode', Geneva, Verdana, sans-serif; + padding: 0%; + margin: auto; + background-color: #12333d; + +} + +.logo{ + text-align: center; +} +.logo a{ + text-align:center; + position: absolute; + color: #12333D; + font-family: 'Courier New', Courier, monospace; + font-size: large; + text-decoration: none; + font-weight: 600; + +} + +#nachricht { + font-family: 'Courier New', Courier, monospace; + color:#0cefc1; + font-style: bold; +} +.topheader{ + background-color: #0cefc1; + padding-bottom: 10vh; +} +body { + padding: 0%; + margin: auto; + text-align: center; + +} + +#zaeMMP{ + margin: 0; + padding-top: 30vh; + text-align: center; + font-family: 'Courier New', Courier, monospace; + font-size: 5em; + color: #12333d; + +} +#subtitle{ + text-align: center; + font-size: 1.3em; + font-family: 'Courier New', Courier, monospace; + color: #12333d; + +} + +.topheader button{ + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%,-50%); + font-family: sans-serif, arial; + font-weight: bold; + font-size: 18px; + padding: 12px 24px; + background: none; + color: #12333d; + border: 2px solid #12333d; + cursor: pointer; + } + .topheader button:active, #tabelle button:focus{ + outline: none; + } + .topheader button:hover{ + color: #0cefc1; + box-shadow: 0px 4px 8px 1px #000; + transition: all .3s ease; + } + .topheader button::after{ + content: ''; + position: absolute; + bottom: 0px; + left: 0px; + width: 0px; + height: 0px; + background: #12333d; + transform-origin: left bottom; + transition-property: width height; + transition-duration: 0.3s; + z-index: -1; + } + .topheader button:hover::after{ + width: 100%; + height: 100%; + } + + + #tabelle button{ + + font-family: sans-serif, arial; + font-weight: bold; + font-size: 18px; + background: none; + color: #0cefc1; + cursor: pointer; + } + + + +p { + font-size: 15px; + color: #4c86af; +} + +.title{ + + text-align: center; +} + +table#tabelle { + font-family: "Courier New", Courier, monospace; + background-color: #12333D; + width: 100%; + text-align: center; + border-collapse: collapse; + } + table#tabelle td, table.tabelle th { + padding: 7px 10px; + } + table#tabelle tbody td { + font-size: 13px; + font-weight:100; + color: #0cefc1;; + } + table#tabelle tr:nth-child(even) { + background: #173F4C; + } + table#tabelle thead { + color: #0cefc1; + font-weight: bold; + } + table#tabelle thead th { + font-size: 16px; + font-weight: bold; + color: #12333D; + text-align: center; + } + + + +a { + + color: rgb(5, 72, 100); +} + +input { + margin: 10px; +} + +textarea { + margin: 10px; + width: 50%; +} + +button { + + margin: 10px; + +} + +.dropdown{ + + margin: 10px; +} + +.wg { + + border: 2px solid rgb(110, 168, 192); + padding: 10px; + margin-bottom: 15px; +} + +.wg-image { + + width: 50%; +} + +#liste-wg { + + width: 50%; + margin: auto; + +} + +nav { + text-align: right; +} + +button { + background-color: #4c86af; + border: none; + color: white; + padding: 15px 32px; + text-align: center; + text-decoration: none; + display: inline-block; + font-size: 16px; + cursor: pointer; +} +h2 { + font-family:'Courier New', Courier, monospace; + color: #0cefc1; + text-align: left; +} + + + +#container { + width: 100%; + display: flex; + flex-direction: row; + padding: 50px;; +} +#infoTex { + text-align: center; +} +#tabelleBereich{ + width: 75%; +} + +#infoText p{ + font-family: 'Courier New', Courier, monospace; + font-size: 2em; + color:#12333D; + background-color: #0cefc1; + padding: 20px; + position: fixed; + width: 25%; +} +/* Login*/ +.titletext{ + margin: 0; + padding-top: 20vh; + padding-bottom: 5vh; + text-align: center; + font-family: 'Courier New', Courier, monospace; + font-size: 5em; + color: #12333d; + background-color: #0cefc1; + +} +input#passwort input#email{ + font-size: 1.5rem; + color: #0cefc1; + background-color:#0f2931; + border-color:#12333D; +} + +.einloggen{ + text-align: center; + color: #0cefc1; + text-align: center; +} +.einloggen input:focus{ + background-color: #061417; + color: #0cefc1; +} + + + +.einloggen input{ + background:#0b2228; + border-style: solid; + border-width: 1px; + border-color:#0b2228; + height: auto; + font-size: 1.2rem; + padding: 1.5rem 2rem; + transition: all 0.3s; + color: #0cefc1; + +} + +.einloggen button{ + + font-family:'Courier New', Courier, monospace; + font-weight: bold; + font-size: 18px; + padding: 12px 24px; + background: none; + color: #0cefc1; + border: 2px solid #0cefc1; + cursor: pointer; +} + +.einloggen button:active, .einloggenbutton:focus{ + outline: none; + } + .einloggen button:hover{ + color: #12333D; + background-color: #0cefc1; + box-shadow: 0px 4px 8px 1px #000; + transition: all .3s ease; + } + + +.einloggen label{ + font-family: 'Courier New', Courier, monospace; +} + +.einloggen h2{ + width: 30%; + padding-top: 50px; + padding-bottom: 50px; + + text-align: left; + margin: 0 auto; + font-family: 'Courier New', Courier, monospace; + +} + +/* Upload */ + +header.flex { +} + +header.flex button{ + font-family:'Courier New', Courier, monospace; + font-weight: bold; + font-size: 18px; + padding: 12px 24px; + background-color: #12333D; + color: #0cefc1; + border: 2px solid #0cefc1; + cursor: pointer; +} + +header.flex:active, header.flex button:focus{ + outline: none; + } + header.flex button:hover{ + color: #12333D; + background-color: #0cefc1; + box-shadow: 0px 4px 8px 1px #000; + transition: all .3s ease; + } + +.flex { +position:absolute; +padding: 20px; +} + +.container-header h1{ + color: #12333D; + font-family: 'Courier New', Courier, monospace; + font-size: 3em; +} + +#Upload{ + background-color: #0cefc1; + margin: 0; + padding-top: 30vh; + text-align: center; + font-family: 'Courier New', Courier, monospace; + font-size: 10em; + display: block; + + color: #12333d; +} +#Upload h1{ + padding-bottom: 5vh; +} + + + +.container-header { + + width: 33%; + + +} + +.hidden { + + display: none; + +} + + +.standortform{ + +} +.standortform label{ + font-family: 'Courier New', Courier, monospace; + background-color: #12333D; + color: #0cefc1; + +} +.standortform select{ + background-color :#12333D; + border-style: solid; + border-color: #0cefc1; + padding: 10px; + color: #0cefc1; +} +#zusammenfassung{ + font-family: 'Courier New', Courier, monospace; + font-size: 2em; + color: #0cefc1; + padding-top: 5vh; + padding-bottom: 5vh; +} +.standortform button{ + font-family:'Courier New', Courier, monospace; + font-weight: bold; + font-size: 18px; + padding: 12px 24px; + background: none; + color: #0cefc1; + border: 2px solid #0cefc1; + cursor: pointer; +} + +.standortform button:active, .standortform button:focus{ + outline: none; + } +.standortform button:hover{ + color: #12333D; + background-color: #0cefc1; + box-shadow: 0px 4px 8px 1px #000; + transition: all .3s ease; + } + +/* +Profil +*/ + +#meinprofil button{ + font-family:'Courier New', Courier, monospace; + font-weight: bold; + font-size: 18px; + padding: 12px 24px; + background: none; + color: #0cefc1; + border: 2px solid #0cefc1; + cursor: pointer; +} + +#meinprofil button:active, .standortform button:focus{ + outline: none; + } +#meinprofil button:hover{ + color: #12333D; + background-color: #0cefc1; + box-shadow: 0px 4px 8px 1px #12333D; + transition: all .3s ease; + } + +#meinprofil input{ + background-color: #0d282f; + border-color: #12333D; + padding: 10px; + font-size: 1.5rem; + border-style: solid; + border-width: 1px; + color: #0cefc1; + font-family: 'Courier New', Courier, monospace; + +} + +#meinprofil label{ + font-family: 'Courier New', Courier, monospace; + font-size: 2em; + color: #0cefc1; + text-align: left; +} \ No newline at end of file diff --git a/css/upload.css b/css/upload.css new file mode 100644 index 0000000..4b83898 --- /dev/null +++ b/css/upload.css @@ -0,0 +1,54 @@ + +.Ablagewrapper { + padding: 20px; +} +.ablageBereich { + font-family: 'Courier New', Courier, monospace; + margin: auto; + max-width: 200px; + height: 200px; + padding: 25px; + display: flex; + align-items: center; + justify-content: center; + text-align: center; + font-family: "Quicksand", sans-serif; + font-weight: 500; + font-size: 20px; + cursor: pointer; + color: #0cefc1; + border: 4px dashed #0cefc1; + border-radius: 10px; +} + +.ablageBereich--over { + border-style: solid; +} + +#ablageBereich_input { + display: none; +} + +.ablageBereich_vorschau { + width: 100%; + height: 100%; + border-radius: 10px; + overflow: hidden; + background-color: #0cefc1;; + background-size: cover; + position: relative; + margin: auto; +} + +.ablageBereich_vorschau::after { + content: attr(data-label); + position: absolute; + bottom: 0; + left: 0; + width: 100%; + padding: 5px 0; + color: #0cefc1;; + background: rgba(0, 0, 0, 0.75); + font-size: 14px; + text-align: center; +} \ No newline at end of file diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 0000000..7a6c687 Binary files /dev/null and b/favicon.ico differ diff --git a/index.html b/index.html new file mode 100644 index 0000000..e69de29 diff --git a/js/checkToken.js b/js/checkToken.js new file mode 100644 index 0000000..c9c3700 --- /dev/null +++ b/js/checkToken.js @@ -0,0 +1,19 @@ + + +console.log("Hallo") + + + + + +//FUNKTION checkToken() +function checkToken(){ + console.log("checkToken"); + + let token = localStorage.getItem('token'); + if(token !== null){ + window.location = "https://450731-3.web.fhgr.ch/upload.html" + } else { + window.location = "https://450731-3.web.fhgr.ch/login.html" + } +} diff --git a/js/index.js b/js/index.js new file mode 100644 index 0000000..dd1802e --- /dev/null +++ b/js/index.js @@ -0,0 +1,184 @@ +holePDF(); + + +//FUNKTION holePDF() +function holePDF(){ + +//ERSTELLEN formData Objekt +let formData = new FormData(); + +fetch("https://450731-3.web.fhgr.ch/php/index.php", + { + body: formData, + method: "post", + + }) + + .then((res) => { + + return res.json(); + + }) + .then((data) => { + + console.log(data); + + pdfAnzeigen(data); + + + }) + + +} //ENDE FUNKTION holePDF() +console.log ('test'); + +function pdfAnzeigen(data){ + +let tabelle = document.getElementById("tabelle"); + +// The array you have in the console + +// Get a reference to the container element where you want to append the table +//let tabelle = document.getElementById("tabelle"); + +/*// Create a new table element +let tabelle = document.createElement("table"); + +//tabelleKopf +let tabelleKopf = document.createElement("thead"); +let tabelleKopfReihe = document.createElement("tr"); + + +tabelleKopf.appendChild(tabelleKopfReihe); + +//let tabelleKopfZelle= document.createElement("td"); + +//tabelleKopfReihe.appendChild(tabelleKopfZelle); + +for (let i = 0; i < 6; i++) { + + let tabelleKopfZelle= document.createElement("td"); + tabelleKopfReihe.appendChild(tabelleKopfZelle); + + } + +tabelle.appendChild(tabelleKopf); +*/ +//tabelleBody + +let tabelleBody = document.createElement("tbody"); +row = tabelleBody.insertRow(); + + + +// (C2) LOOP THROUGH ARRAY & GENERATE ROWS-CELLS +let perrow = 5; // 5 CELLS PER ROW +data.forEach((dataRow, i) => { + + for (let i = 0; i < 6; i++) { + + let cell = row.insertCell(); + cell.innerHTML = dataRow[i]; + + + } + + + let cellSpende = row.insertCell(); + let spendeButton = document.createElement("button"); + spendeButton.classList.add("spendeButton"); + spendeButton.innerHTML = "Download"; + cellSpende.appendChild(spendeButton); + + spendeButton.addEventListener("click", () => { + spendeText(dataRow); + }); + + function spendeText(dataRow){ + + let infoText = document.querySelector("#infoText"); + infoText.innerHTML = ""; + let p = document.createElement("p"); + let span1 = document.createElement("span"); + span1.innerHTML = dataRow[4]; + let span2 = document.createElement("span"); + span2.innerHTML = dataRow[5]; + p.innerHTML = `Bedanke dich bei ${dataRow[4]} mit einem Kaffe per Twint an die Nummer ${dataRow[5]}`; + infoText.appendChild(p); + + //infoText.innerHTML = "Bedanke dich bei " + dataRow[4] + " mit einem Kaffe per Twint an die Nummer " + dataRow[5]; + } + + + + + + + + + + + /*let cellSpende = row.insertCell(); + cellSpende.innerHTML = ""; + + function spende(dataRow){ + console.log("hat funktioniert"); + + let spendeButton = document.querySelector("#spendeButton"); + console.log(spendeButton); + + /*spendeButton.addEventListener("click", spendeText) + + function spendeText(){ + + let infoText = document.querySelector("#infoText"); + + infoText.innerHTML = ""; + + infoText.innerHTML = "Bedanke dich bei " + dataRow[4] + " mit einem Kaffe per Twint an die Nummer " + dataRow[5]; + + }; + + + } */ + + + + + + + + + + + //let cellSpende = row.insertCell(); + // cellSpende.innerHTML = "" + + // ADD CELL + + // CLICK ON CELL TO DO SOMETHING + // cell.onclick = FUNCTION; + + // TO PASS IN A RUNNING NUMBER OR PARAMETER + // cell.onclick = () => { console.log(i); }; + + // BREAK INTO NEXT ROW + + + row = tabelleBody.insertRow(); + + + /* let next = i + 1; + if (next%perrow==0 && next!=data.length) { row = tabelle.insertRow(); } */ + +}); + +// (D) ATTACH TABLE TO CONTAINER +tabelle.appendChild(tabelleBody); + +tabelleBereich.appendChild(tabelle); + + +} + + diff --git a/js/login.js b/js/login.js new file mode 100644 index 0000000..fa8b643 --- /dev/null +++ b/js/login.js @@ -0,0 +1,51 @@ + + + + +console.log('Hello Login'); + +function login(){ + let email = document.querySelector("#email").value; + let passwort = document.querySelector("#passwort").value; + console.log('Hallo ' + email + passwort); + + + //FormData = Box für unsere Formulardaten + let formData = new FormData(); + formData.append('email', email); + formData.append('passwort', passwort); + + +//Adresse eingeben, wo das Packet hinsoll +fetch("https://450731-3.web.fhgr.ch/php/login.php", + { + body: formData, + //methode bestimmen, get auch möglich. So holen wir im php die Daten $_Post + method: "post", + }) + + //Warten auf Response=res + .then((res) => { + //wir wollen einen Text erhalten, andere Daten manchmal JSON + + return res.json(); + + }) + .then((data) => { + console.log(data); + document.querySelector('#nachricht').innerHTML = data[0]; + + //Platziere benutzerID an 1. Stelle und Token an 2. Stelle im localstorage + localStorage.setItem("benutzerID", data[1]); + localStorage.setItem("token", data[2]); + + //Wenn ID und Token nicht 0 ist, also der benutzer eingeloggt ist, öffne die neue Seite(Startseite) + if (data[1] != 0 && data[2] != 0){ + + window.location.href = "https://450731-3.web.fhgr.ch/upload.html"; + + + } + + }) + } diff --git a/js/profil.js b/js/profil.js new file mode 100644 index 0000000..aada9b8 --- /dev/null +++ b/js/profil.js @@ -0,0 +1,204 @@ +var profilID; + +holeProfildaten(); + +function holeProfildaten() { + + // get authentication variables from localstorage + let benutzerID = localStorage.getItem('benutzerID'); + let token = localStorage.getItem('token'); + + let formData = new FormData(); + formData.append('benutzerID', benutzerID); + + fetch("https://450731-3.web.fhgr.ch/php/holeProfildaten.php", + { + body: formData, + method: "post", + headers: { + + 'Authorization': 'Basic ' + btoa(benutzerID + ':' + token), + + } + }) + + .then((res) => { + + // error handling if session is expired + if (res.status >= 200 && res.status < 300) { + + return res.json(); + + } else { + + alert('Deine Sitzung ist abgelaufen. Du wirst auf die Login-Seite weitergeleitet.'); + window.location = "/login.html" + + } + + }) + .then((data) => { + + console.log(data); + + // falls es noch keine WG zu diesem User gibt + // falls es noch keine WG zu diesem User gibt + // falls es noch keine WG zu diesem User gibt + //if (data.length == 0) { + + // zeige Infotext an + // document.querySelector('#infoText').innerHTML = "Fülle dieses Formular aus, um dein Profil zu erstellen." + + // zeige den korrekten Button an +// document.querySelector('#button-neue').classList.remove("hidden"); + + // falls es bereits eine WG zu diesem User gibt + // falls es bereits eine WG zu diesem User gibt + // falls es bereits eine WG zu diesem User gibt + // } else { + + // speichere die wg ID in der globalen variable + // diese brauchen wir später zum aktualisieren und löschen der WG + profilID = data[0].ID; + + // zeige Infotext an + // document.querySelector('#infoText').innerHTML = "Hier kannst du dein Profil bearbeiten:"; + + // zeige den korrekten Button an + // document.querySelector('#button-aktualisieren').classList.remove("hidden"); + //document.querySelector('#button-loeschen').classList.remove("hidden"); + + // fülle das Formular mit den Werten aus der DB aus + document.querySelector('#name').value = data[0].name; + document.querySelector('#email').value = data[0].email; + document.querySelector('#handyNr').value = data[0].handyNr; + console.log(data); + + }) + } + + +function aktualisiereProfil() { + + // get authentication variables from localstorage + let benutzerID = localStorage.getItem('benutzerID'); + let token = localStorage.getItem('token'); + + // Formulardaten in Body übertragen + let name = document.querySelector('#name').value; + let email = document.querySelector('#email').value; + let handyNr = document.querySelector('#handyNr').value; + + + let formData = new FormData(); + //formData.append('benutzerID', benutzerID); + formData.append('name', name); + formData.append('email', email); + formData.append('handyNr', handyNr); + + + fetch("https://450731-3.web.fhgr.ch/php/aktualisiereProfil.php", + { + body: formData, + method: "post", + headers: { + + 'Authorization': 'Basic ' + btoa(benutzerID + ':' + token), + + } + }) + + .then((res) => { + + // error handling if session is expired + if (res.status >= 200 && res.status < 300) { + + return res.text(); + + } else { + + alert('Deine Sitzung ist abgelaufen. Du wirst auf die Login-Seite weitergeleitet.'); + window.location = "/login.html" + + } + + }) + .then((data) => { + + // zeige die Nachricht an + document.querySelector('#nachricht').innerHTML = data; + document.querySelector('#nachricht').innerHTML = "Aktualisierung erfolgreich!"; + + + }) +} + + +function loescheProfil() { + + // get authentication variables from localstorage + let benutzerID = localStorage.getItem('benutzerID'); + let token = localStorage.getItem('token'); + + let formData = new FormData(); + formData.append('benutzerID', benutzerID); + formData.append('profilID', profilID); + + fetch("https://450731-3.web.fhgr.ch/php/loescheProfil.php", + { + body: formData, + method: "post", + headers: { + + 'Authorization': 'Basic ' + btoa(benutzerID + ':' + token), + + } + }) + + .then((res) => { + + // error handling if session is expired + if (res.status >= 200 && res.status < 300) { + + return res.text(); + + } else { + + alert('Deine Daten sind gelöscht, registriere dich erneut, falls du alle Funktionen nutzen möchtest.'); + window.location = "/index.html" + + } + + }) + .then((data) => { + + console.log(data); + document.querySelector('#nachricht').innerHTML = data; + + // button aktualisieren + // document.querySelector('#button-neue').classList.remove("hidden"); + // document.querySelector('#button-aktualisieren').classList.add("hidden"); + // document.querySelector('#button-loeschen').classList.add("hidden"); + + // Formularfelder leeren + document.querySelector('#name').value = ""; + document.querySelector('#email').value = ""; + document.querySelector('#handyNr').value = ""; + + + + // Variablen leeren + profilID = ""; + + + + }) +} + +function logout(){ + + localStorage.clear(); + window.location = "/index.html"; + + +} \ No newline at end of file diff --git a/js/registrieren.js b/js/registrieren.js new file mode 100644 index 0000000..b399147 --- /dev/null +++ b/js/registrieren.js @@ -0,0 +1,58 @@ +console.log('hallo'); +function registrieren (){ + let benutzername = document.querySelector("#benutzername").value; + let handyNr = document.querySelector("#handyNr").value; + let email = document.querySelector("#email").value; + let passwort = document.querySelector("#passwort").value; + // console.log('Hallo ' + benutzername + email + passwort); + + + //FormData = Box für unsere Formulardaten + let formData = new FormData(); + formData.append('benutzername', benutzername); + formData.append('handyNr', handyNr); + formData.append('email', email); + formData.append('passwort', passwort); +//Adresse eingeben, wo das Packet hinsoll + fetch("https://450731-3.web.fhgr.ch/php/registrieren.php", + { + body: formData, + //methode bestimmen, get auch möglich. So holen wir im php die Daten $_Post + method: "post", + }) + + //Warten auf Response=res + .then((res) => { + //wir wollen einen Text erhalten, andere Daten manchmal JSON + return res.text(); + + + }) + .then((data) => { + // console.log(data); + document.querySelector('#nachricht').innerHTML = data; + + }) + } +/* + //Die Grundlage für einen Fetch. Fetch ist eine Funktion, die einen Request an einen Server sendet und das Ergebnis zurückgibt + //In der ersten Zeile wird der Link zur API definiert. Dieser kann immer angepasst werden. + let url = 'https://pokeapi.co/api/v2/pokemon?limit=151&offset=0'; + //Hier startet der Fetch mit der definierten URL. + fetch(url) + //Wenn der Fetch erfolgreich war, wird die Antwort in ein Objekt gespeichert. + .then(response => response.json()) + //Wenn das Objekt gespeichert wurde, wird es in eine Variable gespeichert. Diese Variable heisst "data". + .then(data => { + //Hier kann man mit der Variable arbeiten. Entweder das DOM mit Informationen erweitern, oder eine neue Funktion aufrufen. + //Mit "Console.log(data);" sieht man den Inhalt des Objekts. + console.log(data); + //Ab hier kann man entweder mit der Variable data arbeiten, oder eine funktion aufrufen mit data als Parameter. + + //Beispiel eines Funktionsaufrufs + //"showSomething(data);" + + }) + //Bei einem Fehler wird dieser gefangen "catch" und eine Fehlermeldung in der Konsole ausgegeben. + .catch(error => console.log(error)) + */ \ No newline at end of file diff --git a/js/script.js b/js/script.js new file mode 100644 index 0000000..ca9988a --- /dev/null +++ b/js/script.js @@ -0,0 +1,103 @@ +holeBenutzer(); +//holeWGs(); + +function holeBenutzer() { + //Benutzer ID und Token werden aus dem localstorage geholt. + let benutzerID = localStorage.getItem('benutzerID'); + let token = localStorage.getItem('token'); + + //BenutzerID wird in die Form gefügt + let formData = new FormData(); + formData.append('benutzerID', benutzerID); + + //fetchen php file + fetch("https://450731-3.web.fhgr.ch/php/holeBenutzer.php", + { + body: formData, + method: "post", + headers: { + //Verschlüsset Id und Token + 'Authorization': 'Basic ' + btoa(benutzerID + ':' + token), + + } + }) + + .then((res) => { + + // falls die Sitzung nicht abgelaufen ist, verarbeite die JSON antwort, Fehlermeldung abgeklärt. zb 404 Error. 200 OK + if (res.status >= 200 && res.status < 300) { + + return res.text(); + + } else { + //Rückleitung zu login.html + alert('Deine Sitzung ist abgelaufen. Du wirst auf die Login-Seite weitergeleitet.'); + window.location = "/login.html" + + } + + }) + .then((data) => { + //console.log(data); + + + // // mache etwas + + console.log(data[0].name); + + document.querySelector('#name').innerHTML = data[0].name; + + + + }) +} + + +/*function holeWGs(){ + + + let benutzerID = localStorage.getItem('benutzerID'); + let token = localStorage.getItem('token'); + + let formData = new FormData(); + formData.append('benutzerID', benutzerID); + + fetch("https://450731-3.web.fhgr.ch/php/holeWGs.php", + { + body: formData, + method: "post", + headers: { + + 'Authorization': 'Basic ' + btoa(benutzerID + ':' + token), + + } + }) + + .then((res) => { + + // falls die Sitzung nicht abgelaufen ist, verarbeite die JSON antwort + if (res.status >= 200 && res.status < 300) { + + return res.json(); + + } else { + + alert('Deine Sitzung ist abgelaufen. Du wirst auf die Login-Seite weitergeleitet.'); + window.location = "/login.html" + + } + + }) + .then((data) => { + + // mache etwas + console.log(data); + + //WGsAnzeigen(data); + + // console.log(data[0].name); + + + }) + + }*/ diff --git a/js/upload copy.js b/js/upload copy.js new file mode 100644 index 0000000..4b22d28 --- /dev/null +++ b/js/upload copy.js @@ -0,0 +1,134 @@ +//ERSTELLEN von Drag&Drop + + //FUNKTION Dag&Drop + //kopiert von https://dcode.domenade.com/tutorials/simple-drag-and-drop-file-upload-html-css-javascript + document.querySelectorAll(".ablageBereich_input").forEach((inputElement) => { + const ablageBereichElement = inputElement.closest(".ablageBereich"); + + ablageBereichElement.addEventListener("click", (e) => { + inputElement.click(); + }); + + inputElement.addEventListener("change", (e) => { + if (inputElement.files.length) { + updateVorschau(ablageBereichElement, inputElement.files[0]); + } + }); + + ablageBereichElement.addEventListener("dragover", (e) => { + e.preventDefault(); + ablageBereichElement.classList.add("ablageBereich--over"); + }); + + ["dragleave", "dragend"].forEach((type) => { + ablageBereichElement.addEventListener(type, (e) => { + ablageBereichElement.classList.remove("ablageBereich--over"); + }); + }); + + ablageBereichElement.addEventListener("drop", (e) => { + e.preventDefault(); + + if (e.dataTransfer.files.length) { + inputElement.files = e.dataTransfer.files; + updateVorschau(ablageBereichElement, e.dataTransfer.files[0]); + } + + ablageBereichElement.classList.remove("ablageBereich--over"); + }); + }); + + /** + * Update der Vorschau auf ein ablageBereichElement. + * + * @param {HTMLElement} ablageBereichElement + * @param {File} file + */ + + // FUNKTION updateVorschau + function updateVorschau(ablageBereichElement, file) { + let vorschauElement = ablageBereichElement.querySelector(".ablageBereich_vorschau"); + + //Erstes Mal-> info entfernen + if (ablageBereichElement.querySelector(".ablageBereich_info")) { + ablageBereichElement.querySelector(".ablageBereich_info").remove(); + } + + // Erstes Mal-> vorschauElement kreiren, wenn nicht vorhanden + if (!vorschauElement) { + vorschauElement = document.createElement("div"); + vorschauElement.classList.add("ablageBereich_vorschau"); + ablageBereichElement.appendChild(vorschauElement); + } + + vorschauElement.dataset.label = file.name; + + /* + //ANZEIGEN Vorschau wenn Bild Dokumente + if (file.type.startsWith("image/")) { + const reader = new FileReader(); + + reader.readAsDataURL(file); + reader.onload = () => { + vorschauElement.style.backgroundImage = `url('${reader.result}')`; + }; + } else { + vorschauElement.style.backgroundImage = null; + } + */ + + }// ENDE FUNKTION updateVorschau + + + + + +//FUNKTION hochladen() + +function hochladen(){ + + // ABSPEICHERN Variabeln Inputs +//let dokumentInput = document.querySelector("#ablageBereich_input"); + +let kursInput = document.querySelector("#kurs_input").value; +let standortInput = document.querySelector("#standort_input").value; + +//console.log(dokumentInput); +console.log(kursInput); +console.log(standortInput); + +//ERSTELLEN new FormData +let formData = new FormData(); + + +//HINZUFÜGEN inputELEMENT zu FormData object +//formData.append("dokument", dokumentInput.files[0]); + +//HINZUFÜGEN inputELEMENT zu FormData object +formData.append("kurs", kursInput); + +//HINZUFÜGEN inputELEMENT zu FormData object +formData.append("standort", standortInput); + + + +// ABSENDEN FormData object an den Server +fetch("https://450731-3.web.fhgr.ch/php/upload.php", { + method: "POST", + body: formData +}) + +.then((response) => { + + return response.text(); //Form angeben in der Antwort erhalten wollen + +}) + +.then((data) => { + console.log(data) + + document.querySelector('#nachricht').innerHTML = data; + +}) + +}; //ENDE FUNKTION hochladen() \ No newline at end of file diff --git a/js/upload.js b/js/upload.js new file mode 100644 index 0000000..3fb3f1b --- /dev/null +++ b/js/upload.js @@ -0,0 +1,299 @@ +let dokumentName; +let token = localStorage.getItem('token'); + +//ERSTELLEN von Drag&Drop auf ablageBereich_input +dragDrop(); + + +//FUNKTION dragDrop + function dragDrop(){ + + + //kopiert von https://dcode.domenade.com/tutorials/simple-drag-and-drop-file-upload-html-css-javascript + document.querySelectorAll("#ablageBereich_input").forEach((inputElement) => { + const ablageBereichElement = inputElement.closest(".ablageBereich"); + + ablageBereichElement.addEventListener("click", (e) => { + inputElement.click(); + }); + + inputElement.addEventListener("change", (e) => { + if (inputElement.files.length) { + updateVorschau(ablageBereichElement, inputElement.files[0]); + } + }); + + ablageBereichElement.addEventListener("dragover", (e) => { + e.preventDefault(); + ablageBereichElement.classList.add("ablageBereich--over"); + }); + + ["dragleave", "dragend"].forEach((type) => { + ablageBereichElement.addEventListener(type, (e) => { + ablageBereichElement.classList.remove("ablageBereich--over"); + }); + }); + + ablageBereichElement.addEventListener("drop", (e) => { + e.preventDefault(); + + if (e.dataTransfer.files.length) { + inputElement.files = e.dataTransfer.files; + updateVorschau(ablageBereichElement, e.dataTransfer.files[0]); + } + + ablageBereichElement.classList.remove("ablageBereich--over"); + }); + }); + + /** + * Update der Vorschau auf ein ablageBereichElement. + * + * @param {HTMLElement} ablageBereichElement + * @param {File} file + */ + + // FUNKTION updateVorschau + function updateVorschau(ablageBereichElement, file) { + let vorschauElement = ablageBereichElement.querySelector(".ablageBereich_vorschau"); + + //Erstes Mal-> info entfernen + if (ablageBereichElement.querySelector(".ablageBereich_info")) { + ablageBereichElement.querySelector(".ablageBereich_info").remove(); + } + + // Erstes Mal-> vorschauElement kreiren, wenn nicht vorhanden + if (!vorschauElement) { + vorschauElement = document.createElement("div"); + vorschauElement.classList.add("ablageBereich_vorschau"); + ablageBereichElement.appendChild(vorschauElement); + } + + vorschauElement.dataset.label = file.name; + + dokumentName = file.name; + + + + /* + //ANZEIGEN Vorschau wenn Bild Dokumente + if (file.type.startsWith("image/")) { + const reader = new FileReader(); + + reader.readAsDataURL(file); + reader.onload = () => { + vorschauElement.style.backgroundImage = `url('${reader.result}')`; + }; + } else { + vorschauElement.style.backgroundImage = null; + } + */ + + }// ENDE FUNKTION updateVorschau + + + };//ENDE FUNKTION dragDrop + + +//holeStandorte(); +holeKurse(); + + +/* +//FUNKTION holeStandorte +function holeStandorte(){ + +//ERSTELLEN formData Objekt +let formData = new FormData(); + +fetch("https://450731-3.web.fhgr.ch/php/holeStandorte.php", + { + body: formData, + method: "post", + + }) + + .then((res) => { + + return res.json(); + + }) + .then((data) => { + + console.log(data); + + standorteAnzeigen(data); + + + }) + + +} //ENDE FUNKTION holeStandorte() + + + +//FUNKTION standorteAnzeigen() +function standorteAnzeigen(data){ + console.log("standorteAnzeigen") + + + let standortInput = document.querySelector("#standort_input"); + + //LOESCHEN Standorte + standortInput.innerHTML = ""; + + //forEach-Loop + data.forEach(standort => { + + let standortInputOption = document.createElement('option'); + + console.log(standortInputOption); + + standortInputOption.innerHTML = standort.standort; + + + standortInput.appendChild(standortInputOption); + + });//ENDE forEach-Loop + +};//ENDE FUNKTION standorteAnzeigen() + +*/ + +//FUNKTION holeKurse() +function holeKurse(){ + +//ERSTELLEN formData Objekt +let formData = new FormData(); + +fetch("https://450731-3.web.fhgr.ch/php/holeKurse.php", + { + body: formData, + method: "post", + + }) + + .then((res) => { + + return res.json(); + + }) + .then((data) => { + + console.log(data); + + kurseAnzeigen(data); + + + }) + + +} //ENDE FUNKTION holeKurse() + + +//FUNKTION kurseAnzeigen() +function kurseAnzeigen(data){ + + console.log("kurseAnzeigen") + + + let kursInput = document.querySelector("#kurs_input"); + + //LOESCHEN Kurse + kursInput.innerHTML = ""; + + //forEach-Loop + data.forEach(kurs => { + + let kursInputOption = document.createElement('option'); + + console.log(kursInputOption); + + kursInputOption.innerHTML = kurs.name; + + + kursInput.appendChild(kursInputOption); + + });//ENDE forEach-Loop + +};//ENDE FUNKTION kurseAnzeigen() + + + + +//FUNKTION hochladen() +function dokumentHochladen(){ + + +// ABSPEICHERN Variabeln Inputs +//let dokumentInput = document.querySelector("#ablageBereich_input"); +let kursInput = document.querySelector("#kurs_input").value; +let standortInputWert = document.querySelector("#standort_input").value; +let benutzerID = localStorage.getItem("benutzerID"); + + + + +//console.log(dokumentInput); +console.log(benutzerID); +console.log(dokumentName); +console.log(kursInput); +console.log(standortInputWert); + +//ERSTELLEN new FormData +let formData = new FormData(); + + +//HINZUFÜGEN inputELEMENT zu FormData object +//formData.append("dokument", dokumentInput.files[0]); + +//HINZUFÜGEN inputELEMENT zu FormData object +formData.append("kursName", kursInput); + +//HINZUFÜGEN inputELEMENT zu FormData object +formData.append("standort", standortInputWert); + +//HINZUFÜGEN inputELEMENT zu FormData object +formData.append("benutzer_ID", benutzerID); + +//HINZUFÜGEN inputELEMENT zu FormData object +formData.append("dokumentName", dokumentName); + + + +// ABSENDEN FormData object an den Server +fetch("https://450731-3.web.fhgr.ch/php/upload.php", { + method: "POST", + body: formData, + headers: { + + 'Authorization': 'Basic ' + btoa(benutzerID + ':' + token), + +} +}) + +.then((response) => { + + //console.log(formData); + + return response.text(); //Form angeben in der Antwort erhalten wollen + +}) + +.then((data) => { + //console.log(data) + + document.querySelector('#nachricht').innerHTML = data; + +}) + +}; //ENDE FUNKTION dokumentHochladen() + +//FUNKTOIN logout +function logout(){ + + localStorage.clear(); + window.location = "/index.html"; + + +} \ No newline at end of file diff --git a/login.html b/login.html new file mode 100644 index 0000000..7d7ec82 --- /dev/null +++ b/login.html @@ -0,0 +1,37 @@ + + + + + + + Login + + + + + +
+

Login

+

Schön bist du da! Um etwas hochzuladen, musst du dich zu erst anmelden. Falls du noch kein Konto hast, registriere dich.

+ + +
+
+ +
+

+ + +

+ + +
+ + + + + + \ No newline at end of file diff --git a/php/aktualisiereProfil.php b/php/aktualisiereProfil.php new file mode 100644 index 0000000..1288641 --- /dev/null +++ b/php/aktualisiereProfil.php @@ -0,0 +1,15 @@ +prepare($sql); + +$erfolg = $stmt->execute([$name, $email, $handyNr]); diff --git a/php/autorisieren.php b/php/autorisieren.php new file mode 100644 index 0000000..26ec0ec --- /dev/null +++ b/php/autorisieren.php @@ -0,0 +1,59 @@ + (NOW() - INTERVAL 2 hour)"; + +$stmt = $pdo->prepare($sql); + +$erfolg = $stmt->execute(); + +if ($erfolg) { + + $resultate = $stmt->fetchAll(); + + $sitzungsID = $resultate[0]['ID']; + + $anzahlResultate = count($resultate); + + if ($anzahlResultate == 1) { + + //Sitzung verlängern + updateSession($sitzungsID); + + } else { + + //schicke eine Antwort ans Script «nicht eingeloggt», direkt an Login seite weiter + exit(http_response_code(401)); + + } + +} +function updateSession($sitzungsID) +{ + require('config.php'); + + //setze den Timpstamp auf jetzt, wo die ID eine ID ist + $sql = "UPDATE Session SET timestamp = now() WHERE ID=?"; + $stmt = $pdo->prepare($sql); + $stmt->execute([$sitzungsID]); +} + +function loescheSessions() +{ + require('config.php'); + + + //Bei Delete braucht es kein Stern für all + $sql = "DELETE FROM Session WHERE timestamp < (NOW() - INTERVAL 2 HOUR)"; + + $stmt = $pdo->prepare($sql); + $stmt->execute(); + +} \ No newline at end of file diff --git a/php/config.php b/php/config.php new file mode 100644 index 0000000..7c69ebc --- /dev/null +++ b/php/config.php @@ -0,0 +1,9 @@ +exec("set names utf8"); diff --git a/php/holeBenutzer.php b/php/holeBenutzer.php new file mode 100644 index 0000000..fb85f4e --- /dev/null +++ b/php/holeBenutzer.php @@ -0,0 +1,22 @@ +prepare($sql); + +$erfolg = $stmt->execute(); + +if ($erfolg) { + + $array = $stmt->fetchAll(); + + $jsonArray = json_encode($array); + + print_r($jsonArray); +} \ No newline at end of file diff --git a/php/holeKurse.php b/php/holeKurse.php new file mode 100644 index 0000000..79dddf0 --- /dev/null +++ b/php/holeKurse.php @@ -0,0 +1,32 @@ +prepare($sql); + +$erfolg = $stmt->execute(); + +if ($erfolg) { + + $array = $stmt->fetchAll(); + + $jsonArray = json_encode($array); + + print_r($jsonArray); +} + + + diff --git a/php/holeProfildaten.php b/php/holeProfildaten.php new file mode 100644 index 0000000..8a27714 --- /dev/null +++ b/php/holeProfildaten.php @@ -0,0 +1,21 @@ +prepare($sql); + +$erfolg = $stmt->execute(); + +if ($erfolg) { + + $array = $stmt->fetchAll(); + + $jsonArray = json_encode($array); + + print_r($jsonArray); +} \ No newline at end of file diff --git a/php/holeStandorte.php b/php/holeStandorte.php new file mode 100644 index 0000000..7a2c60b --- /dev/null +++ b/php/holeStandorte.php @@ -0,0 +1,32 @@ +prepare($sql); + +$erfolg = $stmt->execute(); + +if ($erfolg) { + + $array = $stmt->fetchAll(); + + $jsonArray = json_encode($array); + + print_r($jsonArray); +} + + + diff --git a/php/holeUser b/php/holeUser new file mode 100644 index 0000000..1ba5c04 --- /dev/null +++ b/php/holeUser @@ -0,0 +1,22 @@ +prepare($sql); + +$erfolg = $stmt->execute(); + +if ($erfolg) { + + $array = $stmt->fetchAll(); + + $jsonArray = json_encode($array); + + print_r($jsonArray); +} \ No newline at end of file diff --git a/php/holeUser.php b/php/holeUser.php new file mode 100644 index 0000000..1ba5c04 --- /dev/null +++ b/php/holeUser.php @@ -0,0 +1,22 @@ +prepare($sql); + +$erfolg = $stmt->execute(); + +if ($erfolg) { + + $array = $stmt->fetchAll(); + + $jsonArray = json_encode($array); + + print_r($jsonArray); +} \ No newline at end of file diff --git a/php/index.php b/php/index.php new file mode 100644 index 0000000..f520ccd --- /dev/null +++ b/php/index.php @@ -0,0 +1,32 @@ +prepare($sql); + +$erfolg = $stmt->execute(); + +if ($erfolg) { + + $array = $stmt->fetchAll(); + + $jsonArray = json_encode($array); + + print_r($jsonArray); +} + + + diff --git a/php/loescheProfil.php b/php/loescheProfil.php new file mode 100644 index 0000000..f34f653 --- /dev/null +++ b/php/loescheProfil.php @@ -0,0 +1,63 @@ +prepare($sql); +$erfolg = $stmt->execute([$benutzerID]); + + +$sql = "DELETE FROM Benutzer WHERE ID = ?"; +$stmt = $pdo->prepare($sql); +$erfolg = $stmt->execute([$benutzerID]); + + +if ($erfolg) { + + print_r('Erfolgreich gelöscht'); + +} else { + + print_r($erfolg); + +}; + +// falls erfolg true bzw. 1 ist +// lösche ebenfalls die Hashtags zur WG +/* +if ($erfolg) { + + loescheHashtags($wgID); + +} else { + + print_r($erfolg); +}; + + +function loescheHashtags($wgID){ + + require('config.php'); + + // lösche die alten hashtags + $sql = "DELETE FROM wg_hat_hashtag WHERE wg_id = ?"; + $stmt = $pdo->prepare($sql); + + $erfolg = $stmt->execute([$wgID]); + + if ($erfolg){ + + echo 'WG und Hashtags wurden gelöscht.'; + } else { + + $erfolg; + + } + +} +*/ \ No newline at end of file diff --git a/php/login.php b/php/login.php new file mode 100644 index 0000000..8354e8d --- /dev/null +++ b/php/login.php @@ -0,0 +1,119 @@ +prepare($sql); + +$erfolg = $stmt->execute(); + +//Wenn Statement erfolgreich… +if ($erfolg) { + + //gehe in Datenbank und hole alle Resultate + $array = $stmt->fetchAll(); + + //Hier werden die Resultate gezählt, welche übereinstimmen. Das ist eine Php Funktion + $anzahlResultate = count($array); + + + if ($anzahlResultate == 1){ + + //Wenn Resultat == 1, nimm was in der Tabelle bei Passwort steht und gebe den Wert an die Variabel Passwort + $dbPasswort = $array[0]['passwort']; + //Das gleiche mit der ID + $benutzerID = $array[0]['ID']; + //diese Parameter geben wir der Funktion prüfe PAsswort weiter + pruefepasswort($passwort, $dbPasswort, $benutzerID); + + + } else { + //Fehlermeldung wenn Email nicht korrekt. ID und Token als 0, weil undefind = nicht eingeloggt. Wird im localstorage als 0/0 ausgegeben. + sendeAntwort('Diese E-Mail existiert nicht.', 0, 0); + + + + } + + +} + +function pruefepasswort($benutzerPasswort, $dbPasswort, $benutzerID){ + + //Püft, ob das Benutzer Passwort mit dem Datenbankpasswort überein stimmt. Prüfen öb beide den gleichen Hash zurück geben. + if (password_verify($benutzerPasswort, $dbPasswort)) { + + //erstelle einen Token, wenn Email und Passwort korrekt. BenutzerID schicken wir gleich weiter an die Funktion erstelleToken + erstelleToken($benutzerID); + + + + } else { + + sendeAntwort('Ungültiges Passwort', 0, 0); + + + } + +} + +//Eintrag in Sessiontabelle +function erstelleToken($benutzerID){ + + require('config.php'); + + //Rufe die Funktion generate… mit dem Parameter 42 auf, und speichere den Return in die Variable 'Token', dieser wird in die Tabelle eingefügt. + + $token = generateRandomString(42); + + //Infos werden in die Session Tabelle eingefügt. Passende Benutzer ID und Token Nummer, Timestamp erfolgt automatisch + $sql = "INSERT INTO Session (benutzer_ID, token) VALUES (:benutzer_ID, :token)"; + + /*pdo=Datenbankverbindung die wir im config definiert haben. bereite dich vor, dieses SQL Statement auszuführen*/ + $stmt = $pdo->prepare($sql); + + $erfolg = $stmt->execute(array('benutzer_ID' => $benutzerID, 'token' => $token)); + if ($erfolg) { + //wenn alles geklappt hat + // print_r('Session erfolgreich erstellt.'); + sendeAntwort('Session erfolgreich erstellt.', $benutzerID, $token); + + } else { + //Fehlermeldung, wenn nicht erfolgreich + print_r($erfolg); + + sendeAntwort('Datenbankfehlerw: ' . $erfolg, 0, 0); + + }; + + +} + + +//Funktion zum einem Random String erstellen +function generateRandomString($length) { + //alle Characters, aus den ein Hash generiert werden soll + $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; + $charactersLength = strlen($characters); + $randomString = ''; + for ($i = 0; $i < $length; $i++) { + $randomString .= $characters[rand(0, $charactersLength - 1)]; + } + //Return heisst es gibt was zurück, dort wo man es angefragt hat. + return $randomString; +} + +function sendeAntwort($nachricht, $benutzerID, $token){ + + $antwort = [$nachricht, $benutzerID, $token]; + + $antwort = json_encode($antwort); + + print($antwort); + +} diff --git a/php/login_copy1.php b/php/login_copy1.php new file mode 100644 index 0000000..8354e8d --- /dev/null +++ b/php/login_copy1.php @@ -0,0 +1,119 @@ +prepare($sql); + +$erfolg = $stmt->execute(); + +//Wenn Statement erfolgreich… +if ($erfolg) { + + //gehe in Datenbank und hole alle Resultate + $array = $stmt->fetchAll(); + + //Hier werden die Resultate gezählt, welche übereinstimmen. Das ist eine Php Funktion + $anzahlResultate = count($array); + + + if ($anzahlResultate == 1){ + + //Wenn Resultat == 1, nimm was in der Tabelle bei Passwort steht und gebe den Wert an die Variabel Passwort + $dbPasswort = $array[0]['passwort']; + //Das gleiche mit der ID + $benutzerID = $array[0]['ID']; + //diese Parameter geben wir der Funktion prüfe PAsswort weiter + pruefepasswort($passwort, $dbPasswort, $benutzerID); + + + } else { + //Fehlermeldung wenn Email nicht korrekt. ID und Token als 0, weil undefind = nicht eingeloggt. Wird im localstorage als 0/0 ausgegeben. + sendeAntwort('Diese E-Mail existiert nicht.', 0, 0); + + + + } + + +} + +function pruefepasswort($benutzerPasswort, $dbPasswort, $benutzerID){ + + //Püft, ob das Benutzer Passwort mit dem Datenbankpasswort überein stimmt. Prüfen öb beide den gleichen Hash zurück geben. + if (password_verify($benutzerPasswort, $dbPasswort)) { + + //erstelle einen Token, wenn Email und Passwort korrekt. BenutzerID schicken wir gleich weiter an die Funktion erstelleToken + erstelleToken($benutzerID); + + + + } else { + + sendeAntwort('Ungültiges Passwort', 0, 0); + + + } + +} + +//Eintrag in Sessiontabelle +function erstelleToken($benutzerID){ + + require('config.php'); + + //Rufe die Funktion generate… mit dem Parameter 42 auf, und speichere den Return in die Variable 'Token', dieser wird in die Tabelle eingefügt. + + $token = generateRandomString(42); + + //Infos werden in die Session Tabelle eingefügt. Passende Benutzer ID und Token Nummer, Timestamp erfolgt automatisch + $sql = "INSERT INTO Session (benutzer_ID, token) VALUES (:benutzer_ID, :token)"; + + /*pdo=Datenbankverbindung die wir im config definiert haben. bereite dich vor, dieses SQL Statement auszuführen*/ + $stmt = $pdo->prepare($sql); + + $erfolg = $stmt->execute(array('benutzer_ID' => $benutzerID, 'token' => $token)); + if ($erfolg) { + //wenn alles geklappt hat + // print_r('Session erfolgreich erstellt.'); + sendeAntwort('Session erfolgreich erstellt.', $benutzerID, $token); + + } else { + //Fehlermeldung, wenn nicht erfolgreich + print_r($erfolg); + + sendeAntwort('Datenbankfehlerw: ' . $erfolg, 0, 0); + + }; + + +} + + +//Funktion zum einem Random String erstellen +function generateRandomString($length) { + //alle Characters, aus den ein Hash generiert werden soll + $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; + $charactersLength = strlen($characters); + $randomString = ''; + for ($i = 0; $i < $length; $i++) { + $randomString .= $characters[rand(0, $charactersLength - 1)]; + } + //Return heisst es gibt was zurück, dort wo man es angefragt hat. + return $randomString; +} + +function sendeAntwort($nachricht, $benutzerID, $token){ + + $antwort = [$nachricht, $benutzerID, $token]; + + $antwort = json_encode($antwort); + + print($antwort); + +} diff --git a/php/registrieren.php b/php/registrieren.php new file mode 100644 index 0000000..5a7aedd --- /dev/null +++ b/php/registrieren.php @@ -0,0 +1,38 @@ +prepare($sql); +/*definiert nochmals, was wir ausführen möchten, mit welchen Namen, also Variabel Email greiffen wir auf Email zu, +Platzhalter ohne Dollarzeichen, Wir definieren Variabeln und nutzen sie im execute +Wenn alles geklappt hat, wir erfolg = 1 = true */ +$erfolg = $stmt->execute(array('Name' => $benutzername, 'HandyNr' => $handyNr, 'Email' => $email, 'Passwort' => $passwort)); +//Könnte auch schreiben if erfolg==1 +if ($erfolg) { + + print_r('Registrierung erfolgreich.'); + +} else { +//Fehlermeldung, wenn nicht erfolgreich + print_r($erfolg); +}; \ No newline at end of file diff --git a/php/upload.php b/php/upload.php new file mode 100644 index 0000000..e1fe017 --- /dev/null +++ b/php/upload.php @@ -0,0 +1,23 @@ +prepare($sql); +$erfolg = $stmt->execute(array('Standort' => $standort, 'KursName' => $kursName,'Benutzer_ID' => $benutzer_ID,'dokumentName' => $dokumentName)); + +if ($erfolg) { + print_r('Upload erfolgreich.'); +} else { + print_r($erfolg); +}; + diff --git a/php/upload_wip3.php b/php/upload_wip3.php new file mode 100644 index 0000000..e4aac57 --- /dev/null +++ b/php/upload_wip3.php @@ -0,0 +1,198 @@ +prepare($sql); +$erfolg = $stmt->execute(array('Standort' => $standort, 'KursName' => $kursName,'Benutzer_ID' => $benutzer_ID,'dokumentName' => $dokumentName)); + +if ($erfolg) { + print_r('Registrierung erfolgreich.'); +} else { + print_r($erfolg); +}; + + + + +//INSERT Variable $standort----------------------------------------------------------------------------------------------------------------- +// //ABSPEICHERN Variable $standort +$standort = $_POST['standort']; + + //$standort = "testOrt"; + + //EINFUEGEN in Tabelle PDF in Spalte standort Platzhalter :Standort + /*$sql = "INSERT INTO PDF (standort) VALUES (:Standort) AND + INSERT INTO PDF (kurs_ID) SELECT ID FROM Kurs WHERE name = (:kursName) "; +*/ + $sql = "INSERT INTO PDF (standort) VALUES (:Standort)"; + + //VORBEREITEN SQL-Statement auszuführen, *pdo=Datenbankverbindung, im config definiert + $stmt = $pdo->prepare($sql); + + //AUSFUEHREN PDO-Statement, mit welcher Variabel erfolgt Zugriff auf Platzhalter ohne Dollarzeichen + $erfolg = $stmt->execute(array('Standort' => $standort) ); + + //$erfolg = $stmt->execute(array('Standort' => $standort) ); + + //PRUEFEN ob Zugriff auf DB erfolgreich, Meldung ausgeben + //Könnte auch schreiben if erfolg==1 + if ($erfolg) { + + print_r('Upload erfolgreich.'); + + } else { + //Fehlermeldung, wenn nicht erfolgreich + print_r($erfolg); + }; + + + +//INSERT Variable $kursName----------------------------------------------------------------------------------------------------------------- +// //ABSPEICHERN Variable $kursName +$kursName = $_POST['kursName']; + + //$standort = "testOrt"; + + //EINFUEGEN in Tabelle PDF in Spalte standort Platzhalter :Standort + /*$sql = "INSERT INTO PDF (standort) VALUES (:Standort) AND + INSERT INTO PDF (kurs_ID) SELECT ID FROM Kurs WHERE name = (:kursName) "; +*/ + $sql = "INSERT INTO PDF (kurs_ID) SELECT ID FROM Kurs WHERE name = (:kursName)"; + + //VORBEREITEN SQL-Statement auszuführen, *pdo=Datenbankverbindung, im config definiert + $stmt = $pdo->prepare($sql); + + //AUSFUEHREN PDO-Statement, mit welcher Variabel erfolgt Zugriff auf Platzhalter ohne Dollarzeichen + $erfolg = $stmt->execute(array('kursName' => $kursName) ); + + //$erfolg = $stmt->execute(array('Standort' => $standort) ); + + //PRUEFEN ob Zugriff auf DB erfolgreich, Meldung ausgeben + //Könnte auch schreiben if erfolg==1 + if ($erfolg) { + + print_r('Upload erfolgreich.'); + + } else { + //Fehlermeldung, wenn nicht erfolgreich + print_r($erfolg); + }; + + +//INSERT Variable $benutzer_ID----------------------------------------------------------------------------------------------------------------- +// //ABSPEICHERN Variable $benutzer_ID +$benutzer_ID = $_POST['benutzer_ID']; + + //$standort = "testOrt"; + + //EINFUEGEN in Tabelle PDF in Spalte standort Platzhalter :Standort + /*$sql = "INSERT INTO PDF (standort) VALUES (:Standort) AND + INSERT INTO PDF (kurs_ID) SELECT ID FROM Kurs WHERE name = (:kursName) "; +*/ +$sql = "INSERT INTO PDF (benutzer_ID) VALUES (:Benutzer_ID)"; + + //VORBEREITEN SQL-Statement auszuführen, *pdo=Datenbankverbindung, im config definiert + $stmt = $pdo->prepare($sql); + + //AUSFUEHREN PDO-Statement, mit welcher Variabel erfolgt Zugriff auf Platzhalter ohne Dollarzeichen + $erfolg = $stmt->execute(array('Benutzer_ID' => $benutzer_ID) ); + + //$erfolg = $stmt->execute(array('Standort' => $standort) ); + + //PRUEFEN ob Zugriff auf DB erfolgreich, Meldung ausgeben + //Könnte auch schreiben if erfolg==1 + if ($erfolg) { + + print_r('Upload erfolgreich.'); + + } else { + //Fehlermeldung, wenn nicht erfolgreich + print_r($erfolg); + }; + + + + + + +/* + +//INSERT Variable $dokumentName----------------------------------------------------------------------------------------------------------------- +// //ABSPEICHERN Variable $dokumentName + + + + //$standort = "testOrt"; + + //EINFUEGEN in Tabelle PDF in Spalte standort Platzhalter :Standort + /*$sql = "INSERT INTO PDF (standort) VALUES (:Standort) AND + INSERT INTO PDF (kurs_ID) SELECT ID FROM Kurs WHERE name = (:kursName) "; + + +*/ + +$dokumentName = $_POST['dokumentName']; + +$sql = "INSERT INTO PDF (dokument) VALUES (:DokumentName)"; + + //VORBEREITEN SQL-Statement auszuführen, *pdo=Datenbankverbindung, im config definiert + $stmt = $pdo->prepare($sql); + + //AUSFUEHREN PDO-Statement, mit welcher Variabel erfolgt Zugriff auf Platzhalter ohne Dollarzeichen + $erfolg = $stmt->execute(array('DokumentName' => $dokumentName) ); + + //$erfolg = $stmt->execute(array('Standort' => $standort) ); + + //PRUEFEN ob Zugriff auf DB erfolgreich, Meldung ausgeben + //Könnte auch schreiben if erfolg==1 + if ($erfolg) { + + print_r('Upload erfolgreich.'); + + } else { + //Fehlermeldung, wenn nicht erfolgreich + print_r($erfolg); + }; + + + +/* +//SELECT Infos Standort----------------------------------------------------------------------------------------------------------------- + + +//EINFUEGEN in Tabelle PDF in Spalte standort Platzhalter :Standort +$sql = "SELECT DISTINCT standort FROM PDF"; + +$stmt = $pdo->prepare($sql); + +$erfolg = $stmt->execute(); + +if ($erfolg) { + + $array = $stmt->fetchAll(); + + $jsonArray = json_encode($array); + + print_r($jsonArray); +} + + + +*/ \ No newline at end of file diff --git a/profil.html b/profil.html new file mode 100644 index 0000000..b121dea --- /dev/null +++ b/profil.html @@ -0,0 +1,84 @@ + + + + + + + Profil + + + + + + + +
+ +
+ +

Profil

+ +
+ +
+ + +
+ + + +
+ +

+ + +
+ +
+
+ +
+
+ +
+
+ + + + + +
+ + + + + +

+ + + + + + + + + + \ No newline at end of file diff --git a/registrieren.html b/registrieren.html new file mode 100644 index 0000000..0106137 --- /dev/null +++ b/registrieren.html @@ -0,0 +1,42 @@ + + + + + + + Registrierung + + + + +
+

Registrierung

+

willkommen bei ZAEMMP Registriere dich hier!

+ +
+
+ +
+

+ + +
+
+ +
+

+ + +

+ + +
+ + + + + diff --git a/robots.txt b/robots.txt new file mode 100644 index 0000000..7d329b1 --- /dev/null +++ b/robots.txt @@ -0,0 +1 @@ +User-agent: * diff --git a/standard_index.html b/standard_index.html new file mode 100644 index 0000000..266094d --- /dev/null +++ b/standard_index.html @@ -0,0 +1,60 @@ + + + + Welcome! + + + + + + +
+ +
+

This is the default index page of your website.

+

This file may be deleted or overwritten without any difficulty. This is produced by the file index.html in the web directory.

+

For questions or problems please contact support.

+
+ +
+ + diff --git a/test.html b/test.html new file mode 100644 index 0000000..e69de29 diff --git a/upload.html b/upload.html new file mode 100644 index 0000000..7012636 --- /dev/null +++ b/upload.html @@ -0,0 +1,105 @@ + + + + + + + zaeMMP + + + + + + + +
+ +
+

Profil

+ +
+ +
+ + +
+ + + +
+ +

Upload

+ + +
+
+
+ reinziehen oder klicken um auszuwählen + +
+ +
+
+ +
+ + + + + +
+ +
+ + + + + + + + + + +
+ +

+ + + + + + + + + + + + + + + + \ No newline at end of file