Zugriff nur über Login

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

  • #16
    @ FIO

    supi... vielen, vielen Dank!

    Ich bin beeindruckt...

    Ich weiß, ich bin unverschämt, wenn ich jetzt noch eine Bitte habe,
    es geht um die Weiterleitung nach erfogreichem Login.
    Benutze das Login-Script von Andreas Zimare.
    Zurzeit muß man noch auf einen Link klicken um zur entsprechenden Site zu gelangen.

    Code:

    die;
    }else{
    $user = $result['user'];
    session_register('user');
    echo '<p align="center">Login erfolgreich!<br><br><a href="start.php">Zur Startseite</a></p>';
    }
    }
    ?>
    </body>
    </html>

    Wie kann man das automatisieren, damit man nicht extra den Link anklicken muß?
    (habe schon viel gelesen, leider funzt noch nichts).

    Danke im voraus!
    P500

    Kommentar


    • #17
      mit header(). Wichtig ist aber, dass vorher nichts gesendet wurde! Kein Zeichen darf vorher zum User gelangen, sonst klappts nicht. (Ja ich weiß, außer outputbuffering ist an ^^ aber das is ja auch doof)

      PHP-Code:
      header('Location: http://example.com/dir/'); 
      gruß,
      Flo.

      PS: Ich würde vorher aber noch ein session_write_close(); machen, um sicher zu gehen, dass die Session-Werte auch wirklich gespeichert werden.

      Also in deinem Fall:

      PHP-Code:
      session_write_close();
      header('Location: http://deine-url.de/start.php'); 
      Achja: Ich würde dein Session-System mal aktualisieren. Benutze lieber das $_SESSION-Array anstatt session_register();! dann kannste direkt schreiben:
      PHP-Code:
      $_SESSION['user'] = $result['user']; 
      und fertig ^^
      Zuletzt geändert von Fl0; 18.01.2006, 15:18.

      Kommentar


      • #18
        Ich bin ein absolut lernfähiger Laie auf diesem Gebiet...

        Wo muß ich den Deine Tipps (header) einsetzen...

        (echo weg -> header rein gibt leider nur sql-Fehler)

        Falls es zuviel ist, dieses "kurz" zu erklären, dann muss ich wohl noch eine
        Menge lesen, trotzdem Danke für Deine Informationen!

        Gruß
        P500

        Kommentar


        • #19
          Du hast ja diesen Code-Abschnitt geposted:

          Code:
           die;
          }else{
          $user = $result['user'];
          session_register('user');
          echo '<p align="center">Login erfolgreich!<br><br><a href="start.php">Zur Startseite</a></p>';
          }
          }
          ?>
          </body>
          </html>
          Wenn du jetzt den else-Teil gegen

          PHP-Code:
          $_SESSION['user'] = $result['user'];
          session_write_close();
          header('Location: http://deine-url.de/start.php'); 
          ersetzt ist es erforderlich, dass du die Auswertung der Login-Informationen als aller erstes in dein Script setzt. Damit vorher nichts ausgegeben wird, weil nachträglich header() setzen geht nicht ^^

          Gruß,
          Flo.

          Kommentar


          • #20
            Tut mir leid, ich bin mit meinem Latein am Ende...

            Hier mal der Code:
            <?php
            session_start();
            require("connect.inc.php");
            ?>
            <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
            <html>
            <head>
            <title>Login</title>
            </head>
            <body>
            <?php if(!isset($_POST['submit'])) { ?>
            <form action="<?php $PHP_SELF ?>" method="post">
            </head>

            html-Code entfernt...

            </form>
            <?php
            }elseif(!$_POST['username'] || $_POST['username'] == "") {
            echo '<p align="center">Einen Benutzernamen brauchen wir schon ;-)
            <br><br><a href="index.php">Zurück</a></p>';
            }elseif(!$_POST['password'] || $_POST['password'] == "") {
            echo '<form action="index.php" method="post">';
            echo '<p align="center">Ein Passwort brauchen wir schon ;-)<br><br>';
            echo '<input type="hidden" name="username" value="'.$_POST['username'].'">';
            echo '<input type="submit" name="zurueck" value="Zurück">';
            echo '</p>';
            echo '</form>';
            }else{
            $password = md5($password);
            $query = @mysql_query("SELECT user, pass FROM users WHERE user = '".$_POST['username']."'")
            or die('Select ist fehlgeschlagen!');
            $result = @mysql_fetch_array($query) or die('<p align="center">
            Sorry, aber dieser Benutzername existiert nicht!<br><a href="index.php">Zurück</a></p>');
            if($password != $result['pass']){
            echo '<form action="index.php" method="post">';
            echo '<p align="center">Sorry, aber dieses Passwort ist falsch!<br><br>';
            echo '<input type="hidden" name="username" value="'.$_POST['username'].'">';
            echo '<input type="submit" name="zurueck" value="Zurück"></p>';
            echo '</form>';
            die;
            }else{
            $user = $result['user'];
            session_register('user');
            echo '<p align="center">Login erfolgreich!<br><br><a href="start.php">Zur Startseite</a></p>';
            }
            }
            ?>
            </body>
            </html>

            THX für die Hilfe
            P500

            Kommentar


            • #21
              Erst mal das hier lesen dürfte angebracht sein:
              http://www.php-resource.de/forum/sho...threadid=62965
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar


              • #22
                @ wahsaga

                Danke für den Hinweis...
                Debbuging: Quelltext anzeigen hat geholfen...
                Habe die überflüssigen 6 Zeilen gelöscht...

                Mal schauen, ob wir Tipps von Flo auch noch hinbekommen.

                Ansonsten bin ich allen die mir geholfen haben sehr dankbar!

                Kommentar


                • #23
                  So, habe mal deinen Code durchgesehen und umgeschrieben:

                  Habe zum einen den Formular-Auswertungs-Teil und sowas sofort an den Anfang der Datei gestellt, damit ein header()-Befehl auch Wirkung zeigt.

                  Außerdem habe ich mal den Code strukturiert, bei den ganzen Klammern kommt man schnell durcheinander

                  PHP-Code:
                  <?php
                  session_start
                  ();
                  require(
                  'connect.inc.php');

                  // Variablen initialisieren
                  $error   '';

                  $form  '<form action="' $_SERVER['PHP_SELF'] . '" method="post">';
                  $form .= 'html-Code entfernt...';
                  $form .= '</form>';

                  if(!isset(
                  $_POST['submit'])) {
                      
                  // Formular wurde noch nicht abgeschickt -> Formular anzeigen!
                      
                  $content $form;
                  } else {
                      
                  // Formular wurde abgeschickt!
                      // -> Felder ueberpruefen:
                      
                  if (!isset($_POST['username']) || empty($_POST['username'])) {
                          
                  $error .= '- Benutzername fehlt!<br>';
                      }

                      if (!isset(
                  $_POST['password']) || empty($_POST['password'])) {
                          
                  $error .= '- Passwort fehlt!<br>';
                      }

                      
                  // Falls es keine Fehler gab, kann man ruhig die Daten eintragen
                      
                  if (empty($error)) {
                          
                  // Sicherheitshalber...
                          
                  $username htmlentities(strip_tags(trim($_POST['username'])));
                          
                  $password htmlentities(strip_tags(trim(md5($_POST['password']))));
                      
                          
                  // Pruefen ob der User existiert und das Passwort richtig ist
                          
                  $query mysql_query('SELECT `user`, `pass` FROM `users` WHERE `user` = \'' $username '\' AND `pass` = `' $password .'`');

                          
                  // Wenn die Abfrage Ergebnisse liefert, ist der Username und das Passwort richtig
                          
                  if (mysql_num_rows($res) == 0) {
                              
                  $error .= 'Dein Passwort oder dein Benutzername ist falsch!';
                          } else {
                              
                  // Username und Passwort richtig
                              // Session kann gesetzt werden
                              
                  $_SESSION['user'] = $_POST['username'];
                              
                  // Und weiterleiten: Hier noch deinen URL eintragen!
                              
                  header('Location: http://deine-url.de/start.php');
                          }
                      } else {
                          
                  // Es gab Fehler. Diese werden dann angezeigt, mit dem Formular: Naechster Versuch ;)
                          
                  $error '<b>Folgende Fehler sind aufgetreten:</b><br>' $error;
                          
                  $content $error '<br>' $form;
                      }
                  }
                  ?>
                  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                  <html>
                    <head>
                      <title>Login</title>
                    </head>
                  <body>
                  <?php
                  print($content);
                  ?>
                  </body>
                  </html>
                  Ich gehe in dem Code davon aus, dass dieser 'Code entfernt'-Teil ein komplettes Formular enthält und so

                  So würde ich das machen. Ist nicht getestet, sollte aber funktionieren.

                  Gruß,
                  Flo.

                  Kommentar

                  Lädt...
                  X