kratos
Goto Top

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

<!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>&copy; 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.

Content-Key: 31547441155

Url: https://administrator.de/contentid/31547441155

Printed on: May 4, 2024 at 21:05 o'clock

Member: michi1983
michi1983 Oct 26, 2023 at 16:26:54 (UTC)
Goto Top
Hallo,

bekommst du denn irgendwelche Fehlermeldungen?

Ist etwas in der Entwicklerkonsole des Browsers zu sehen?

Gruß
Member: Kratos
Kratos Oct 26, 2023 at 16:37:10 (UTC)
Goto Top
hi,
Nein leider nicht. Habe schon gedacht vielleicht liegt das an den Pfaden oder so habe alles ausprobiert.

Debug Funktionen auch angemacht keine Fehler angezeigt.

Echt frustrierend.
Member: michi1983
michi1983 Oct 26, 2023 at 17:25:38 (UTC)
Goto Top
Dann geh doch mal strategisch vor und nimm alles raus was nicht notwendig ist (Gallery zB).

Arbeite mit Ausgaben in den Zwischenschritten um die Werte der wichtigen Variablen zu prüfen und füge dann Schritt für Schritt wieder Logik hinzu.
Member: ASP.NET.Core
ASP.NET.Core Oct 26, 2023 at 20:44:56 (UTC)
Goto Top
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.
Member: Thomas2
Thomas2 Oct 27, 2023 at 08:10:28 (UTC)
Goto Top
Hi,

unbedingt die Hinweise des Vorposters beachten. Im Text schreibst du Login.php und im HTML Code steht im Action Teil des Foremulars login.php.

Gruß,
Thomas
Member: Kratos
Solution Kratos Jan 18, 2024 at 15:05:40 (UTC)
Goto Top
Danke euch für eure Hilfe habe es doch alles über die Datenbank realisiert.