tutorials.de Buch-Aktion 05/2012
Seite 1 von 3 123 LetzteLetzte
Like Tree4Danke
ERLEDIGT
JA
ANTWORTEN
43
ZUGRIFFE
1817
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    partizan25 partizan25 ist offline Mitglied
    Registriert seit
    Dec 2008
    Beiträge
    11
    Hallo ihr Lieben,

    ich bin mittlerweile wirklich am verzweifeln und ich finde meinen Fehler nicht

    Folgende Ausgangslage bzw. folgende Dateien sind vorhanden:

    seite.php (die Hauptseite)
    class_kunde.php (die Klasse)
    texte.php (die Texte inkl. eines Formulars, die auf seite.php ausgegeben werden.

    Folgende Codes gibt es:

    seite.php

    Diese Datei soll entsprechend der ID entweder Text 5 (Login-Formular) oder Text 6 (Admin-Bereich) anzeigen.

    PHP-Code:
      if($_SESSION['id'] !=1)
      {
          
    $art->inhalt($text[5]);
      }
      else
      {
          
    $art->inhalt($text[6]);
      } 

    Dazu soll der Username "Admin" mit dem Passwort "Hallo" die Kundennummer 1 zugewiesen bekommen, die anderen, nennen wir sie Kunden, sollen den Timestamp erhalten als Kundennummer.

    Ausschnitt aus der texte.php
    PHP-Code:
    $text[5][0]="<form action=\"seite.php\" method=\"post\">
    <p><input name=\"username\" /> Name <input type=\"password\" name=\"pw\" /> Passwort <input type=\"submit\" value=\"Login\" /></form>"
    ;
    $text[6][0]="<h1>Admin-Bereich</h1>"
    So, wenn jetzt der Admin sich einloggt, soll er automatisch die Kundennummer 1 angewiesen bekommen, das habe ich so geschrieben:

    class_kunde.php:
    PHP-Code:
    <?php
    class kunde
    {
        private 
    $KndNr;
        
      public function 
    __construct()
      {
        if (!isset (
    $_SESSION['id'])) 
        {
          
    $this->KndNr $_SESSION['id']; 
        }
        else
        
    $_SESSION['id'] = $_SESSION['id'];
      } 
         
      public function 
    anmelden($username$pw
      {
        if (
    $_GET["username"] == $username && $_GET["pw"] == $pw)
        {
          
    $this->KndNr 1;  
        }
        else 
        {
          if (!isset (
    $_SESSION['id']))
          {
          
    $this->KndNr time(); 
          }
          else
          {
            
    $this->KndNr $_SESSION['id'];
          }
        }
      } 
      
      public function 
    __destruct() 
      {
        
    $_SESSION['id'] = $this->KndNr;
        print 
    $_SESSION['id'];  
      } 
      
      public function 
    getKundenNummer()
        {
            return 
    $this->KndNr;
        }
    }
    ?>
    Ich weiß nicht wo mein Fehler ist, dass 1. die Anmeldung funktioniert (und ich den Adminbereich erreiche) und 2. die Kundennummer 1 ausgegeben wird, wenn der Admin einloggt.

    Ich hoffe ich habe mich halbwegs verständlich ausgedrückt und wäre über Ideen und Hinweise sehr sehr dankbar.

    Gruß
    Partizan
     

  2. #2
    Avatar von Eagle-PsyX-
    Eagle-PsyX- Eagle-PsyX- ist offline Mitglied Gold
    Registriert seit
    Sep 2007
    Beiträge
    149
    Versuch mal nach dem speichern der Session testweise
    PHP-Code:
    print_r($_SESSION); 
    auszugeben, um zu sehen welche und ob überhaupt Sessions vorhanden sind.
    Hast du error_reporting(E_ALL); aktiviert um keine Fehlermeldungen zu unterdrücken?
     

  3. #3
    partizan25 partizan25 ist offline Mitglied
    Registriert seit
    Dec 2008
    Beiträge
    11
    Hallo Eagle-PsyX,

    wo setze ich den Code zur Ausgabe der Session am Besten hin?

    Error-Reporting habe ich bisher nicht eingesetzt, wo setze ich dort den Wert, bei seite.php ?
     

  4. #4
    partizan25 partizan25 ist offline Mitglied
    Registriert seit
    Dec 2008
    Beiträge
    11
    Wenn die Seite aufgerufen wird, wird folgendes ausgeworfen:

    Array ( [korb] => Array ( ) )

    Wenn ich versuche mit dem Admin einzuloggen erhalte ich danach nur das hier:

    Array ( [korb] => Array ( ) [id] => )


    Aus irgendeinem Grund wird wohl garkeine ID angelegt geschweige denn die KndNr erstellt und auf 1 gestellt..... *seufz*
     

  5. #5
    partizan25 partizan25 ist offline Mitglied
    Registriert seit
    Dec 2008
    Beiträge
    11
    ich kriege einfach keine id angezeigt.... hat jemand einen Tipp ?
     

  6. #6
    Roflmao Roflmao ist offline Mitglied Silber
    Registriert seit
    Sep 2011
    Beiträge
    54
    ich habe mich noch nicht viel mit php auseinander gesetzt, aber fehlt da nict irgendwo ein session_start(); ?
     

  7. #7
    Avatar von Yugeen
    Yugeen Yugeen ist offline Mitglied Silber
    Registriert seit
    Sep 2011
    Beiträge
    69
    Zitat Zitat von Roflmao Beitrag anzeigen
    ich habe mich noch nicht viel mit php auseinander gesetzt, aber fehlt da nict irgendwo ein session_start(); ?
    Bin da auch gerade nicht sicher ober er es hat, in den Quelltexten is aufjedenfall nichr vorhanden.

    Überall wo die Session benuzt schreib gaaanz oben, noch vor html und so
    PHP-Code:
    <?php
    session_start
    ();
    ?>
    und noch was:
    PHP-Code:
      public function anmelden($username$pw
      {
        if (
    $_GET["username"] == $username && $_GET["pw"] == $pw)
        {
          
    $this->KndNr 1;  
        }
        else 
        {
          if (!isset (
    $_SESSION['id']))
          {
          
    $this->KndNr time(); 
          }
          else
          {
            
    $this->KndNr $_SESSION['id'];
          }
        }
      } 
    braucht diese Funktionen nicht einen return wert? z.B. die Session =D
     

  8. #8
    partizan25 partizan25 ist offline Mitglied
    Registriert seit
    Dec 2008
    Beiträge
    11
    Hallo ihr Lieben,

    ich habe den Code schon etwas weiterentwickelt, ich kriege mittlerweile auch den Unix-Timestamp in die 'id' übertragen, leider schaffe ich es nicht, wenn ich Benutzername & Passwort richtig eingebe, den Unix-Timestamp mit dem Wert "1" zu überschreiben.

    Hat jemand eine Idee bzw. findet meinen Fehler****?

    class_kunde.php
    PHP-Code:
    <?php
    class kunde
    {
        protected 
    $KndNr;
        private 
    $benutzer "Admin";
        private 
    $kennwort "Hallo";
            
        public function 
    __construct()
        {
        
    $this->KndNr = (isset($_SESSION['id'])) ? $_SESSION['id'] : time();
        }
           
        public function 
    anmelden($benutzer$kennwort)
        {
          if(
    $_POST['benutzerausformular'] == $benutzer && 
             
    $_POST['kennwortausformular'] == $kennwort)
          {
              
    $this->KndNr 1;
          }
        }

        public function 
    getKundenNummer()
        {
            return 
    $this->KndNr;
        }
        
        public function 
    __destruct()
        {
          
    $_SESSION['id'] = $this->KndNr;
        }
    }
    ?>
    das Formular, das aus einer texte.php erstellt wird:

    PHP-Code:
    $text[5][0]="<form action=\"seite.php\" method=\"post\">
    <p><input name=\"benutzerausformular\" /> Name </p>
    <p><input type=\"password\" name=\"kennwortausformular\" /> Passwort</p>
    <p><input type=\"submit\" value=\"Login\" /></p>
    </form>"

    seite.php (sobald der Wert auf 1 gesetzt wird, soll das Formular ersetzt werden durch den Admin-Bereich).

    PHP-Code:
    <?php
    require_once("class_webshop.php");
    require_once(
    "texte.php");

    $art = new webshop("artikeldaten.xml");
    if(isset(
    $_REQUEST['pdf']))
    {
        
    $art->pdfliste();
    }
    $art->setTitel("Webshop");
    $art->kopf();

    if(isset(
    $_REQUEST['wk']))
    {
        
    $art->inhalt($text[3]);
        
    $art->auswahl();
        
    $art->inhalt($text[2]);
    }
    elseif(isset(
    $_REQUEST['order']))
    {
        
    $art->bestellen($art->getKundenNummer());
        
    $art->inhalt($text[4]);
    }
    else
    {
      if(!empty(
    $_REQUEST['id']))
      {
        
    $art->waehlen($_REQUEST['id']);
      }
      
    $art->inhalt($text[0]);
      
    $art->anzeigen();
      
    $art->inhalt($text[1]);
      if(
    $_SESSION['id'] != 1)   
      {
        
    $art->inhalt($text[5]);
      }
      else
      {
        
    $art->inhalt($text[6]);
      } 
    print_r($_POST);
    print 
    "<br />";
    print_r($_SESSION); 

    $art->fuss();
    ?>
    Ich danke denen, die bereits helfen (bzw. geholfen haben) und denen, die mir hoffentlich noch etwas weiterhelfen

    Euer Partizan
     

  9. #9
    Xrzepetelda Xrzepetelda ist offline Rookie
    Registriert seit
    Oct 2011
    Beiträge
    8
    Blog-Einträge
    1
    Hallo Ihr Lieben,

    das Script von Partizan funktioniert so bei mir nicht.
    Was mir aufgefallen war ist, dass wenn ich in der seite.php:

    PHP-Code:
      if($_SESSION['id'] != 1)   
      {
        
    $art->inhalt($text[5]);
      }
      else
      {
        
    $art->inhalt($text[6]);
      } 
    austausche gegen:

    PHP-Code:
      if($_SESSION['id'] = 1)   
      {
        
    $art->inhalt($text[6]);
      }
      else
      {
        
    $art->inhalt($text[5]);
      } 
    kommt nur noch die id 1

    Ist jemand vielleicht schon weitergekommen?
     

  10. #10
    Avatar von saftmeister
    saftmeister saftmeister ist offline Der Saft sei mit dir
    tutorials.de Premium-User
    Registriert seit
    May 2006
    Ort
    There is no place like 127.0.0.1
    Beiträge
    3.521
    Zitat Zitat von Xrzepetelda Beitrag anzeigen
    PHP-Code:
      if($_SESSION['id'] = 1)   
      {
        
    $art->inhalt($text[6]);
      }
      else
      {
        
    $art->inhalt($text[5]);
      } 
    kommt nur noch die id 1
    Was auch klar ist, denn du führst da keine Prüfung auf Gleichheit durch sondern erledigst eine Zuweisung. Eine Zuweisung mit einem Wert ungleich 0, null oder false ergibt immer WAHR, was außerdem dazu führt, das der else-Zweig niemals ausgeführt wird.
     
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

  11. #11
    Avatar von dodo123
    dodo123 dodo123 ist offline Mitglied Bronze
    Registriert seit
    Oct 2011
    Beiträge
    32
    Habe genau das gleiche Problem (selbes Script), hat noch jemand vielleicht was rausgefunden?
     

  12. #12
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Wie saftmeister beschrieben hat
    $_SESSION['id'] = 1 ist nicht $_SESSION['id'] == 1
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  13. #13
    Avatar von dodo123
    dodo123 dodo123 ist offline Mitglied Bronze
    Registriert seit
    Oct 2011
    Beiträge
    32
    Zitat Zitat von Yaslaw Beitrag anzeigen
    Wie saftmeister beschrieben hat
    $_SESSION['id'] = 1 ist nicht $_SESSION['id'] == 1

    Hab mich missverständlich ausgedrückt,
    habe dieses Script:


    PHP-Code:
     if($_SESSION['id'] != 1)   
      {
        
    $art->inhalt($text[5]); // Anmeldeformular
      
    }
      else
      {
        
    $art->inhalt($text[6]); // Admin-Bereich
      

    und diese Funktion

    PHP-Code:
    public function anmelden($bn$pw)
        {
        if(
    $_POST['bn'] == 'Admin' && $_POST['pw'] == 'Hallo')
          {
          
    $this->KndNr 1;
        } 
    Stehe aber vor dem Selben Problem, dass wenn ich mich übers Formular anmelde, ich nicht in den Amdin-Bereich komme.
     

  14. #14
    Avatar von saftmeister
    saftmeister saftmeister ist offline Der Saft sei mit dir
    tutorials.de Premium-User
    Registriert seit
    May 2006
    Ort
    There is no place like 127.0.0.1
    Beiträge
    3.521
    Wo wird die Funktion "anmelden" in deinem Source-Code aufgerufen? Wie sieht dein Login-Formular aus? Du prüfst in deiner Funktion nicht die Parameter die an die Funktion übergeben wurden, sondern gegen statische Strings - hast du das beim testen berücksichtigt?
     
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

  15. #15
    Avatar von dodo123
    dodo123 dodo123 ist offline Mitglied Bronze
    Registriert seit
    Oct 2011
    Beiträge
    32
    Zitat Zitat von saftmeister Beitrag anzeigen
    Wo wird die Funktion "anmelden" in deinem Source-Code aufgerufen? Wie sieht dein Login-Formular aus? Du prüfst in deiner Funktion nicht die Parameter die an die Funktion übergeben wurden, sondern gegen statische Strings - hast du das beim testen berücksichtigt?

    Also hier mal das komplette Hauptprogramm

    PHP-Code:
    <?php
    require_once("class_webshop04.php");
    require_once(
    "texte04.php");
    require_once(
    "class_kunde.php");

    $art = new webshop("artikeldaten.xml");
    if(isset(
    $_REQUEST['pdf']))
    {
      
    $art->pdfliste();
    }
    $art->setTitel("Webshop 03");
    $art->kopf();

    if(isset(
    $_REQUEST['wk']))
    {
      
    $art->inhalt($text[3]);
      
    $art->auswahl();
      
    $art->inhalt($text[2]);
    }
    elseif(isset(
    $_REQUEST['order']))
    {
      
    $art->bestellen($art->getKundenNummer());
      
    $art->inhalt($text[4]);
    }
    else
    {
      if(!empty(
    $_REQUEST['id']))
      {
        
    $art->waehlen($_REQUEST['id']);
      }
      
    $art->inhalt($text[0]);
      
    $art->anzeigen();
      
    $art->inhalt($text[1]);
      if(
    $_SESSION['id'] != 1// Function Anmelden
      
    {
        
    $art->inhalt($text[5]);
        print 
    "Sie sind als Kunde eingeloggt<br />";
      }
      else
      {
        
    $art->inhalt($text[6]);
      }
    }
    $art->fuss();
    ?>

    Das Formular wird aus einer PHP-Datei generiert, in der ich auch die anderen Texte speichere

    PHP-Code:
    $text[5][0]="<form action=\"programm46.php\" method=\"post\"> 
    <p><input name=\"bn\" /> Name </p> 
    <p><input type=\"password\" name=\"pw\" /> Passwort</p> 
    <p><input type=\"submit\" value=\"Login\" /></p> 
    </form>"
    ;
    $text[6][0]="<html><body><p><h1>Admin-Bereich</p></body></html>"
    und hier die class_kunde.php, da steht die Funktion anmelden

    PHP-Code:
    <?php
    class kunde
    {
      private 
    $KndNr;
      private 
    $bn "Admin";
      private 
    $pw "Hallo";

      public function 
    __construct()
      {
          
    session_start();
        
    $this->KndNr = (isset($_SESSION['id'])) ? $_SESSION['id'] : time();
      }
      
      public function 
    anmelden($bn$pw)
        {
        if(
    $_POST['bn'] == 'Admin' && $_POST['pw'] == 'Hallo')
          {
          
    $this->KndNr 1;
        }
        }
        
    public function 
    getKundenNummer() 
        { 
            return 
    $this->KndNr
        } 
         
        public function 
    __destruct() 
        { 
          
    $_SESSION['id'] = $this->KndNr;
        }
    }

    ?>
    Vielleicht ist es jetzt im Zusammenhang ersichtlicher.
    Ich glaube, dass es daran liegt, dass ich die Funktion im Hauptprogramm falsch aufrufe, aber kann mich natürlich auch irren.
     

Ähnliche Themen

  1. Csharp Session Management
    Von StefanR im Forum .NET Web und Kommunikation
    Antworten: 1
    Letzter Beitrag: 14.09.09, 11:01
  2. Komplexes Session/Cookie Management
    Von nullpunkt im Forum PHP
    Antworten: 6
    Letzter Beitrag: 23.04.05, 20:23
  3. Problem mit Session-Management
    Von Moritz123 im Forum PHP
    Antworten: 2
    Letzter Beitrag: 01.12.04, 12:57
  4. tutorial workaholic session-management
    Von fragemann im Forum PHP
    Antworten: 10
    Letzter Beitrag: 02.06.03, 12:56

Stichworte