Ankündigung

Einklappen
Keine Ankündigung bisher.

Session - Nach einloggen aktualisieren damit Einlog erfolg

Einklappen

Neue Werbung 2019

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

  • Session - Nach einloggen aktualisieren damit Einlog erfolg

    Tach

    hab nen Prob, und zwar, wenn ich mich einlogge, dann muss ich erst nochmal aktualisieren damit er auch wiklich einloggt. Das heist, ich geb meinen Benutzername ein und PW, klick auf "einloggen" und dann zeigt er nicht die Seiten an die eigentlich da sein sollten (da die Rechte nicht stimmen). Aber sobald ich die Seite aktualisier klappt alles ganz normal.

    Hier Code:

    PHP-Code:
    <?php
        
    // error_reporting(E_ALL);
        
    session_start();
        if (isset(
    $_GET['action']) AND $_GET['action'] == "logout") { 
            
    session_destroy(); 
            
    header("Location: index.php");
        }
        include 
    'inc/config.php';

        @
    mysql_connect(MYSQL_HOSTMYSQL_USERMYSQL_PASS) OR die(mysql_error());
        
    mysql_select_db(MYSQL_DATABASE) OR die(mysql_error());

        
    $rights getRights();
    ?>

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
      <title><?php echo $title?></title>
    </head>
    <body>

    <htmlzeug>

           <?php
               
    if(!in_array("admin"$rights)) {
                   echo 
    "<table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\">\n";
                   echo 
    " <tr height=\"16\">\n";
                   echo 
    "  <td background=\"gfx/design/menu_off.jpg\">\n";
                   echo 
    "        [b]Login &raquo;[/b]\n";
                   echo 
    "  </td>\n";
                   echo 
    " </tr>\n";
                   echo 
    "</table>\n";
               } else {
                   include 
    'menu.php';
               }
    ?>
    function.php
    PHP-Code:
    <?php
        
    function getRights($UID null) {
            if(isset(
    $UID)) {
                
    $sql "SELECT
                            recht
                        FROM
                            user_rights
                        WHERE
                           userid = '"
    $UID ."';";
            } else {
                
    $sql "SELECT
                            recht
                        FROM
                            user_rights
                        WHERE
                           userid = '"
    $_SESSION['ID'] ."';";
            }        
    $result mysql_query($sql) OR die(mysql_error());
            
    $rights = array();
            while(
    $row mysql_fetch_assoc($result)) {
                
    $rights[] = $row['recht'];
            }
            return 
    $rights;
        }
    ?>
    Weiss jemand weiter?

    MFG

  • #2
    hmm...
    wann führst du denn den Login durch?
    Wenn das erst nach der Funktion getRights() passiert, würde ich das ganze einfach mal tauschen
    http://www.fun2stay.de

    Kommentar


    • #3
      der login kommt danach, also in der index.php

      PHP-Code:
      <?php
          
      // error_reporting(E_ALL);
          
      session_start();
          if (isset(
      $_GET['action']) AND $_GET['action'] == "logout") { 
              
      session_destroy(); 
              
      header("Location: index.php");
          }
          include 
      'inc/config.php';

          @
      mysql_connect(MYSQL_HOSTMYSQL_USERMYSQL_PASS) OR die(mysql_error());
          
      mysql_select_db(MYSQL_DATABASE) OR die(mysql_error());

          
      $rights getRights();
      ?>

      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
      <html>
      <head>
        <title><?php echo $title?></title>
      </head>
      <body>

      <htmlzeug>

             <?php
                 
      if(!in_array("admin"$rights)) {
                     echo 
      "<table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\">\n";
                     echo 
      " <tr height=\"16\">\n";
                     echo 
      "  <td background=\"gfx/design/menu_off.jpg\">\n";
                     echo 
      "         [b]Login &raquo;[/b]\n";
                     echo 
      "  </td>\n";
                     echo 
      " </tr>\n";
                     echo 
      "</table>\n";
                 } else {
                     include 
      'menu.php';
                 }
      ?>

      <htmlzeug>

      <?php
          
      if(!in_array("admin"$rights)) {
              include 
      'login.php';
          } else {
              if(isset(
      $_GET['seite']) AND isset($sections[$_GET['seite']])) {
                  include 
      $sections[$_GET['seite']];
              } elseif (!isset(
      $_GET['seite'])) {
                  include 
      'welcome.php';
              } else {
                  echo 
      "<p class=\"error\">Fehler: Diese Seite wurde leider nicht gefunden!</p>\n";
              }
          }
      ?>
      und die login.php
      PHP-Code:
      <?php
          
      if(isset($_POST['UserID']) AND $_POST['UserID'] == '0') {
              echo 
      "Keinen Benutzernamen ausgew&auml;hlt.\n";
          } else {
              if(isset(
      $_POST['id'], $_POST['pw']) AND login_right(addslashes($_POST['id']), addslashes($_POST['pw']))) {
                  
      $_SESSION['ID'] = $_POST['id'];
                  
      $sql "SELECT
                              firma
                          FROM
                              user_anschrift
                          WHERE
                              user_id = "
      $_POST['id'] .";";
                  
      $result mysql_query($sql) OR die(mysql_error());
                  
      $row mysql_fetch_assoc($result);
                  
      $_SESSION['firma'] = $row['firma'];
              }
              if(isset(
      $_SESSION['ID'])) {
                  
      $rights getRights();
                  if(
      in_array("admin"$rights)) {
                      
      header("Location: index.php?".SID);
                  }
              } else { 
                 if (isset(
      $_POST['submit'])) {
                       echo 
      "    Ung&uuml;ltiges Password.\n";
                  }
                  
      $sql "SELECT
                              ID,
                              name
                          FROM
                              users
                          ORDER BY
                              Name ASC;"
      ;
                  
      $result mysql_query($sql) OR die(mysql_error());
                  echo 
      "<form action=\"index.php\" method=\"post\">\n";
                  echo 
      "  <select size=\"1\" name=\"id\" id=\"id\" class=\"login\">\n";
                  echo 
      "    <option value=\"0\" selected>-- Bitte w&auml;hlen --</option>\n";
                  while(
      $row mysql_fetch_assoc($result)) {
                      echo 
      "    <option value=\"".$row['ID']."\">".$row['name']."</option>\n";
                  }
                  echo 
      "  </select>\n";
                  echo 
      "  <input type=\"password\" name=\"pw\" id=\"pw\" style=\"font-size:8pt\">\n";
                  echo 
      "  <input type=\"submit\" name=\"submit\" value=\"Best&auml;tigen\" style=\"font-size:8pt\">\n";
                  echo 
      "  <input type=\"reset\" name=\"reset\" value=\"Abbrechen\" style=\"font-size:8pt\">\n";
                  echo 
      "</form>\n";
              }
          }
      ?>

      Kommentar


      • #4
        dann würd ich die login-routine von dem Login-Formular trennen.
        Diese Login-Routine an den Anfang von deiner index.php setzen

        --> so sollte dein Problem gelöst sein
        http://www.fun2stay.de

        Kommentar


        • #5
          wie meinst des genau?

          Btw, local funzt es ganz normal nur aufm Server nicht :/

          Kommentar


          • #6
            hmmm...

            1.) du setzt folgende Zeilen an den anfang der index.php
            PHP-Code:
            <?php

            session_start
            ();

            if(isset(
            $_POST['UserID']) AND $_POST['UserID'] == '0') {
                    echo 
            "Keinen Benutzernamen ausgew&auml;hlt.\n";
                } else {
                    if(isset(
            $_POST['id'], $_POST['pw']) AND login_right(addslashes($_POST['id']), addslashes($_POST['pw']))) {
                        
            $_SESSION['ID'] = $_POST['id'];
                        
            $sql "SELECT
                                    firma
                                FROM
                                    user_anschrift
                                WHERE
                                    user_id = "
            $_POST['id'] .";";
                        
            $result mysql_query($sql) OR die(mysql_error());
                        
            $row mysql_fetch_assoc($result);
                        
            $_SESSION['firma'] = $row['firma'];
                    }
                    if(isset(
            $_SESSION['ID'])) {
                        
            $rights getRights();
                        if(
            in_array("admin"$rights)) {
                            
            header("Location: index.php?".SID);
                        }
                    } else { 
                       if (isset(
            $_POST['submit'])) {
                             echo 
            "    Ung&uuml;ltiges Password.\n";
                        } 

            ?>
            2.) deine login.php sieht dann nur noch so aus ...
            PHP-Code:
            <?php

            $sql 
            "SELECT
                                    ID,
                                    name
                                FROM
                                    users
                                ORDER BY
                                    Name ASC;"
            ;
                        
            $result mysql_query($sql) OR die(mysql_error());
                        echo 
            "<form action=\"index.php\" method=\"post\">\n";
                        echo 
            "  <select size=\"1\" name=\"id\" id=\"id\" class=\"login\">\n";
                        echo 
            "    <option value=\"0\" selected>-- Bitte w&auml;hlen --</option>\n";
                        while(
            $row mysql_fetch_assoc($result)) {
                            echo 
            "    <option value=\"".$row['ID']."\">".$row['name']."</option>\n";
                        }
                        echo 
            "  </select>\n";
                        echo 
            "  <input type=\"password\" name=\"pw\" id=\"pw\" style=\"font-size:8pt\">\n";
                        echo 
            "  <input type=\"submit\" name=\"submit\" value=\"Best&auml;tigen\" style=\"font-size:8pt\">\n";
                        echo 
            "  <input type=\"reset\" name=\"reset\" value=\"Abbrechen\" style=\"font-size:8pt\">\n";
                        echo 
            "</form>\n"

            ?>
            http://www.fun2stay.de

            Kommentar


            • #7
              fettes danke funktioniert sogar :P

              mfg

              Kommentar


              • #8
                haste was anderes erwartet??
                http://www.fun2stay.de

                Kommentar


                • #9
                  auf den ersten Blick hab ich net wirklich besserung erwartet. Blick grad auch net wirklich mehr durch. Aber das liegt nicht an dem Code etc sondern daran dass ich grad recht unkonzentriert bin. Dass die Frauen immer einem den Kopf verdrehen müssen

                  Kommentar


                  • #10
                    Tacho,
                    ich habe leider das gleiche Problem, allerdings haben mir die Ratschläge nicht geholfen. Habe natürlich die Suche benutzt, aber keine Lösung gefunden, die mich weitergebracht hat. Wollte jetzt auch kein neues Thema schrieben ... gibt ja eh schon genug hier

                    Also, bei mir ist es so, daß man erst eingeloggt ist, wenn die Seite aktualisiert wird oder das Loginformular ein weiteres mal ausgeführt wird. Bei meinem Localhost funktioniert es allerdings einwandfrei

                    Hier mal meine Dateien
                    index.php
                    PHP-Code:
                    <?php
                    // Session starten
                    session_start();

                    // Includen
                    include ("includes/header.php");
                    include_once 
                    "includes/class_ktemplate.inc.php";

                    // Instanz für das Template erstellen
                    $t = new KTemplate("templates/index.tpl");


                    if(isset(
                    $_POST['login']))
                        {
                            
                    $query mysql_query("SELECT userid, name
                                                  FROM users
                                                  WHERE name='"
                    .$_POST['username']."' AND pass=MD5('".$_POST['passwort']."')
                                                  LIMIT 1"
                    )
                                                  OR die(
                    mysql_error());
                            
                    $array mysql_fetch_array($query);
                            if (
                    mysql_num_rows($query) == 1)
                                {
                                    
                    $userid $array['userid'];
                                    
                    session_register('userid');
                                    
                    $username $array['name'];
                                    
                    session_register('username');
                                }
                            else
                                {
                                    
                    $t_false $t -> fetchBlock("falsche_eingabe");
                                }
                        }
                        
                    if(isset(
                    $_SESSION['userid']))
                        {
                            
                    $t_eingeloggt $t -> fetchBlock("eingeloggt");
                        }


                    switch(
                    $a)
                        {
                            case 
                    'registrieren':
                                ...
                                break;
                            case 
                    'aktivieren':
                                ...
                                break;
                            case 
                    'erstellen':
                                ...
                                break;
                            default:
                                
                    $t_index $t -> fetchBlock('index');
                                break;
                        }

                    // Den Variablen einen Platzhalter zuweisen
                    $t -> assign("eingeloggt"$t_eingeloggt);
                    $t -> assign("index"$t_index);

                    // Template ausgeben
                    $t ->out();

                    // Footer includen
                    include ("includes/footer.php");
                    ?>
                    Und das Forumular
                    index.tpl
                    Code:
                    <form name="login" method="post" action="index.php">
                    <input class="formstyle2" name="username" type="text" size="16" maxlength="20" style="background-image:url(templates/img/name.gif); border-width: 0px;">
                    
                    [img]templates/img/Abstandhalter.gif[/img]
                    		  
                    <input class="formstyle2" name="passwort" type="password" size="16" maxlength="12" style="background-image:url(templates/img/pass.gif); border-width: 0px;">
                    
                    [img]templates/img/Abstandhalter.gif[/img]
                    
                    <input class="formstyle" type="submit" name="login" value="Einloggen">
                    	    </form>
                    Vielleicht sollte ich mir auch mal eine Auszeit von diesem Programmierzeugs nehmen

                    Kommentar


                    • #11
                      Probier mal, statt session_register das Setzen der Session "genauso" wie die Abfrage zu machen, also mit $_SESSION['key'] = 'value'.

                      http://de2.php.net/manual/de/functio...n-register.php
                      Wenn Sie $_SESSION (oder $HTTP_SESSION_VARS) verwenden, sollten Sie nicht session_register(), session_is_registered() und session_unregister() verwenden.

                      Kommentar


                      • #12
                        Herzlichen Dank!!! Funktioniert natürlich.
                        Ich brauch vll doch 'ne Pause

                        Kommentar


                        • #13
                          also ich würde das login-php auch trennen und über ne include function einbinden ..sonst wirds schnell unübersichtlich


                          habe da mal nen logincode für dich muß nur noch die formularfeldnamen anpassen bei dir

                          <?php require_once('Connections/mysql.php'); ?>
                          <?php

                          session_start();

                          $loginFormAction = $_SERVER['PHP_SELF'];
                          if (isset($accesscheck)) {
                          $GLOBALS['PrevUrl'] = $accesscheck;
                          session_register('PrevUrl');
                          }

                          if (isset($_POST['uname'])) {
                          $loginUsername=$_POST['uname'];
                          $password=$_POST['password'];
                          $MM_fldUserAuthorization = "userlevel";
                          $MM_redirectLoginSuccess = "login_true.php";
                          $MM_redirectLoginFailed = "loginfalse.php";
                          $MM_redirecttoReferrer = false;
                          mysql_select_db($database_mysql, $mysql);

                          $LoginRS__query=sprintf("SELECT username, password, userlevel FROM _user WHERE username='%s' AND password='%s'",
                          get_magic_quotes_gpc() ? $loginUsername : addslashes($loginUsername), get_magic_quotes_gpc() ? $password : addslashes($password));

                          $LoginRS = mysql_query($LoginRS__query, $mysql) or die(mysql_error());
                          $loginFoundUser = mysql_num_rows($LoginRS);
                          if ($loginFoundUser) {

                          $loginStrGroup = mysql_result($LoginRS,0,'userlevel');

                          $GLOBALS['MM_Username'] = $loginUsername;
                          $GLOBALS['MM_UserGroup'] = $loginStrGroup;


                          session_register("MM_Username");
                          session_register("MM_UserGroup");

                          if (isset($_SESSION['PrevUrl']) && false) {
                          $MM_redirectLoginSuccess = $_SESSION['PrevUrl'];
                          }
                          header("Location: " . $MM_redirectLoginSuccess );
                          }
                          else {
                          header("Location: ". $MM_redirectLoginFailed );
                          }
                          }
                          ?>

                          Kommentar

                          Lädt...
                          X