Login Probleme PHP
Hallo zusammen,
Ich habe ein Problem, dass bei mir das anmelden über das HTML nicht klappt, weil die Weiterleitung irgendwie nicht funktioniert zur login.php und so weiter.
Ich benutze easyPHP als Anbieter, wo Apache mit geliefert wird.
Login.HTML
Login.php
gallery.php
share.php
Logout.php
Ich hoffe, ihr könnt mir dabei helfen, was übersehe ich.
Vg.
Ich habe ein Problem, dass bei mir das anmelden über das HTML nicht klappt, weil die Weiterleitung irgendwie nicht funktioniert zur login.php und so weiter.
Ich benutze easyPHP als Anbieter, wo Apache mit geliefert wird.
Login.HTML
<!DOCTYPE HTML>
<html lang =de>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>xxxxxxx_Home</title>
<meta name="description" content="xxxxxxxxxxxxxxxxxxx.">
<meta name="author" content="xxxxxxxx">
<meta property="og:title" content="xxxxxx">
<meta property="og:type" content="website">
<meta property="og:url" content="https://www.xxxxxxxxx.de">
<meta property="og:description" content="xxxxxxxxxxxxxxxxxxxxx.">
<link rel="stylesheet" href="CSS/xxxxxx.css">
<link rel="stylesheet" href="CSS/xxxxx.css">
<link rel="stylesheet" href="CSS/xxxxxx.css">
<link rel="stylesheet" href="CSS/xxxxx.css">
<link rel="stylesheet" href="CSS/xxxxxx.css">
<link rel="stylesheet" href="CSS/xxxx.css">
<noscript><link rel="stylesheet" href="CSS/noscript.css"></noscript>
</head>
<body>
<!-- Header -->
<header id="header">
<!-- Firmen logo -->
<div class="logo">
</div>
<!-- Navigation -->
<nav>
<div class="menu-wrap">
<input type="checkbox" class="toggler">
<div class="hamburger">
<div></div>
</div>
<div class="menu">
<div>
<div>
<ul>
<li><a href="index.html">Home</a></li>
<li><a href="uebermich.html">Über mich</a></li>
<li><a href="blog.html">Blog</a></li>
<li><a href="contact.html">Kontakt</a></li>
</ul>
</div>
</div>
</div>
</div>
</nav>
</header>
<main>
<h2>Login</h2>
<form action="login.php" method="POST">
<label for="username">Benutzername:</label>
<input type="text" name="username" required><br>
<label for="password">Passwort:</label>
<input type="password" name="password" required><br>
<input type="submit" value="Anmelden">
</form>
<div class="cookie-popup" samesite="none">
<p>Wir verwenden Cookies, um sicherzustellen, dass wir Ihnen die beste Erfahrung auf unserer Website bieten. Durch die Nutzung unserer Website erklären Sie sich mit der Verwendung von Cookies einverstanden.</p>
<a class= .cookie-popup-privacy href="datenschutz.html" target="_blank">Datenschutzerklärung</a>
<button id="accept-btn">Akzeptieren</button>
<button id="reject-btn">Ablehnen</button>
</div>
</main>
<!-- Footer -->
<footer id="footer">
<!-- Icons -->
<ul class="icons">
<li><a href="https://www.facebook.com/xxxxxxxx" class="icon brands fa-facebook-f"><span class="label">Facebook</span></a></li>
<li><a href="https://www.instagram.com/xxxxxxxxxx/" class="icon brands fa-instagram"><span class="label">Instagram</span></a></li>
</ul>
<!-- Menu -->
<ul class="menu">
<li><a href="impressum.html">Impressum</a> </li>
<li><a href="datenschutz.html">Datenschutz</a> </li>
<li>© xxxxx 2023</li><li>Design: <a href="#">xxxx xxxr</a></li>
</ul>
</footer>
<!-- Scripts -->
<script src="xxxxx.js"></script>
<script src="xxxxx.js"></script>
<script src="xxxxx.js"></script>
</body>
</html>
Login.php
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// Starten der Sitzung
session_start();
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// Benutzername und Passwort aus dem Formular holen
$inputUsername = $_POST['username'];
$inputPassword = $_POST['password'];
$loginSuccessful = false;
$selectedCsvFile = null; // Dateiname der passenden CSV-Datei
// Verzeichnis, in dem die CSV-Dateien gespeichert sind
$csvDirectory = '\Kunden_Daten\CSV';
// Durchsuchen Sie das Verzeichnis nach CSV-Dateien und überprüfen Sie jede Datei
if ($handle = opendir($csvDirectory)) {
while (false !== ($file = readdir($handle)) && !$loginSuccessful) {
if (pathinfo($file, PATHINFO_EXTENSION) === '.csv') {
// Überprüfen Sie die aktuelle CSV-Datei auf Anmeldedaten
if (checkCsvForUserData($csvDirectory . $file, $inputUsername, $inputPassword)) {
$loginSuccessful = true;
$selectedCsvFile = $file;
}
}
}
closedir($handle);
}
if ($loginSuccessful) {
// Anmeldung erfolgreich, verwenden Sie $selectedCsvFile, um den Pfad zur Galerie zu finden
$_SESSION['username'] = $inputUsername; // Speichern des Benutzernamens in der Sitzung
$galleryPath = getGalleryPath($csvDirectory . $selectedCsvFile);
// Leiten Sie den Benutzer zur Galerieseite weiter und übergeben Sie den Pfad
header('Location: gallery.php?path=' . urlencode($galleryPath));
exit;
} else {
// Anmeldung fehlgeschlagen, leiten Sie den Benutzer zurück zur Login-Seite
header('Location: login.html');
exit;
}
}
// Diese Funktion überprüft eine CSV-Datei auf Anmeldedaten
function checkCsvForUserData($csvFile, $username, $password) {
if (($handle = fopen($csvFile, 'r')) !== false) {
while (($row = fgetcsv($handle, 1000, ',')) !== false) {
$storedUsername = $row[0];
$storedPassword = $row[1];
if ($username === $storedUsername && $password === $storedPassword) {
fclose($handle);
return true;
}
}
fclose($handle);
}
return false; // Anmeldedaten nicht gefunden
}
// Diese Funktion gibt den Pfad zur Galerie aus der CSV-Datei zurück
function getGalleryPath($csvFile) {
if (($handle = fopen($csvFile, 'r')) !== false) {
$row = fgetcsv($handle, 1000, ',');
if (count($row) > 2) {
fclose($handle);
return $row[2]; // Nehmen Sie an, dass der Pfad in der dritten Spalte steht
}
fclose($handle);
}
return null; // Pfad nicht gefunden
}
gallery.php
<?php
session_start(); // Starten Sie die Sitzung
// Überprüfen Sie, ob der Benutzer angemeldet ist
if (!isset($_SESSION['username'])) {
header('Location: login.html');
exit;
}
// Pfad zu den Bildern des angemeldeten Benutzers
$galleryPath = getGalleryPathForUser($_SESSION['username']);
// Funktion, um Bilder aus einem Verzeichnis anzuzeigen
function displayImages($directory) {
$files = glob($directory . '/*.{jpg,jpeg,png,gif}', GLOB_BRACE);
if ($files) {
foreach ($files as $file) {
echo '<img src="' . $file . '" alt="Bild">';
echo '<a href="' . $file . '" download>Herunterladen</a>';
echo '<a href="share.php?image=' . urlencode($file) . '">Teilen</a>';
}
} else {
echo 'Keine Bilder gefunden.';
}
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Galerie</title>
</head>
<body>
<h2>Willkommen in Ihrer Galerie, <?php echo $_SESSION['username']; ?>!</h2>
<h3>Ihre Bilder:</h3>
<div>
<?php
// Stellen Sie sicher, dass Sie den richtigen Pfad verwenden
displayImages($galleryPath);
?>
</div>
<a href="logout.php">Abmelden</a>
</body>
</html>
share.php
<?php
session_start(); // Starten Sie die Sitzung
if (isset($_GET['image'])) {
$imagePath = urldecode($_GET['image');
// Stellen Sie sicher, dass der Benutzer angemeldet ist
if (!isset($_SESSION['username'])) {
header('Location: login.html');
exit;
}
$username = $_SESSION['username'];
$userDirectory = 'user_images/' . $username;
// Erstellen eines eindeutigen Identifikators für das geteilte Bild
$shareKey = generateUniqueShareKey();
// Speichern des Identifikators und des Bildpfads in der shared_images.txt-Datei
$sharedImagesFile = $userDirectory . '/shared_images.txt';
file_put_contents($sharedImagesFile, $shareKey . ',' . $imagePath . PHP_EOL, FILE_APPEND);
// Der geteilte Link basiert auf dem Identifikator
$shareLink = 'share.php?key=' . $shareKey;
echo "Teilen Sie dieses Bild mit Freunden und Familie: <a href='$shareLink'>$shareLink</a>";
}
function generateUniqueShareKey() {
// Implementieren Sie Logik zur Generierung eines eindeutigen Identifikators hier
return uniqid();
}
?>
Logout.php
<?php
session_start();
// Beenden Sie die Benutzersitzung
session_destroy();
// Leiten Sie zur Login-Seite zurück
header('Location: login.html');
exit();
?>
Ich hoffe, ihr könnt mir dabei helfen, was übersehe ich.
Vg.
Please also mark the comments that contributed to the solution of the article
Content-ID: 31547441155
Url: https://administrator.de/forum/login-probleme-php-31547441155.html
Printed on: January 13, 2025 at 19:01 o'clock
6 Comments
Latest comment
Hi,
bevor du noch mehr Zeit in solche Hacks investierst, mache es halbwegs ordentlich: Zugangsdaten gehören in eine Datenbank, wenn du kein LDAP oder was anderes schon hast. Die anderen Daten was du da anscheinend in Textdateien schreibst auch ab in die DB.
Und auf keinen Fall irgendwo Passwörter im Klartext speichern! Die gehören gehasht mit Salt. Aber kein MD5 oder andere uralte.
Bedenke zudem, alles im Webroot ist mit direktem Dateiname uneingeschränkt zugeifbar, sofern nicht in der Webserver Konfiguration explizit eingeschränkt.
bevor du noch mehr Zeit in solche Hacks investierst, mache es halbwegs ordentlich: Zugangsdaten gehören in eine Datenbank, wenn du kein LDAP oder was anderes schon hast. Die anderen Daten was du da anscheinend in Textdateien schreibst auch ab in die DB.
Und auf keinen Fall irgendwo Passwörter im Klartext speichern! Die gehören gehasht mit Salt. Aber kein MD5 oder andere uralte.
Bedenke zudem, alles im Webroot ist mit direktem Dateiname uneingeschränkt zugeifbar, sofern nicht in der Webserver Konfiguration explizit eingeschränkt.
Series: Login Problem PHP
Login Probleme PHP (german)6