login Problem mit MAC's

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

  • login Problem mit MAC's

    Moin,
    folgendes Problem:
    habe vor einem Jahr ein Login Script geschrieben, das bis vor einigen Tagen fehlerfrei funktioniert hat.
    Hier erstmal die Bescheibung des Script:
    Das gesamte Script wird über eine index.php (mit selbstgestrickten Template System, das ich übernehmen mußte) gesteuert.
    Grober Aufbau:
    PHP-Code:
    header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");    // Datum aus Vergangenheit
    header("Last-Modified: " gmdate("D, d M Y H:i:s") . " GMT"false);   // immer geändert
    header("Cache-Control: no-store, no-cache, must-revalidate"false);  // HTTP/1.1
    header("Cache-Control: max-age=0, post-check=0, pre-check=0"false);
    header("Pragma: no-cache"false);    // HTTP/1.0
    session_start();
    error_reporting(E_ALL);
    include_once(
    "admin/config.php");
    include_once(
    "admin/template_parser.php");
    include_once(
    "admin/functions.php");
    // Weiteres fürs template 
    // dann:
    switch($page['action']) {
    // die lange Switch Case Cascade 
    // $page['action'] kann sowohl mit $_POST oder $_GET gefüttert werden
         
    case 'loginForm' // hier geht zur Login Seite
            
    $page['errorstring'] = "";
            
    output($c_templatedir."login.form.html",$page);
            break;


         case 
    'login' :
    // mit login wird die DB abgefragt. Je nach Status wird der User auf eine Andere Seite geleitet  
            
    $page['errorstring'] = "";
            if(
    login($page)){// login wird gleich beschrieben    
    // ACHTUNG: header stimmt so natürlich nicht, aber das Forum BBcode 
    // schreibt mir ständig einen href rein, deswegen Blabla  
    switch ($_SESSION['daten']['status']){
                     case 
    $page['action'] ="mainInputUser";
                              
    header("Location":Blabla  true302); 
                            break;
                     case 
    $page['action'] ="mainInputUser";
                              
    header("Location:"Blabla ?action=pleitertrue302);
                            break;
                     case 
    $page['action'] ="adminViewSelect";
                              
    header("Location:"Blabla."?action=admin"true302);
                            break;
                     case 
    $page['action'] ="SuperVisiorViewSelect";
                              
    header("Location:"Blabla?action=SuperVisiortrue302);
                            break;                        
                 }         
            }else{ 
               
    $page['page_title'] = 'Fehler Seite';
               
    $page['action'] ="error";
               
    output($c_templatedir."error.html",$page);
            }  
            break;

    // zum Bleistift hierhin, Startseite für einfache Mitglieder:
          
    case 'main' :
            if (!
    is_logged_in()){// prüft, ob ein Login erfolgreich war
    // hier scheint auch das Problem zu liegen..
                 
    $page['action'] ="login";
                 
    $page['page_title'] = 'Login Page';
                 
    $page['errorstring'] = "Sie wurden zum Login umgeleitet";
                 
    output($c_templatedir."login.form.html",$page);
                 break;
            }else{
                 
    $page['username'] = $_SESSION['daten']['loginname'];
                 
    $page['userstatus'] = "Mitarbeiter";
                 
    $page['action'] ="main";
                 
    $page['errorstring']=" ";
                 
    output($c_templatedir."main.html",$page);    
             }
            break;
    //// irgendeine Aktion:
         
    case 'foobar' :
            if (!
    is_logged_in()){
                 
    $page['action'] ="login";
                 
    $page['page_title'] = 'Login Page';
                 
    $page['errorstring'] = "Sie wurden zum Login umgeleitet";
                 
    output($c_templatedir."login.form.html",$page);
                 break;
            }else{       
                 if(
    foobar($parameter)){
                     
    $page['action'] ="tuWat";
                     
    $page['page_title'] = 'Übersicht';
                     
    $page['errorstring'] = "";             
                    
    output($c_templatedir."form.show.entry.html",$page);
                 }else{
                    
    $page['page_title'] = 'Fehler Seite';
                    
    $page['action'] ="error";
                    
    output($c_templatedir."error.html",$page);
                 } 
            }
            break; 
    Hier das File mit dem Login:
    PHP-Code:
    function login(&$page){

             include_once(
    "mysql_class.inc.php");
        if (
    trim($_POST['name'] == "") || trim($_POST['passwort'] == "")){
            
    $page['errorstring'] = "<h3>Bitte Name und/oder Passwort eingeben!</h3>";
                   return 
    false;
        } 
        
    $_POST['name'] = stripslashes(strip_tags(htmlspecialchars($_POST['name'],ENT_QUOTES)));
        
    $_POST['passwort'] = stripslashes(strip_tags(htmlspecialchars($_POST['passwort'],ENT_QUOTES)));    
            
    $db = new mysqlDB();
            
    $db->conect();
        
    $sql "SELECT * from  user ";
        
    $sql .= "WHERE ";
        
    $sql .= "(BINARY loginname = '".$_POST['name']."') ";
        
    $sql .= "and ";
        
    $sql .= "(BINARY passwort = '".$_POST['passwort']."');"
        
    $result mysql_query($sql);
        
    $data mysql_fetch_array ($resultMYSQL_ASSOC);

        if (
    mysql_num_rows ($result) > 0) {
            
    // Ein Datensatz wurde gefunden.
            
    $page['errorstring'] = "Login erfolgreich";
            
    $_SESSION['daten'] = $data;
            
    $_SESSION['logedin'] = "true";
             
            
    $page['username'] = $_SESSION['daten']['loginname'];
        } else { 
             
    $_SESSION['logedin'] = "false";
             
    $page['errorstring'] = "<h3>Falscher Loginname und/oder Passwort</h3>"
             
    $db->destroy();
                  return 
    false;
        }
        
    $db->destroy(); 
             return 
    true;  
    }

    // Test, ob Login erfolgte
    function is_logged_in(){
     if(isset(
    $_SESSION['logedin'])){
         if (
    $_SESSION['logedin'] != true){
             return 
    false;
         } else {
             return 
    true;
         }
      } 

    Mag zwar nicht hübsch sein, aber hat funktioniert....
    aber seit ca. einer Woche haben User mit Mac Problem sich einzuloggen.
    Der Fehler tritt nur mit MAC's auf, egal ob FF oder Safari
    Es scheint so als ob das Problem bei
    is_logged_in()
    liegt, das liefert nämlich "false" zurück, es wird nämlich immer:
    PHP-Code:
         case 'foobar' :
            if (!
    is_logged_in()){
                 
    $page['action'] ="login";
                 
    $page['page_title'] = 'Login Page';
                 
    $page['errorstring'] = "Sie wurden zum Login umgeleitet";
                 
    output($c_templatedir."login.form.html",$page); 
    ausgeführt....
    Wie gesagt, mit DOSen ist alles Tutti.
    Hat einer ne Idee, woran das liegen kann?
    Der Effekt ist wie gesagt letzte Woche schon mal für ein paar Stunden aufgetreten, war dann wieder in Ordnung, jetzt isser wieder da....
    An den Server Einstellungen ist nix geändert worden....
    "I don't want to belong to any club that would accept me as a member."

    Groucho Marx

  • #2
    ich habe mir dein riesen-script jetzt nicht genau angesehen, aber so, wie du es beschreibst, liegt es wohl daran, dass die alte session nicht wieder aufgenommen wird.

    Kommentar


    • #3
      Erstmal Danke
      aber wie kann das sein:
      - hat über ein Jahr (problemlos) funktioniert
      - klemmt z.Zt. nur auf MAC's
      - local läuft's auch mit dem MAC
      ??????
      "I don't want to belong to any club that would accept me as a member."

      Groucho Marx

      Kommentar


      • #4
        ja, zugegeben, dein problem ist schon "komisch".
        aber ich hätte mir zumindest mal das session-array ausgeben lassen, weil der login klappert ja, oder?
        kann ja sein, das bei den betreffenden clients etwas geändert wurde und z.b. session-cookies nicht mehr angenommen werden

        Kommentar


        • #5
          aber ich hätte mir zumindest mal das session-array ausgeben lassen, weil der login klappert ja, oder?
          habe ich

          betreffenden clients etwas geändert wurde und z.b. session-cookies nicht mehr angenommen werden
          Das hatte ich schon mal, das jemand alle Cookies deaktiviert hatte.

          Teufel Technik

          P.S.:
          Hatte gestern bei meiner Freundin folgendes ding:
          Hi-Fi Anlage umgeräumt;
          die Freundin: "schließ doch mal an, bist ja schließlich Techniker"; verkable die Anlage;
          Verstärker schaltet sich sofort ab, sobald ein Signal draufgegeben wird;
          Freundin: "Loser";
          ich: "die Welt nicht begreif'..."
          Anlage: störisch;
          der nächste Morgen:
          mache die Anlage an;
          Anlage schnurrt wie ein junges Kätzchen;
          Freundin: dito.....;
          "I don't want to belong to any club that would accept me as a member."

          Groucho Marx

          Kommentar


          • #6
            so, jetzt habe ich zumindest rausbekommen, das auf den MAC's die Session nicht angelegt wird. An den Clienten kann's nicht liegen, am Server aber ja auch nicht, auf den Windows Maschinen funzt es ja....
            Ihr Server Crack's, woran kanns den liegen?
            "I don't want to belong to any club that would accept me as a member."

            Groucho Marx

            Kommentar


            • #7
              die session wird grundsätzlich auf dem server angelegt, der client muss nur die session-id übermitteln. verstehe deine aussage nicht.

              erzähl uns lieber noch eine nette geschichte von deiner freundin, das ist unterhaltsamer

              Kommentar


              • #8
                die session wird grundsätzlich auf dem server angelegt, der client muss nur die session-id übermitteln. verstehe deine aussage nicht.
                ist mir klar, deswegen wundere ich mich ja.
                habe mal :
                PHP-Code:
                print_r($_SESSION); 
                geschrieben.
                Auf der XP Maschine wird mir brav das Session Array angezeigt,
                auf MAC's mit allen Browsern nur ein leeres Array......
                aber wie gesagt: im internen Netz tun's auch die MAC's
                der Server Admin schwört mir Stein & Bein das er nix ander Apache Config geändert hat
                erzähl uns lieber noch eine nette geschichte von deiner freundin, das ist unterhaltsamer
                wenn du an Geschichten aus der Welt der Raubtierbändigung interssiert bist
                Zuletzt geändert von mcmurphy; 10.08.2006, 17:49.
                "I don't want to belong to any club that would accept me as a member."

                Groucho Marx

                Kommentar


                • #9
                  Bin jetzt soweit:
                  Die Session geht bei den MAC's durch den header("location ....);
                  Befehl verloren:

                  PHP-Code:
                  print_r $_SESSION); // hier wird der Session Inhalt noch gezeigt
                  switch ($_SESSION['daten']['status']){
                                   case 
                  $page['action'] ="mainInputUser";
                                            
                  header("Location:"Blabla ?action=maintrue302); 
                                          break;
                                   case 
                  $page['action'] ="mainInputUser";
                                            
                  header("Location:"Blabla ?action=admintrue302);
                                          break;
                  // etc 

                  ////////////////////////


                        
                  case 'main' :
                    
                  print_r $_SESSION); 
                  // Ist bei MAC's leer, bei XP sind die Werte noch da
                          
                  if (!is_logged_in()){
                               
                  $page['action'] ="login";
                               
                  $page['page_title'] = 'Login Page';
                               
                  $page['errorstring'] = "Sie wurden zum Login umgeleitet";
                               
                  output($c_templatedir."login.form.html",$page);
                               break;
                          }else{
                               
                  $page['username'] = $_SESSION['daten']['loginname'];
                               
                  $page['userstatus'] = "Mitarbeiter";
                               
                  $page['action'] ="main";
                               
                  $page['errorstring']="&nbsp;";
                               
                  output($c_templatedir."main.html",$page);  
                           } 
                  Weiß einer einen möglichen Grund für dieses, diplomatisch ausgedrückt, obskure Verhalten?
                  "I don't want to belong to any club that would accept me as a member."

                  Groucho Marx

                  Kommentar


                  • #10
                    auf alle fälle verlangt header location per manual einen vollständigen url (http://usw...). ist das der fall?

                    Kommentar


                    • #11
                      ja, sieht so aus:
                      <?
                      switch ($_SESSION['daten']['status']){
                      case 0 : $page['action'] ="mainInputUser";
                      header("Location: http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']."?action=main", true, 302);
                      break;
                      case 1 : $page['action'] ="mainInputPleiter";
                      header("Location: http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']."?action=pleiter", true, 302);
                      break;
                      case 2 : $page['action'] ="adminViewSelect";
                      header("Location: http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']."?action=admin", true, 302);
                      break;
                      case 3 : $page['action'] ="SuperVisiorViewSelect";
                      header("Location: http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']."?action=SuperVisior", true, 302);
                      break;
                      }
                      ?>
                      Hat ich mit blabla aufgefüllt, weil mir das BBCode System dieses Forum's href Tags einbauen wollte.......
                      "I don't want to belong to any club that would accept me as a member."

                      Groucho Marx

                      Kommentar

                      Lädt...
                      X