Ankündigung

Einklappen
Keine Ankündigung bisher.

Login das Benutzerseite-URL aus DB ausliest

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Login das Benutzerseite-URL aus DB ausliest

    Hallo,

    ich habe soeben eine Tutorial über ein Login gemacht.
    Ich möchte gerne ein Login haben, welches jeweils abhängig vom Benutzer, die richtige URL für seine Benutzerseite ausliest und den Benutzer danach auf "seine" Site weiterleitet.
    Ich habe dazu in der Datenbank eine Zeile mit dem Namen "user_site" erstellt und seine URL dort eingetragen.
    Da ich aber ein Anfänger bin, weiß ich nicht, wie ich den Code verändern muss, dass der Benutzer automatisch nach dem Login auf seine Site kommt.
    Könntet ihr mir BITTE helfen.
    Der Sourcecode sieht wie folgt aus:
    PHP-Code:
    <?php
    session_start
    ();
    define('SECURE'true);
    require_once(
    'config.php');


    /**
     *    Abmeldevorgang
     */
    if(isset($_GET['logout']))
    {
        if(isset(
    $_SESSION['user_id']))
        {
            
    $_SESSION = array();
            
    session_destroy();
        }

        
    header('location: login.php');
        exit();
    }


    /**
     *    Anmeldevorgang
     */
    if(isset($_POST['send']))
    {
        
    $user_email trim(htmlspecialchars($_POST['user_email']));
        
    $user_password trim(htmlspecialchars($_POST['user_password']));

        
    //Benutzereingaben validieren
        
    if(filter_var($user_emailFILTER_VALIDATE_EMAIL) && !empty($user_password))
        {
            
    $query $SQL->prepare('SELECT `user_id` FROM `user` WHERE `user_email` = ? AND `user_password` = ?');
            
    $query->bind_param('ss'$_POST['user_email'], md5($_POST['user_password']));
            
    $query->execute();
            
    $query->store_result();
            
    $query->bind_result($user_id);

            
    //Sind Benutzerdaten vorhanden und korrekt?
            
    if($query->num_rows == 1)
            {
                
    $query->fetch();
                
    $_SESSION['user_id'] = $user_id;
                
    header('location: intern.php');
                exit();
            }
            else
            {
                
    $error 'Ihre Anmeldedaten sind nicht korrekt. Bitte wiederholen Sie Ihre Eingabe.';
            }
        }
        else
        {
            
    $error 'Bitte f&uuml;llen Sie alle Felder korrekt aus.';
        }
    }
    else
    {
        
    $error NULL;
        
    $user_email NULL;
    }

    ?>
    <!DOCTYPE HTML>

    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Login</title>
    </head>

    <body>
    <?php echo $error?>
    <form action="login.php" method="post">
    <table cellpadding="1" cellspacing="4">
        <tr>
            <td><strong>E-Mail-Adresse:</strong></td>
            <td><input type="email" name="user_email" value="<?php echo $user_email?>" required placeholder="E-Mail-Adresse" maxlength="255" /></td>
        </tr>
        <tr>
            <td><strong>Passwort:</strong></td>
            <td><input type="password" name="user_password" required placeholder="Passwort" maxlength="50" /></td>
        </tr>
        <tr>
            <td colspan="2"><input type="submit" name="send" value="Login" /></td>
        </tr>
    </table>
    </form>

    </body>
    </html>


  • #2
    So etwas ist nicht die praktikable Lösung. Nicht jeder Nutzer kriegt eine eigene Seite. Meist wird eine persönliche Profilseite anhand der Nutzer-ID oder des Nutzernamens generiert. Dazu braucht man dann keine Spalte user_site sondern nimmt die ID.

    ich sehe außerdem, dass du deine Passwörter ungehasht abspeicherst. Das ist ein NoGo.
    Current Projects: http://www.welten-buch.de, http://neu.zooadoo.de

    Kommentar


    • #3
      Hallo Geromel,

      derzeit brauche ich das nur, weil ich etwas ausprobieren möchte wofür ich 2 verschiedene Nutzer brauche.
      Das es nicht sicher ist oder nicht zeitgemäß, dass wäre derzeit egal.
      Könntest du mir eventuell sagen wie ich mein Problem lösen kann?
      ich weiß das ich irgendwas im header('location: intern.php'); ändern muss. Ich weiß aber nicht wie ich die BenutzerURL auslesen kann und dort dann reinladen kann.

      Danke für deine Hilfe.

      Kommentar


      • #4
        Ich weiß aber nicht wie ich die BenutzerURL auslesen kann und dort dann reinladen kann.
        Wo wird/werden die denn verwaltet /definiert also wo kommen die denn her? Seh ich oben nichts im Code.

        (Und natürlich solltest du die Hinweise von Geromel "trotzdem" beachten.)
        Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
        PHP.de Wissenssammlung | Kein Support per PN

        Kommentar


        • #5
          Zitat von hausl Beitrag anzeigen
          Wo wird/werden die denn verwaltet /definiert also wo kommen die denn her? Seh ich oben nichts im Code.

          (Und natürlich solltest du die Hinweise von Geromel "trotzdem" beachten.)
          ich habe in der DB eine Zeile mit dem Namen "user_site" erstellt.
          Nur weiß ich absolut nicht, wie ich die auslese und in den header einfüge

          Kommentar


          • #6
            ich habe in der DB eine Zeile mit dem Namen "user_site" erstellt.
            Nur weiß ich absolut nicht, wie ich die auslese und in den header einfüge
            Du meinst vermutlich eine Spalte.
            Du musst dein SELECT Statement erweitern um die Spalte, die du auslesen möchtest, den Wert von "user_site" auslesen und in header einfügen

            PHP-Code:
            header("Location: ".$deineVariablemitderSeite); 
            Hier siehst du, wie du die Daten ausliest (üblicherweise bei mehreren Daten in einer While Schleife):

            PHP-Code:
            //...
                        
            $query->fetch();
                        
            $_SESSION['user_id'] = $user_id
            //... 
            Bitte sätmliche Infos davor auch beachten, da man wirklich keine statische seite für jeden User erstellt sondern eine dynamische und nur die Daten ausliest/darstellt, für die er die Berechtigung hat.

            mfg wolf29
            while (!asleep()) sheep++;

            Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

            Kommentar


            • #7
              Zitat von wolf29 Beitrag anzeigen
              Du meinst vermutlich eine Spalte.
              Du musst dein SELECT Statement erweitern um die Spalte, die du auslesen möchtest, den Wert von "user_site" auslesen und in header einfügen

              PHP-Code:
              header("Location: ".$deineVariablemitderSeite); 
              Hier siehst du, wie du die Daten ausliest (üblicherweise bei mehreren Daten in einer While Schleife):

              PHP-Code:
              //...
                          
              $query->fetch();
                          
              $_SESSION['user_id'] = $user_id
              //... 
              Bitte sätmliche Infos davor auch beachten, da man wirklich keine statische seite für jeden User erstellt sondern eine dynamische und nur die Daten ausliest/darstellt, für die er die Berechtigung hat.

              mfg wolf29
              Sry, ich steh am Schlauch
              Wie soll ich das SELECT erweitern?
              Ich weiß das ist bestimmt eine saublöde Frage. Aber ich check grad gar nichts

              Kommentar


              • #8
                Code:
                 $query = $SQL->prepare('SELECT `user_id`, `SPALTENNAMEUSERSEITE`, FROM `user` WHERE `user_email` = ? AND `user_password` = ?');

                Kommentar

                Lädt...
                X