tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
12
ZUGRIFFE
556
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    andrassberlin andrassberlin ist offline Mitglied
    Registriert seit
    Mar 2005
    Beiträge
    18
    Hallo,

    ich habe folgendes Problem und weiß nicht mehr weiter...

    auf meiner homepage habe ich einige seiten, die nur bestimmten usern zugänglich sein sollen. Hat sich ein user einmal eingeloggt, so kann er während seiner Sitzung sämtliche -- auch geschützte Seiten -- öffnen. Auf jeder Seite habe ich daher in einem iframe ein loginscript:

    login.php:
    PHP-Code:
         <?php
         
    // Session starten
         
    session_start ();
         
         
    $loginFormAction $_SERVER['PHP_SELF'];
         if (isset(
    $accesscheck)) {
           
    $GLOBALS['PrevUrl'] = $accesscheck;
           
    session_register('PrevUrl');
         }
         
         
    // Datenbankverbindung aufbauen
         
    $connectionid mysql_connect ("localhost""root""");
         if (!
    mysql_select_db ("LoginSystem"$connectionid))
         {
           die (
    "Keine Verbindung zur Datenbank");
         }
         
         
    $sql "SELECT ".
             
    "Id, Nachname ".
           
    "FROM ".
             
    "benutzerdaten ".
           
    "WHERE ".
             
    "(Nickname like '".$_REQUEST["name"]."') AND ".
             
    "(Kennwort = '".md5 ($_REQUEST["pwd"])."')";
         
    $result mysql_query ($sql);
         
         if (
    mysql_num_rows ($result) > 0)
         {
           
    // Benutzerdaten in ein Array auslesen.
           
    $data mysql_fetch_array ($result);
         
           
    // Sessionvariablen erstellen und registrieren
           
    $_SESSION["user_id"] = $data["Id"];
           
    $_SESSION["user_nachname"] = $data["Nachname"];
         
           
    header ("Location: intern.php");
         }
         else
         {
           
    header ("Location: formular.php?fehler=1");
         }
         
    ?>
    nachdem login wird intern.php aufgerufen:
    PHP-Code:
         <link rel="stylesheet" type="text/css" media='screen' href="../html/style.css" />
         
         <style type="text/css">
         <!--
         table
         {
         font-size:100%;
         width:98%;
         font-weight: normal;
         border-spacing: 0px 0px;
         }
         
         img {
                border: 0px solid #326B5A;
              }
         -->
         </style>
         </head>
         <body>
         <div id="box_right">
           <div id='frame'>
             <div align="left">
         
                 <form action="../php/login.php" method="post" id="login">
                 <table border="0" cellpadding="1" cellspacing="0" width="168">
                     <tbody><tr>
                  <td bgcolor="#D1EEEA"><img src="../imgs/login.gif" border="0" height="23" width="168"><br>
                  <table bgcolor="white" border="0" cellpadding="4" cellspacing="0" width="168">
                         <tbody><tr>
                          <td colspan="2"><span><font color="#707070">BenutzerId: <?php echo $_SESSION["user_id"]; ?><br>
                                                     Nachname: <?php echo $_SESSION["user_nachname"]; ?></font></span></td>
                         </tr>
         
                     </tbody>
                          </table>
             <table bgcolor="white" border="0" cellpadding="3" cellspacing="0" width="168">
                         <tbody>
                        <tr>
                      <td width="60"><br></td>
                   <td><div align="right"><a href="logout.php"><img src="../imgs/logout_bt.gif" alt="Ausloggen" border="0" height="21" vspace="4" width="67">&nbsp;</a></div></td>
                        </tr>
                              </tbody>
                          </table>
                          </table>
                  </div>
             </div>
         </div>
         </body>
         </html>
    bzw formular.php:
    PHP-Code:
        <?php session_start (); ?>
        <html>
        <head>
          <title>Login</title>
        
        <link rel="stylesheet" type="text/css" media='screen' href="../html/style.css" />
        
        <style type="text/css">
        <!--
        table
        {
        font-size:100%;
        width:98%;
        font-weight: normal;
        border-spacing: 0px 0px;
        }
        
        img {
               border: 0px solid #326B5A;
             }
        -->
        </style>
        
        </head>
        
        <body <font color="#FF0000"></font>
        <div id="error">
           <div id='frame'>
              <?php
               
    if (isset ($_REQUEST["fehler"]))
               {
               echo 
    "Die Zugangsdaten waren ungültig.";
               }
              
    ?>
           </div>
        </div>
        <div id="box_right">
          <div id='frame'>
             <div align="left">
        
                 <form action="../php/login.php" method="post" id="login">
                <table border="0" cellpadding="1" cellspacing="0" width="168">
                    <tbody><tr>
                  <td bgcolor="#D1EEEA"><img src="../imgs/login.gif" border="0" height="23" width="168"><br>
                  <table bgcolor="white" border="0" cellpadding="4" cellspacing="0" width="168">
                         <tbody><tr>
                          <td colspan="2"><span><font color="#707070">Bitte loggen Sie sich hier mit Ihrem Benutzernamen und Kennwort ein ...</font></span></td>
                         </tr>
        
                        </tbody></table>
                  <table bgcolor="white" border="0" cellpadding="3" cellspacing="0" width="168">
                                    <tbody><tr>
                          <td valign="top" width="60"><span>&nbsp;<b>Name</b></span></td>
                       <td><div align="right"><input class="wst_input" name="name" size="8" type="text"></div></td>
                         </tr>
                         <tr>
                          <td valign="top" width="60"><span>&nbsp;<b>Passwort</b></span></td>
        
                       <td><div align="right"><input class="wst_input" name="pwd" size="8" type="password"></div></td>
                         </tr>
                         <tr>
                          <td width="60"><br></td>
                       <td><div align="right"><input src="../imgs/login_bt.gif" alt="Einloggen" title="Einloggen" border="0" height="21" type="image" vspace="4" width="67"></div></td>
                         </tr>
        
                        </tbody></table>
                  <img src="../imgs/trenner.gif" border="0" height="9" width="165"><br>
                  <table bgcolor="white" border="0" cellpadding="4" cellspacing="0" width="168">
                         <tbody><tr>
                          <td colspan="2"><span>Haben Sie noch keinen Benutzernamen?
                          Dann können Sie <b><a target="_top" href="./getpass.php">hier </a></b> ihr Passwort anfordern.</span></td>
                         </tr>
                     </tbody></table></td>
                    </tr>
        
                </tbody></table>
                </form>
                  </div>
             </div>
          </div>
        </body>
        </html>

    Der Vollständigkeit halber hier die Datei checkuser.php:
    PHP-Code:
         <?php
         session_start 
    ();
         if (!isset (
    $_SESSION["user_id"]))
         {
           
    header ("Location: formular.php");
         }
         
    ?>
    Da auf jeder Seite die Datei login.php vorkommt (damit man sich auf jeder Seite einloggen kann) möchte ich nun eine Abfrage realisieren, mit der entschiednen wird ob die login.php im iFrame verwendet wird, also der user noch nicht eingeloggt ist, oder ob formular.php verwendet wird falls der user bereits eingeloggt ist.
    Leider habe ich keine Ahnung wie ich das umsetzen soll. Bitte helft mir, ich verzweifle langsam. Ist denn meine Idee eigentlich umständlich, und falls ja, geht das ncoh simpler?

    Vielen Dank schon mal im Voraus,

    Andreas
    Geändert von andrassberlin (20.05.05 um 23:18 Uhr)
     

  2. #2
    Avatar von Dennis Wronka
    Dennis Wronka Dennis Wronka ist offline Soulcollector
    Registriert seit
    Apr 2002
    Ort
    Hong Kong
    Beiträge
    12.296
    Blog-Einträge
    231
    An der Stelle wo Du das iFrame definierst musst Du Ueberpruefen ob die UserID in der Session steht und kannst anhand dessen entscheiden was dargestellt werden soll.
     
    PHP Class Collection - PHP-Klassen fuer PHP 5 (und Teilweise auch fuer PHP 4)
    Updates: Catcher 1.1, FTPConnection 1.2, MultiSQL 1.1, RSS2 1.1, SMTPConnection 1.4
    __________________
    EasyLFS - Hintergrundinformationen, Installationsanleitung, Softwareliste und Download
    EasyLFS Projektthread - Informationen, Status und Diskussion zu meiner Linux-Distribution
    __________________
    Ich bin die Schildkroete, mein Sohn. Ich habe das Universum erschaffen, aber bitte mach mir daraus keinen Vorwurf; ich hatte Bauchschmerzen.
    __________________
    Zitat Zitat von Friedrich Nietzsche
    Man muss noch Chaos in sich haben, um einen tanzenden Stern gebaeren zu koennen.

  3. #3
    andrassberlin andrassberlin ist offline Mitglied
    Registriert seit
    Mar 2005
    Beiträge
    18
    Guten morgen...

    wie sieht die denn aus, bin nicht der Experte in php. Anscheinend habe ich mich da auch etwas übernommen mit. Also ich stelle mir das so vor:

    PHP-Code:
      <?php
                 
    if($_SESSION['user_id']) {
                    
    header ('Location: ./home/php/intern.php');
                 } else {
                    
    header ('Location: ./home/php/formular.php');
                 }
        
    ?>
    aber das dunktioniert nicht. Anscheinend habe ich einige Syntaxfehler gemacht. Kann mir bitte noch jemand helfen? Danke schonmal...

    Andreas
    Geändert von andrassberlin (22.05.05 um 02:08 Uhr)
     

  4. #4
    andrassberlin andrassberlin ist offline Mitglied
    Registriert seit
    Mar 2005
    Beiträge
    18
    noch jemand da, der etwas Musse hat mit zu helfen...

    Andreas
     

  5. #5
    Registriert seit
    Mar 2005
    Ort
    Bühl/Baden
    Beiträge
    2.330
    Hallo.
    Hast du auf dieser Seite session_start() stehen, auf der du die Abfrage machst?
     
    Gruß fanste

    Benutze bitte immer die passende Highlight-Tags.(z.B: für PHP [php] [/php] Allgemein: [highlight=SCRIPTSPRACHE]Code[/highlight] )

    Problem gelöst? Dann markiere das Thema bitte als erledigt!
    Beachte bitte die Netiquette. Insbesondere Punkt 15.

  6. #6
    Julian Maicher Julian Maicher ist offline Mitglied Smaragd
    Registriert seit
    Jan 2004
    Ort
    Paderborn
    Beiträge
    1.210
    Wenn ich das richtig verstehe, willst du das Login Formular einblenden wenn der User nicht eingelogged ist und ausblenden, wenn er eingelogged ist.
    PHP-Code:
    if(isset($_SESSION['user_id'])) {
       
    // Formular anzeigen
    } else {
       echo 
    "Sie sind eingelogged!";

     

  7. #7
    andrassberlin andrassberlin ist offline Mitglied
    Registriert seit
    Mar 2005
    Beiträge
    18
    Also wenn ich den php-code:

    PHP-Code:
       <?php
                  
    if($_SESSION['user_id']) {
                     
    header ('Location: ./home/php/intern.php');
                  } else {
                     
    header ('Location: ./home/php/formular.php');
                  }
         
    ?>
    einbinde, bekomme ich diese Fehlermeldung:

    Warning: Cannot modify header information - headers already sent by (output started at C:\apache\xampp\htdocs\AKTUELL\header.php:9) in C:\apache\xampp\htdocs\AKTUELL\home\index.html on line 20

    In Zeile 20(index.html) steht:
    PHP-Code:
    header ('Location: formular.php'); 
    Wenn ich diesen Code einbinde:
    PHP-Code:
    if(isset($_SESSION['user_id'])) { 
       
    // Formular anzeigen 
    } else { 
       echo 
    "Sie sind eingelogged!"

    dann erhalte ich auch wenn ich nicht eingeloggt bin: Sie sind eingelogged!

    Und ja, auf der Seite habe ich
    PHP-Code:
    session_start(); 
    stehen. Wo liegt der Fehler?

    Andreas
     

  8. #8
    Registriert seit
    Mar 2005
    Ort
    Bühl/Baden
    Beiträge
    2.330
    du darfst vor header keine Ausgabe machen. Probiers mal so:
    PHP-Code:
    <?php
         ob_start
    ();
                 if(
    $_SESSION['user_id']) {
                    
    header ('Location: ./home/php/intern.php');
                 } else {
                    
    header ('Location: ./home/php/formular.php');
                 }
         
    flush();
        
    ?>
    dann müsste es eigentlich gehen.
     
    Gruß fanste

    Benutze bitte immer die passende Highlight-Tags.(z.B: für PHP [php] [/php] Allgemein: [highlight=SCRIPTSPRACHE]Code[/highlight] )

    Problem gelöst? Dann markiere das Thema bitte als erledigt!
    Beachte bitte die Netiquette. Insbesondere Punkt 15.

  9. #9
    andrassberlin andrassberlin ist offline Mitglied
    Registriert seit
    Mar 2005
    Beiträge
    18
    Hi fanste,

    hab Deinen Post jetzt mal umgesetzt, jedoch ohne Erfolg.

    Code :
    1
    
    [b]Warning[/b]: Cannot modify header information - headers already sent by (output started at C:\apache\xampp\htdocs\AKTUELL\header.php:9) in [b]C:\apache\xampp\htdocs\AKTUELL\home\index.html[/b] on line [b]21[/b]

    Mein seite setzt sich so zusammen:

    index.php (wird als erstes aufgerufen)
    PHP-Code:
    <?
        
    if(ereg("http",$site)) { die("Keine externen Seiten erlaubt"); }
        if(
    ereg("www",$site)) { die("Keine externen Seiten erlaubt"); }
        if(
    ereg("://",$site)) { die("Keine externen Seiten erlaubt"); }
        if(
    ereg("uname",$site)) { die("Keine externen Seiten erlaubt"); }
        include(
    "header.php");
        if(!
    $site) { $site "home/index.html"; }
        include(
    "$site");
        include(
    "footer.php");
       
    ?>
    in header.php wird lediglich das menu und ein counter dargestellt.

    index.html:
    PHP-Code:
    <!-- CONTENT -->
       <div id='content'>
                <h2> Willkommen auf B.A.H. - online!</h2>
       
             <div class="welcome">
              <p> Die 1987 gegründete B.A.H. ist ein Zusammenschluss selbstständiger Landesverbände. Eigenständige und starke Landesverbände können die Interessen der Mitglieder vor Ort am besten vertreten.</p>
       
              <p>Die B.A.H. organisiert den Informationsaustausch zwischen den Landesverbänden und vertritt die gemeinsam abgestimmten Ziele auf Bundesebene gegenüber Kranken- und Pflegekassen, Politik und Behörden. </p>
              <p><img border="1" bordercolor="#326B5A" src="./home/imgs/Haende.jpg" align="right"></p>
       
             </div>
             </div>  <!-- end content -->
       
             <div id='box_right'>
              <!-- LOG IN -->
               <?php
            ob_start
    ();
                    if(
    $_SESSION['user_id']) {
                       
    header ('Location: ./home/php/intern.php');
                    } else {
                       
    header ('Location: ./home/php/formular.php');
                    }
            
    flush();
           
    ?>
              <iframe scrolling="no" align="left" frameborder="0" width="180" height="250" src="./home/php/login.php"></iframe>
              <!-- end LOGIN -->
       
       </div>
    sieht so aus.

    und zu guter letzt wird die footer.php einbezogen:
    PHP-Code:
       <!-- FOOTER -->
     <
    div id='footer'>&copyCopyright 2005, <a href="mailto:andreasworch@web.de">Andreas Worch</aAll rights reserved.
          </
    div> <!-- end FOOTER -->
       
       </
    div> <!--end CONTAINER -->
        </
    div
    Die index.html wird über das menue mit anderen html-seiten ausgetauscht. und jedesmal soll entschieden werden, ob der user bereits angemeldet ist oder nicht.
    Was muss ich ändern?

    Kann ich hier im Forum zum besseren Verständnis eigentlich Verzeichnisse hochladen?


    Andreas
    Geändert von andrassberlin (22.05.05 um 12:12 Uhr)
     

  10. #10
    Registriert seit
    Mar 2005
    Ort
    Bühl/Baden
    Beiträge
    2.330
    schreib die index.htm mal um. du machst da ja trotzdem schon eine ausgabe. in HTML. schreib mal am Anfang der seite
    PHP-Code:
    <?
    ob_start
    ();
    ?>
    //HTML CODE
    <?php
    if($_SESSION['user_id']) {
    header ('Location: ./home/php/intern.php');
    } else {
    header ('Location: ./home/php/formular.php');
    }
     
    ?>
    //HTML CODE
    <?
    flush
    ();
    ?>
    wenn das auch nicht klappt schreib den HTML Code mal als echo in der code. also
    PHP-Code:
    <?
    ob_start
    ();
    echo 
    "HTML CODE";
    usw...
    if(
    $_SESSION['user_id']) {
    header ('Location: ./home/php/intern.php');
    } else {
    header ('Location: ./home/php/formular.php');
    }
    echo 
    "HTML CODE";
    flush();
    ?>
    vll klappts so! Wenn auch dass nicht klappt, kannst du immernoch das header durch einen meta refresh ersetzen.
    Wobei ich gerade sehe, dass du die Seite includest. Allerdings schon vor der index.htm.
    Dadurch wird auch wieder eine Ausgabe gemacht, z.b. durch das menü. Ich glaube, in dem Fall ist der meta refresh die bessere Lösung.
    Geändert von fanste (22.05.05 um 12:43 Uhr)
     
    Gruß fanste

    Benutze bitte immer die passende Highlight-Tags.(z.B: für PHP [php] [/php] Allgemein: [highlight=SCRIPTSPRACHE]Code[/highlight] )

    Problem gelöst? Dann markiere das Thema bitte als erledigt!
    Beachte bitte die Netiquette. Insbesondere Punkt 15.

  11. #11
    andrassberlin andrassberlin ist offline Mitglied
    Registriert seit
    Mar 2005
    Beiträge
    18
    hey, vielen Dank für die Antwort, habs gerade ausprobiert, allerdings wieder ohne Erfolg. Wie geht das mit dem Metarefresh? Hab ich bisher noch nicht genutzt.

    Danke Dir schon mal,
    Andreas
     

  12. #12
    Registriert seit
    Mar 2005
    Ort
    Bühl/Baden
    Beiträge
    2.330
    Das ist der meta refresh Tag.

    <meta http-equiv="refresh" content="0;URL=<? echo $site; ?>">
    statt $site musst du dann halt die Variable reinschreiben, in der der Pfad zur Seite steht, oder Seite direct hinters = schreiben. bei content gibst du die wartezeit in sec an, du weiterleitest.
     
    Gruß fanste

    Benutze bitte immer die passende Highlight-Tags.(z.B: für PHP [php] [/php] Allgemein: [highlight=SCRIPTSPRACHE]Code[/highlight] )

    Problem gelöst? Dann markiere das Thema bitte als erledigt!
    Beachte bitte die Netiquette. Insbesondere Punkt 15.

  13. #13
    andrassberlin andrassberlin ist offline Mitglied
    Registriert seit
    Mar 2005
    Beiträge
    18
    danke, werd ich gleich mal ausprobieren.

    Andreas
     

Ähnliche Themen

  1. Problem mit Login
    Von proloser im Forum Relationale Datenbanksysteme
    Antworten: 1
    Letzter Beitrag: 18.07.09, 18:23
  2. Login-Problem
    Von hueggy im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 26.11.07, 19:10
  3. Antworten: 2
    Letzter Beitrag: 08.10.07, 11:38
  4. Problem mit Login
    Von server im Forum PHP
    Antworten: 4
    Letzter Beitrag: 05.02.05, 21:03
  5. Problem mit Login
    Von ulf123 im Forum PHP
    Antworten: 4
    Letzter Beitrag: 29.10.04, 01:05