7 Commits

Author SHA1 Message Date
admin 4fac3121f3 Fehler und Ausnahmekonzept 2026-05-05 09:27:45 +00:00
admin 0556dec11d Vorbereitung Version 2 2026-05-05 08:28:50 +00:00
admin 88b46ecc06 Hausarbeit: Erweiterung Index datei mit Session und Cookies 2026-04-28 07:41:50 +00:00
admin 6b3e5a61e3 Fehlerbereinigung Datenbank (pw varchar laenge) Registrierung und Login 2026-04-27 09:05:37 +00:00
admin 1ae601801e Hinzufügen und bearbeiten Session únd Cookies sowohl inhalt Login/regfehler Navmitglieder 2026-04-26 14:45:02 +00:00
admin 3b462c5f0f Setzen von db Verbindung 2026-04-17 18:34:41 +00:00
admin 0c41aef11c hinzufügen Login und Registrierung
in dem Commit wurden die Formularfunktionen für Regitrierung und Login hinzugefügt.
Ebenfalls die Prüfung auf Plausabilität.
Dies wurde duch Objektorientierte Programierung hinzugefügt.

Somit geht das Projekt in Version 2
2026-01-03 17:41:14 +00:00
25 changed files with 983 additions and 29 deletions
+1
View File
@@ -3,3 +3,4 @@
### Version 1 ### Version 1
hier wird das SGD Projekt hochgeladen und verwaltet hier wird das SGD Projekt hochgeladen und verwaltet
+21 -17
View File
@@ -14447,7 +14447,7 @@ CREATE TABLE `pma__export_templates` (
`template_data` text NOT NULL, `template_data` text NOT NULL,
PRIMARY KEY (`id`), PRIMARY KEY (`id`),
UNIQUE KEY `u_user_type_template` (`username`,`export_type`,`template_name`) UNIQUE KEY `u_user_type_template` (`username`,`export_type`,`template_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin COMMENT='Saved export templates'; ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin COMMENT='Saved export templates';
/*!40101 SET character_set_client = @saved_cs_client */; /*!40101 SET character_set_client = @saved_cs_client */;
-- --
@@ -14456,6 +14456,8 @@ CREATE TABLE `pma__export_templates` (
LOCK TABLES `pma__export_templates` WRITE; LOCK TABLES `pma__export_templates` WRITE;
/*!40000 ALTER TABLE `pma__export_templates` DISABLE KEYS */; /*!40000 ALTER TABLE `pma__export_templates` DISABLE KEYS */;
INSERT INTO `pma__export_templates` VALUES
(1,'root','database','meine','{\"quick_or_custom\":\"quick\",\"what\":\"sql\",\"structure_or_data_forced\":\"0\",\"table_select[]\":[\"antworten\",\"fragen\",\"mitglieder\"],\"table_structure[]\":[\"antworten\",\"fragen\",\"mitglieder\"],\"table_data[]\":[\"antworten\",\"fragen\",\"mitglieder\"],\"aliases_new\":\"\",\"output_format\":\"sendit\",\"filename_template\":\"@DATABASE@\",\"remember_template\":\"on\",\"charset\":\"utf-8\",\"compression\":\"none\",\"maxsize\":\"\",\"codegen_structure_or_data\":\"data\",\"codegen_format\":\"0\",\"csv_separator\":\",\",\"csv_enclosed\":\"\\\"\",\"csv_escaped\":\"\\\"\",\"csv_terminated\":\"AUTO\",\"csv_null\":\"NULL\",\"csv_columns\":\"something\",\"csv_structure_or_data\":\"data\",\"excel_null\":\"NULL\",\"excel_columns\":\"something\",\"excel_edition\":\"win\",\"excel_structure_or_data\":\"data\",\"json_structure_or_data\":\"data\",\"json_unicode\":\"something\",\"latex_caption\":\"something\",\"latex_structure_or_data\":\"structure_and_data\",\"latex_structure_caption\":\"Struktur der Tabelle @TABLE@\",\"latex_structure_continued_caption\":\"Struktur der Tabelle @TABLE@ (Fortsetzung)\",\"latex_structure_label\":\"tab:@TABLE@-structure\",\"latex_relation\":\"something\",\"latex_comments\":\"something\",\"latex_mime\":\"something\",\"latex_columns\":\"something\",\"latex_data_caption\":\"Inhalt der Tabelle @TABLE@\",\"latex_data_continued_caption\":\"Inhalt der Tabelle @TABLE@ (Fortsetzung)\",\"latex_data_label\":\"tab:@TABLE@-data\",\"latex_null\":\"\\\\textit{NULL}\",\"mediawiki_structure_or_data\":\"structure_and_data\",\"mediawiki_caption\":\"something\",\"mediawiki_headers\":\"something\",\"htmlword_structure_or_data\":\"structure_and_data\",\"htmlword_null\":\"NULL\",\"ods_null\":\"NULL\",\"ods_structure_or_data\":\"data\",\"odt_structure_or_data\":\"structure_and_data\",\"odt_relation\":\"something\",\"odt_comments\":\"something\",\"odt_mime\":\"something\",\"odt_columns\":\"something\",\"odt_null\":\"NULL\",\"pdf_report_title\":\"\",\"pdf_structure_or_data\":\"structure_and_data\",\"phparray_structure_or_data\":\"data\",\"sql_include_comments\":\"something\",\"sql_header_comment\":\"\",\"sql_use_transaction\":\"something\",\"sql_compatibility\":\"NONE\",\"sql_structure_or_data\":\"structure_and_data\",\"sql_create_table\":\"something\",\"sql_auto_increment\":\"something\",\"sql_create_view\":\"something\",\"sql_procedure_function\":\"something\",\"sql_create_trigger\":\"something\",\"sql_backquotes\":\"something\",\"sql_type\":\"INSERT\",\"sql_insert_syntax\":\"both\",\"sql_max_query_size\":\"50000\",\"sql_hex_for_binary\":\"something\",\"sql_utc_time\":\"something\",\"texytext_structure_or_data\":\"structure_and_data\",\"texytext_null\":\"NULL\",\"xml_structure_or_data\":\"data\",\"xml_export_events\":\"something\",\"xml_export_functions\":\"something\",\"xml_export_procedures\":\"something\",\"xml_export_tables\":\"something\",\"xml_export_triggers\":\"something\",\"xml_export_views\":\"something\",\"xml_export_contents\":\"something\",\"yaml_structure_or_data\":\"data\",\"\":null,\"lock_tables\":null,\"as_separate_files\":null,\"csv_removeCRLF\":null,\"excel_removeCRLF\":null,\"json_pretty_print\":null,\"htmlword_columns\":null,\"ods_columns\":null,\"sql_dates\":null,\"sql_relation\":null,\"sql_mime\":null,\"sql_disable_fk\":null,\"sql_views_as_tables\":null,\"sql_metadata\":null,\"sql_create_database\":null,\"sql_drop_table\":null,\"sql_if_not_exists\":null,\"sql_simple_view_export\":null,\"sql_view_current_user\":null,\"sql_or_replace_view\":null,\"sql_truncate\":null,\"sql_delayed\":null,\"sql_ignore\":null,\"texytext_columns\":null}');
/*!40000 ALTER TABLE `pma__export_templates` ENABLE KEYS */; /*!40000 ALTER TABLE `pma__export_templates` ENABLE KEYS */;
UNLOCK TABLES; UNLOCK TABLES;
@@ -14584,7 +14586,7 @@ CREATE TABLE `pma__recent` (
LOCK TABLES `pma__recent` WRITE; LOCK TABLES `pma__recent` WRITE;
/*!40000 ALTER TABLE `pma__recent` DISABLE KEYS */; /*!40000 ALTER TABLE `pma__recent` DISABLE KEYS */;
INSERT INTO `pma__recent` VALUES INSERT INTO `pma__recent` VALUES
('root','[{\"db\":\"test\",\"table\":\"test\"},{\"db\":\"sozialesnetzwerk\",\"table\":\"antworten\"},{\"db\":\"sozialesnetzwerk\",\"table\":\"fragen\"},{\"db\":\"sozialesnetzwerk\",\"table\":\"mitglieder\"},{\"db\":\"bestelldatenbank\",\"table\":\"artikel\"},{\"db\":\"bestelldatenbank\",\"table\":\"positionen\"},{\"db\":\"kverwaltung\",\"table\":\"buchung\"},{\"db\":\"kverwaltung\",\"table\":\"kurs\"},{\"db\":\"kursverwaltung\",\"table\":\"buchung\"},{\"db\":\"nation\",\"table\":\"country_stats\"}]'); ('root','[{\"db\":\"sozialesnetzwerk\",\"table\":\"mitglieder\"},{\"db\":\"sozialesnetzwerk\",\"table\":\"fragen\"},{\"db\":\"sozialesnetzwerk\",\"table\":\"antworten\"},{\"db\":\"test\",\"table\":\"test\"},{\"db\":\"kursverwaltung\",\"table\":\"teilnehmer\"},{\"db\":\"kursverwaltung\",\"table\":\"kurs\"},{\"db\":\"kursverwaltung\",\"table\":\"buchung\"},{\"db\":\"bestelldatenbank\",\"table\":\"artikel\"},{\"db\":\"bestelldatenbank\",\"table\":\"positionen\"},{\"db\":\"kverwaltung\",\"table\":\"buchung\"}]');
/*!40000 ALTER TABLE `pma__recent` ENABLE KEYS */; /*!40000 ALTER TABLE `pma__recent` ENABLE KEYS */;
UNLOCK TABLES; UNLOCK TABLES;
@@ -14782,7 +14784,7 @@ CREATE TABLE `pma__userconfig` (
LOCK TABLES `pma__userconfig` WRITE; LOCK TABLES `pma__userconfig` WRITE;
/*!40000 ALTER TABLE `pma__userconfig` DISABLE KEYS */; /*!40000 ALTER TABLE `pma__userconfig` DISABLE KEYS */;
INSERT INTO `pma__userconfig` VALUES INSERT INTO `pma__userconfig` VALUES
('root','2025-12-31 18:40:48','{\"Console\\/Mode\":\"collapse\",\"lang\":\"de\"}'); ('root','2026-04-27 08:17:01','{\"Console\\/Mode\":\"collapse\",\"lang\":\"de\"}');
/*!40000 ALTER TABLE `pma__userconfig` ENABLE KEYS */; /*!40000 ALTER TABLE `pma__userconfig` ENABLE KEYS */;
UNLOCK TABLES; UNLOCK TABLES;
@@ -14902,21 +14904,21 @@ DROP TABLE IF EXISTS `mitglieder`;
/*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */; /*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `mitglieder` ( CREATE TABLE `mitglieder` (
`id_mitglied` int(11) NOT NULL AUTO_INCREMENT, `id_mitglied` int(11) NOT NULL AUTO_INCREMENT COMMENT 'Die ID, die als eindeutiger Schlüssel jedes Datensatz dient.',
`name` varchar(30) NOT NULL, `name` varchar(30) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
`vorname` varchar(30) NOT NULL, `vorname` varchar(30) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
`email` varchar(30) NOT NULL, `email` varchar(30) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
`fragen` int(11) NOT NULL, `fragen` int(11) DEFAULT NULL COMMENT 'Anzahl der gestellten Fragen',
`antworten` int(11) NOT NULL, `antworten` int(11) DEFAULT NULL COMMENT 'Anzahl der gegebenen Antworten',
`zusatzinfos` longtext NOT NULL, `zusatzinfos` longtext CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT 'Optionale Informationen',
`rolle` enum('Admin','Mitglied') NOT NULL, `rolle` enum('Admin','Mitglied') CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT 'Informationen, welche Rolle das Mitglied in dem Netzwerk führt. Admin ist 0 und Mitglied 1.',
`userid` varchar(20) NOT NULL, `userid` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
`pw` varchar(50) NOT NULL, `pw` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL COMMENT 'Das Password, das MD5-verschlüsselt gespeichert werden soll.',
`beitritt` timestamp NOT NULL, `beitritt` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp() COMMENT 'Zeitpunkt der Anmeldung',
`letzterlogin` timestamp NOT NULL, `letzterlogin` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp() COMMENT 'Zeitpunkt des letzten logins.',
PRIMARY KEY (`id_mitglied`), PRIMARY KEY (`id_mitglied`),
UNIQUE KEY `userid` (`userid`) UNIQUE KEY `userid` (`userid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; ) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
/*!40101 SET character_set_client = @saved_cs_client */; /*!40101 SET character_set_client = @saved_cs_client */;
-- --
@@ -14925,6 +14927,8 @@ CREATE TABLE `mitglieder` (
LOCK TABLES `mitglieder` WRITE; LOCK TABLES `mitglieder` WRITE;
/*!40000 ALTER TABLE `mitglieder` DISABLE KEYS */; /*!40000 ALTER TABLE `mitglieder` DISABLE KEYS */;
INSERT INTO `mitglieder` VALUES
(18,'Muenzer','Christopher','christopher@cemunz.de',NULL,NULL,' ','Mitglied','Cemunz20','820466a89565d6288970a0a2d763c223','2026-04-27 08:48:41','2026-04-27 08:48:41');
/*!40000 ALTER TABLE `mitglieder` ENABLE KEYS */; /*!40000 ALTER TABLE `mitglieder` ENABLE KEYS */;
UNLOCK TABLES; UNLOCK TABLES;
@@ -15048,4 +15052,4 @@ USE `test`;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
-- Dump completed on 2026-01-02 11:43:57 -- Dump completed on 2026-04-27 9:10:52
+14
View File
@@ -0,0 +1,14 @@
<?php
$dbuser = 'root';
$dbpw = 'Feuerwehr1!';
$dbhost = 'localhost';
$dbname = 'sozialesnetzwerk';
try {
$pdo = new PDO ("mysql:dbname=$dbname;host=$dbhost", $dbuser, $dbpw);
} catch (PDOException $e) {
die ($e->getMessage());
}
?>
+31 -4
View File
@@ -1,4 +1,9 @@
<?php <?php
session_start();
setcookie("Image2Food", time(), time() + (60 * 60 * 24 * 120));
/** /**
* Festlegung der Untergrenze für die PHP-Version * Festlegung der Untergrenze für die PHP-Version
* @version 1.0 * @version 1.0
@@ -17,7 +22,17 @@ if (0 > version_compare(PHP_VERSION, '7')) {
<title>Image2Food - Sag mir was ich daraus kochen kann - Index</title> <title>Image2Food - Sag mir was ich daraus kochen kann - Index</title>
</head> </head>
<body> <body>
<div id="nav"> <?php include("nav.php") ?></div> <div id="nav">
<?php
if (isset($_SESSION["login"]) && ($_SESSION["login"] == "true")) {
require ("navmitglieder.php");
}
else {
require("nav.php");
}
?>
</div>
<div id="content"> <div id="content">
<h1>Image2Food - Sag mir was ich daraus kochen kann</h1> <h1>Image2Food - Sag mir was ich daraus kochen kann</h1>
<h2>Das soziale, multimediale Netzwerk für Kochideen</h2> <h2>Das soziale, multimediale Netzwerk für Kochideen</h2>
@@ -27,9 +42,21 @@ if (0 > version_compare(PHP_VERSION, '7')) {
* die Einstiegsseite mit der Hauptklasse * die Einstiegsseite mit der Hauptklasse
*/ */
class Index { class Index {
function besucher() {
} if (isset($_SESSION["login"]) && ($_SESSION["login"] == "true")){
?> echo "<div id='indextext'><h3>Mitgliederbereich</h3><br>Sie sind Angemeldet</div>";
} elseif (isset($_SESSION["login"]) && ($_SESSION["login"] == "false")){
echo "<div id='indextext'> Sie können sich jetzt zum Mitgliederbereich anmelden. </div>";
} elseif (isset($_COOKIE['Image2Food'])){
echo "<div id='indextext'> Schön Sie wieder zu sehen. Melden Sie sich an, um in den geschlossenen Mitgliederbereich zu gelangen, wenn Sie sich schon registriert haben. </div>";
} else {
echo "<div id= 'indextext'>Willkommen auf unserer Webseite. Schauen Die sich um. Sie können sich hier registrieren und dann in einem geschlossenen Mitgliederbereich anmelden.</div>";
}
}
}
$obj = new Index();
$obj -> besucher();
?>
</div> </div>
</body> </body>
+13
View File
@@ -0,0 +1,13 @@
<form action="login.php" method="post">
<label class="reg_label">Userid</label>
<span class="pflichtfeld"> * </span>
<input name="userid" maxlength="20"/>
<span class="fehlermeldung"></span>
<br>
<label class="reg_label">Passwort</label>
<span class="pflichtfeld"> * </span>
<input name="pw" type="password" maxlength="50"/>
<span class="fehlermeldung"></span>
<br>
<input type="submit">
</form>
+72 -3
View File
@@ -6,8 +6,10 @@
if (0 > version_compare(PHP_VERSION, '7')) { if (0 > version_compare(PHP_VERSION, '7')) {
die('<h1>Für diese Anwendung ' . 'ist mindestens PHP 7 notwendig'); die('<h1>Für diese Anwendung ' . 'ist mindestens PHP 7 notwendig');
} }
?>
session_start();
?>
<!DOCTYPE html> <!DOCTYPE html>
<html lang="de"> <html lang="de">
@@ -17,17 +19,84 @@ if (0 > version_compare(PHP_VERSION, '7')) {
<title>Image2Food - Sag mir was ich daraus kochen kann - login</title> <title>Image2Food - Sag mir was ich daraus kochen kann - login</title>
</head> </head>
<body> <body>
<div id="nav"> <?php include("nav.php") ?></div> <div id="nav">
<?php
require("nav.php");
require("plausi.inc.php")
?>
</div>
<div id="content"> <div id="content">
<h1>Login</h1> <h1>Login</h1>
<?php <?php
require("login.inc.php");
/** /**
* Das soziale Netzwerk für Kochideen * Das soziale Netzwerk für Kochideen
* die Loginseite * die Loginseite
*/ */
class Login { class Login {
}
public function _login(){
if ($this->plausiblisieren()) {
$this->anmelden_db();
}
}
/**
* Plausiblisierungsmethode
* Testet die einzelnen Eingabefelder des Registrierungsformulars gegenüber
* - den Notwendigkeiten in der MySQL-Datenbank und
* - weiteren Anforderungen, die die Logik des Netzwerks fordert
* Die Eingaben stehen im globalen Array $_POST zur Verfügung
* @return true, wenn die Plausiblisierung keine Fehler ergab - sonst false
*/
private function plausiblisieren() {
// Fehlervariable
$anmelden = 0;
$p = new Plausi();
$anmelden += $p->nutzerdatentest($_POST['userid']);
$anmelden += $p->nutzerdatentest($_POST['pw']);
// Testausgaben für den derzeitigen Stand des Projekts
echo "Die Eingaben: <hr>";
print_r($_POST);
echo "<br>Fehleranzahl: " . $anmelden . "<hr>";
if ($anmelden == 0) return true;
else return false;
}
private function anmelden_db() {
$vorhanden = false;
require("db.inc.php");
if ($stmt = $pdo->prepare("SELECT userid, pw FROM mitglieder"))
{
$stmt -> execute();
while ($row = $stmt -> fetch()) {
if (isset($_POST["userid"]) && $_POST["userid"] == $row['userid'] && md5($_POST["pw"]) == $row['pw']); {
$vorhanden = true;
break;
}
}
}
if ($vorhanden) {
$_SESSION["name"] = $_POST["userid"];
$_SESSION["login"] = "true";
$dat = "index.php";
}
else {
$dat = "loginfehler.php";
}
header("Location: $dat");
}
}
$regobj = new Login();
if (sizeof($_POST) > 0) {
$regobj->_login();
}
?> ?>
</div> </div>
+33
View File
@@ -0,0 +1,33 @@
<?php
session_start();
if (0 > version_compare(PHP_VERSION, '7')) {
die('<h1>Für diese Anwendung ' . 'ist mindestens PHP 7 notwendig');
}
?>
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Image2Food - Sag mir was ich daraus kochen kann - Index</title>
</head>
<body>
<div id="nav"> <?php require("nav.php") ?></div>
<div id="content">
<h1>Anmeldefehler</h1>
<?php
require("login.inc.php");
class LoginFehler {
public function fehler() {
echo "<h4>Die Anmeldedaten waren leider falsch</h4>". "<a href='login.php'>Neu Anmelden</a>";
}
}
$loginobj = new LoginFehler();
$loginobj -> fehler();
?>
</div>
</body>
</html>
+14
View File
@@ -0,0 +1,14 @@
<?php
session_start();
class OFF {
function ausloggen() {
session_destroy();
$dat = "index.php";
header("Location: $dat");
}
}
$obj = new Off();
$obj -> ausloggen();
?>
+1
View File
@@ -0,0 +1 @@
<a href="logout.php">Logout</a>
+64
View File
@@ -0,0 +1,64 @@
<?php
/**
* Klasse mit Testmethoden, on die offensichtlichen Regeln für das Netzwerk erfüllt sind
*/
class Plausi {
public function namentest($wert) {
if (preg_match("/^\w{2,30}$/", $wert)) {
return 0;
}else {
return 1;
}
}
public function emailtest($wert) {
$fehler = 0;
//Test der notwendige E-Mail-Struktur
if (!preg_match("/\w+@\w+\.\w{2}/", $wert)) {
$fehler++;
}
//nichtalphanumerische Zeichen - ausser dem Zeichen @
if (preg_match("/\W/", $wert, $ergarray)) {
if ($ergarray[0] != "@") {
$fehler++;
}
}
return $fehler;
}
public function nutzerdatentest($wert) {
$fehler = 0;
if (!preg_match("/^\w{8,20}$/", $wert)) {
$fehler++;
}
// Prüfung keine Zahl
if (!preg_match("/\d/", $wert)) {
$fehler++;
}
//Kein Großbuchstabe
if (!preg_match("/[A-Z]/", $wert)) {
$fehler++;
}
//Kein Kleinbuchstabe
if (!preg_match("/[a-z]/", $wert)) {
$fehler++;
}
}
}
?>
+32
View File
@@ -0,0 +1,32 @@
<?php
session_start();
if (0 > version_compare(PHP_VERSION, '7')) {
die('<h1>Für diese Anwendung ist mindestens PHP 7 notwendig');
}
?>
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Image2Food - Sag mir was ich daraus kochen kann - Index</title>
</head>
<body>
<div id="nav"> <?php require("nav.php") ?></div>
<div id="content">
<h1>Registrierungsfehler</h1>
<?php
require ("registrieren.inc.php");
class RegFehler {
public function fehler() {
echo "<h4>Die Registrierung hat leider nicht funktioniert</h4>". "<h5>Wählen Sie eine andere Userid und versuchen Sie es erneut.</h5>";
}
}
$regobj = new RegFehler();
$regobj -> fehler()
?>
</div>
</body>
</html>
+57
View File
@@ -0,0 +1,57 @@
<form action="registrieren.php" method="post">
<label class="reg_label">Name</label>
<span class="pflichtmaker"> * </span>
<input name="name" maxlength="30"
<?php
if (isset($_POST['name'])) {
echo "value='" . $_POST['name'] . "'";
}
?>
/>
<span class="fehlermeldung"></span>
<br>
<label class="reg_label">Vorname</label>
<span class="pflichtmaker"> * </span>
<input name="vorname" maxlength="30"
<?php
if (isset($_POST['vorname'])) {
echo "value='" . $_POST['vorname'] . "'";
}
?>
/>
<span class="fehlermeldung"></span>
<br>
<label class="reg_lab">E-Mail</label>
<span class="pflichtfeld"> * </span>
<input name="email" maxlength="30"
<?php
if (isset($_POST['email'])) {
echo "value='" . $_POST['email'] . "'";
}
?>
/>
<span class="fehlermeldung"></span>
<br>
<label class="reg_label">Userid</label>
<span class="pflichtfeld"> * </span>
<input name="userid" maxlength="20"/>
<span class="fehlermeldung"></span>
<br>
<label class="reg_label">Passwort</label>
<span class="pflichtfeld"> * </span>
<input name="pw" type="password" maxlength="50"/>
<span class="fehlermeldung"></span>
<br>
<label class="reg_label">Zusatzinfos</label>
<span class="plichtfeld"> </span>
<textarea name="zusatzinfos" rows="5" cols="30">
<?php
if (isset($_POST['zusatzinfos'])) {
echo $_POST['zusatzinfos'];
}
?>
</textarea>
<span class="fehlermeldung"></span>
<br>
<input type="submit">
</form>
+94 -5
View File
@@ -1,4 +1,6 @@
<?php <?php
session_start();
/** /**
* Festlegung der Untergrenze für die PHP-Version * Festlegung der Untergrenze für die PHP-Version
* @version 1.0 * @version 1.0
@@ -6,8 +8,8 @@
if (0 > version_compare(PHP_VERSION, '7')) { if (0 > version_compare(PHP_VERSION, '7')) {
die('<h1>Für diese Anwendung ' . 'ist mindestens PHP 7 notwendig'); die('<h1>Für diese Anwendung ' . 'ist mindestens PHP 7 notwendig');
} }
?>
?>
<!DOCTYPE html> <!DOCTYPE html>
<html lang="de"> <html lang="de">
@@ -17,17 +19,104 @@ if (0 > version_compare(PHP_VERSION, '7')) {
<title>Image2Food - Sag mir was ich daraus kochen kann - Regestrierung</title> <title>Image2Food - Sag mir was ich daraus kochen kann - Regestrierung</title>
</head> </head>
<body> <body>
<div id="nav"> <?php include("nav.php") ?></div> <div id="nav">
<?php
require("nav.php");
require("plausi.inc.php");
?>
</div>
<div id="content"> <div id="content">
<h1>Registrierung</h1> <h1>Registrierung</h1>
<?php <?php
require("registrieren.inc.php");
/** /**
* Das soziale Netzwerk für Kochideen * Das soziale Netzwerk für Kochideen die registrierungsseite
* die registrierungsseite
*/ */
class Registrierung { class Registrierung {
/**
* Registrierungsmethode
* - Erst Eingaben des Anwenders plausiblisieren
* - Dann in der MySQL-Datenbank eintragen, wenn die Plausiblisierung keine Fehler ergeben hat.
*/
public function registrieren(){
if ($this->plausiblisieren()) {
$this->eintragen_db();
}
}
/**
* Plausiblisierungsmethode
* Testet die einzelnen Eingabefelder des Registrierungsformulars gegenüber
* - den Notwendigkeiten in der MySQL-Datenbank und
* - weiteren Anforderungen, die die Logik des Netzwerks fordert
* Die Eingaben stehen im globalen Array $_POST zur Verfügung
* @return true, wenn die Plausiblisierung keine Fehler ergab - sonst false
*/
private function plausiblisieren() {
// Fehlervariable
$anmelden = 0;
$p = new Plausi();
$anmelden += $p->namentest($_POST['name']);
$anmelden += $p->namentest($_POST['vorname']);
$anmelden += $p->emailtest($_POST['email']);
$anmelden += $p->nutzerdatentest($_POST['userid']);
$anmelden += $p->nutzerdatentest($_POST['pw']);
//Kritische Zeichen aus der freien Eingabe der Zusatzinfos eleminieren
$_POST['zusatzinfos'] = preg_replace("/[<>$\%&§]/", "#", $_POST['zusatzinfos']);
// Testausgaben für den derzeitigen Stand des Projekts
echo "Die Eingaben: <hr>";
print_r($_POST);
echo "<br>Fehleranzahl: " . $anmelden . "<hr>";
if ($anmelden == 0) return true;
else return false;
}
/**
* Eintragen der Anmeldedaten in die Datenbank
* Die Eingaben stehen im Array $_POST zur Verfügung
*/
private function eintragen_db() {
require ("db.inc.php");
try {
$stmt = $pdo->prepare("INSERT INTO mitglieder (
name, vorname, email, zusatzinfos, rolle, userid, pw)
VALUES (:name, :vorname, :email, :zusatzinfos, :rolle,
:userid, :pw)");
$stmt->execute(array(
':name' => $_POST["name"],
':vorname' => $_POST["vorname"],
':email' => $_POST["email"],
':zusatzinfos' => $_POST["zusatzinfos"],
':rolle' => "Mitglied",
':userid' => $_POST["userid"],
':pw' => md5($_POST["pw"])
));
$_SESSION["name"] = $_POST["userid"];
$_SESSION["login"] = "false";
$dat = "index.php";
}
catch (PDOException $e) {
error_log("Registrierungsfehler: " . $e->getMessage()); // Log für Admins
$dat = "regfehler.php";
}
header("Location: $dat");
}
} }
$regobj = new Registrierung();
if (sizeof($_POST) > 0) {
$regobj -> registrieren();
}
?> ?>
</div> </div>
+14
View File
@@ -0,0 +1,14 @@
<?php
$dbuser = 'root';
$dbpw = 'Feuerwehr1!';
$dbhost = 'localhost';
$dbname = 'sozialesnetzwerk';
try {
$pdo = new PDO ("mysql:dbname=$dbname;host=$dbhost", $dbuser, $dbpw);
} catch (PDOException $e) {
die ($e->getMessage());
}
?>
+77
View File
@@ -0,0 +1,77 @@
<?php
session_start();
setcookie("Image2Food", time(), time() + (60 * 60 * 24 * 120));
/**
* Festlegung der Untergrenze für die PHP-Version
* @version 1.0
*/
if (0 > version_compare(PHP_VERSION, '7')) {
die('<h1>Für diese Anwendung ' . 'ist mindestens PHP 7 notwendig');
}
class MeineAusnahme extends Exception{};
?>
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Image2Food - Sag mir was ich daraus kochen kann - Index</title>
</head>
<body>
<div id="nav">
<?php
try {
if (isset($_SESSION["login"]) && ($_SESSION["login"] == "true")) {
if (@include("navmitglieder.php"));{
throw new MeineAusnahme();
}
}
else {
if (@include("nav.php"));{
throw new MeineAusnahme();
}
}
} catch (MeineAusnahme $e) {
die("<h1>Image2Food - Sag mir was ich daraus kochen kann</h1>
<h2>Das soziale, multimediale Netzwerk für Kochideen</h2>
<p> Leider gibt es ein Problem mit der Webseite.
Wir arbeiten daran mit Hochdruck. Besuchen Sie uns in kürze wieder enu</p>");
}
?>
</div>
<div id="content">
<h1>Image2Food - Sag mir was ich daraus kochen kann</h1>
<h2>Das soziale, multimediale Netzwerk für Kochideen</h2>
<?php
/**
* Das soziale Netzwerk für Kochideen
* die Einstiegsseite mit der Hauptklasse
*/
class Index {
function besucher() {
if (isset($_SESSION["login"]) && ($_SESSION["login"] == "true")){
echo "<div id='indextext'><h3>Mitgliederbereich</h3><br>Sie sind Angemeldet</div>";
} elseif (isset($_SESSION["login"]) && ($_SESSION["login"] == "false")){
echo "<div id='indextext'> Sie können sich jetzt zum Mitgliederbereich anmelden. </div>";
} elseif (isset($_COOKIE['Image2Food'])){
echo "<div id='indextext'> Schön Sie wieder zu sehen. Melden Sie sich an, um in den geschlossenen Mitgliederbereich zu gelangen, wenn Sie sich schon registriert haben. </div>";
} else {
echo "<div id= 'indextext'>Willkommen auf unserer Webseite. Schauen Die sich um. Sie können sich hier registrieren und dann in einem geschlossenen Mitgliederbereich anmelden.</div>";
}
}
}
$obj = new Index();
$obj -> besucher();
?>
</div>
</body>
</html>
+13
View File
@@ -0,0 +1,13 @@
<form action="login.php" method="post">
<label class="reg_label">Userid</label>
<span class="pflichtfeld"> * </span>
<input name="userid" maxlength="20"/>
<span class="fehlermeldung"></span>
<br>
<label class="reg_label">Passwort</label>
<span class="pflichtfeld"> * </span>
<input name="pw" type="password" maxlength="50"/>
<span class="fehlermeldung"></span>
<br>
<input type="submit">
</form>
+104
View File
@@ -0,0 +1,104 @@
<?php
/**
* Festlegung der Untergrenze für die PHP-Version
* @version 1.0
*/
if (0 > version_compare(PHP_VERSION, '7')) {
die('<h1>Für diese Anwendung ' . 'ist mindestens PHP 7 notwendig');
}
session_start();
?>
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Image2Food - Sag mir was ich daraus kochen kann - login</title>
</head>
<body>
<div id="nav">
<?php
@include("nav.php");
@include("plausi.inc.php")
?>
</div>
<div id="content">
<h1>Login</h1>
<?php
@include("login.inc.php");
/**
* Das soziale Netzwerk für Kochideen
* die Loginseite
*/
class Login {
public function _login(){
if ($this->plausiblisieren()) {
$this->anmelden_db();
}
}
/**
* Plausiblisierungsmethode
* Testet die einzelnen Eingabefelder des Registrierungsformulars gegenüber
* - den Notwendigkeiten in der MySQL-Datenbank und
* - weiteren Anforderungen, die die Logik des Netzwerks fordert
* Die Eingaben stehen im globalen Array $_POST zur Verfügung
* @return true, wenn die Plausiblisierung keine Fehler ergab - sonst false
*/
private function plausiblisieren() {
// Fehlervariable
$anmelden = 0;
$p = new Plausi();
$anmelden += $p->nutzerdatentest($_POST['userid']);
$anmelden += $p->nutzerdatentest($_POST['pw']);
// Testausgaben für den derzeitigen Stand des Projekts
echo "Die Eingaben: <hr>";
print_r($_POST);
echo "<br>Fehleranzahl: " . $anmelden . "<hr>";
if ($anmelden == 0) return true;
else return false;
}
private function anmelden_db() {
$vorhanden = false;
@include("db.inc.php");
if ($stmt = $pdo->prepare("SELECT userid, pw FROM mitglieder"))
{
$stmt -> execute();
while ($row = $stmt -> fetch()) {
if (isset($_POST["userid"]) && $_POST["userid"] == $row['userid'] && md5($_POST["pw"]) == $row['pw']); {
$vorhanden = true;
break;
}
}
}
if ($vorhanden) {
$_SESSION["name"] = $_POST["userid"];
$_SESSION["login"] = "true";
$dat = "index.php";
}
else {
$dat = "loginfehler.php";
}
header("Location: $dat");
}
}
$regobj = new Login();
if (sizeof($_POST) > 0) {
$regobj->_login();
}
?>
</div>
</body>
</html>
+33
View File
@@ -0,0 +1,33 @@
<?php
session_start();
if (0 > version_compare(PHP_VERSION, '7')) {
die('<h1>Für diese Anwendung ' . 'ist mindestens PHP 7 notwendig');
}
?>
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Image2Food - Sag mir was ich daraus kochen kann - Index</title>
</head>
<body>
<div id="nav"> <?php @include("nav.php") ?></div>
<div id="content">
<h1>Anmeldefehler</h1>
<?php
@include("login.inc.php");
class LoginFehler {
public function fehler() {
echo "<h4>Die Anmeldedaten waren leider falsch</h4>". "<a href='login.php'>Neu Anmelden</a>";
}
}
$loginobj = new LoginFehler();
$loginobj -> fehler();
?>
</div>
</body>
</html>
+14
View File
@@ -0,0 +1,14 @@
<?php
session_start();
class OFF {
function ausloggen() {
session_destroy();
$dat = "index.php";
header("Location: $dat");
}
}
$obj = new Off();
$obj -> ausloggen();
?>
+3
View File
@@ -0,0 +1,3 @@
<a href="index.php">Home</a>
<a href="registrieren.php">Registrieren</a>
<a href="login.php">Login</a>
+1
View File
@@ -0,0 +1 @@
<a href="logout.php">Logout</a>
+64
View File
@@ -0,0 +1,64 @@
<?php
/**
* Klasse mit Testmethoden, on die offensichtlichen Regeln für das Netzwerk erfüllt sind
*/
class Plausi {
public function namentest($wert) {
if (preg_match("/^\w{2,30}$/", $wert)) {
return 0;
}else {
return 1;
}
}
public function emailtest($wert) {
$fehler = 0;
//Test der notwendige E-Mail-Struktur
if (!preg_match("/\w+@\w+\.\w{2}/", $wert)) {
$fehler++;
}
//nichtalphanumerische Zeichen - ausser dem Zeichen @
if (preg_match("/\W/", $wert, $ergarray)) {
if ($ergarray[0] != "@") {
$fehler++;
}
}
return $fehler;
}
public function nutzerdatentest($wert) {
$fehler = 0;
if (!preg_match("/^\w{8,20}$/", $wert)) {
$fehler++;
}
// Prüfung keine Zahl
if (!preg_match("/\d/", $wert)) {
$fehler++;
}
//Kein Großbuchstabe
if (!preg_match("/[A-Z]/", $wert)) {
$fehler++;
}
//Kein Kleinbuchstabe
if (!preg_match("/[a-z]/", $wert)) {
$fehler++;
}
}
}
?>
+32
View File
@@ -0,0 +1,32 @@
<?php
session_start();
if (0 > version_compare(PHP_VERSION, '7')) {
die('<h1>Für diese Anwendung ist mindestens PHP 7 notwendig');
}
?>
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Image2Food - Sag mir was ich daraus kochen kann - Index</title>
</head>
<body>
<div id="nav"> <?php @include("nav.php") ?></div>
<div id="content">
<h1>Registrierungsfehler</h1>
<?php
@include ("registrieren.inc.php");
class RegFehler {
public function fehler() {
echo "<h4>Die Registrierung hat leider nicht funktioniert</h4>". "<h5>Wählen Sie eine andere Userid und versuchen Sie es erneut.</h5>";
}
}
$regobj = new RegFehler();
$regobj -> fehler()
?>
</div>
</body>
</html>
+57
View File
@@ -0,0 +1,57 @@
<form action="registrieren.php" method="post">
<label class="reg_label">Name</label>
<span class="pflichtmaker"> * </span>
<input name="name" maxlength="30"
<?php
if (isset($_POST['name'])) {
echo "value='" . $_POST['name'] . "'";
}
?>
/>
<span class="fehlermeldung"></span>
<br>
<label class="reg_label">Vorname</label>
<span class="pflichtmaker"> * </span>
<input name="vorname" maxlength="30"
<?php
if (isset($_POST['vorname'])) {
echo "value='" . $_POST['vorname'] . "'";
}
?>
/>
<span class="fehlermeldung"></span>
<br>
<label class="reg_lab">E-Mail</label>
<span class="pflichtfeld"> * </span>
<input name="email" maxlength="30"
<?php
if (isset($_POST['email'])) {
echo "value='" . $_POST['email'] . "'";
}
?>
/>
<span class="fehlermeldung"></span>
<br>
<label class="reg_label">Userid</label>
<span class="pflichtfeld"> * </span>
<input name="userid" maxlength="20"/>
<span class="fehlermeldung"></span>
<br>
<label class="reg_label">Passwort</label>
<span class="pflichtfeld"> * </span>
<input name="pw" type="password" maxlength="50"/>
<span class="fehlermeldung"></span>
<br>
<label class="reg_label">Zusatzinfos</label>
<span class="plichtfeld"> </span>
<textarea name="zusatzinfos" rows="5" cols="30">
<?php
if (isset($_POST['zusatzinfos'])) {
echo $_POST['zusatzinfos'];
}
?>
</textarea>
<span class="fehlermeldung"></span>
<br>
<input type="submit">
</form>
+124
View File
@@ -0,0 +1,124 @@
<?php
session_start();
/**
* Festlegung der Untergrenze für die PHP-Version
* @version 1.0
*/
if (0 > version_compare(PHP_VERSION, '7')) {
die('<h1>Für diese Anwendung ' . 'ist mindestens PHP 7 notwendig');
}
?>
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Image2Food - Sag mir was ich daraus kochen kann - Regestrierung</title>
</head>
<body>
<div id="nav">
<?php
@include("nav.php");
@include("plausi.inc.php");
?>
</div>
<div id="content">
<h1>Registrierung</h1>
<?php
@include("registrieren.inc.php");
/**
* Das soziale Netzwerk für Kochideen die registrierungsseite
*/
class Registrierung {
/**
* Registrierungsmethode
* - Erst Eingaben des Anwenders plausiblisieren
* - Dann in der MySQL-Datenbank eintragen, wenn die Plausiblisierung keine Fehler ergeben hat.
*/
public function registrieren(){
if ($this->plausiblisieren()) {
$this->eintragen_db();
}
}
/**
* Plausiblisierungsmethode
* Testet die einzelnen Eingabefelder des Registrierungsformulars gegenüber
* - den Notwendigkeiten in der MySQL-Datenbank und
* - weiteren Anforderungen, die die Logik des Netzwerks fordert
* Die Eingaben stehen im globalen Array $_POST zur Verfügung
* @return true, wenn die Plausiblisierung keine Fehler ergab - sonst false
*/
private function plausiblisieren() {
// Fehlervariable
$anmelden = 0;
$p = new Plausi();
$anmelden += $p->namentest($_POST['name']);
$anmelden += $p->namentest($_POST['vorname']);
$anmelden += $p->emailtest($_POST['email']);
$anmelden += $p->nutzerdatentest($_POST['userid']);
$anmelden += $p->nutzerdatentest($_POST['pw']);
//Kritische Zeichen aus der freien Eingabe der Zusatzinfos eleminieren
$_POST['zusatzinfos'] = preg_replace("/[<>$\%&§]/", "#", $_POST['zusatzinfos']);
// Testausgaben für den derzeitigen Stand des Projekts
echo "Die Eingaben: <hr>";
print_r($_POST);
echo "<br>Fehleranzahl: " . $anmelden . "<hr>";
if ($anmelden == 0) return true;
else return false;
}
/**
* Eintragen der Anmeldedaten in die Datenbank
* Die Eingaben stehen im Array $_POST zur Verfügung
*/
private function eintragen_db() {
@include ("db.inc.php");
try {
$stmt = $pdo->prepare("INSERT INTO mitglieder (
name, vorname, email, zusatzinfos, rolle, userid, pw)
VALUES (:name, :vorname, :email, :zusatzinfos, :rolle,
:userid, :pw)");
$stmt->execute(array(
':name' => $_POST["name"],
':vorname' => $_POST["vorname"],
':email' => $_POST["email"],
':zusatzinfos' => $_POST["zusatzinfos"],
':rolle' => "Mitglied",
':userid' => $_POST["userid"],
':pw' => md5($_POST["pw"])
));
$_SESSION["name"] = $_POST["userid"];
$_SESSION["login"] = "false";
$dat = "index.php";
}
catch (PDOException $e) {
error_log("Registrierungsfehler: " . $e->getMessage()); // Log für Admins
$dat = "regfehler.php";
}
header("Location: $dat");
}
}
$regobj = new Registrierung();
if (sizeof($_POST) > 0) {
$regobj -> registrieren();
}
?>
</div>
</body>
</html>