$_SESSION[] Probleme

dg87

Erfahrenes Mitglied
Ich hab in meiner Datei gb (Gästebuch) bei einem Problem gelandet. Ich muss das leider alles in eine Datei schreiben anders gehts ned, is arbeitsanweisung.

Jedes mal wenn ich jetzt meine Seite aktualisieren tu, zeigt es ganz oben (befehl ist auch ganz oben) schon den Inhalt der Variable $_SESSION['member'] obwohl sie eigentlich noch nicht defeniert sein soll. Sorry dass ich die ganze seite reinkopier aber sonst weiß ich nicht wo der fehler legen könnte.

PHP:
<?php  echo "ID --> ". $_SESSION['member']; ?>
<html>
<head><title>Gaestebuch</title>
<?php
 //Funktionen
        function con_sel()
        {
            // Diese Funktion verbindet zu MYSQL Server und wählt anschließend die Datenbank aus
            
            $dbconnection = @mysql_connect(MYSQL_HOST,MYSQL_USER,MYSQL_PASSWORD) or die("Verbindung konnte leider nicht aufgebaut werden <br>");
            if($dbconnection)
            {
                echo " Die Verbindung wurde aufgebaut <br>";
                $erfolg = mysql_select_db(MYSQL_DATABASE);
                if($erfolg)
                {  echo "Datenbank ". MYSQL_DATABASE . " wurde ausgew&auml;hlt <br>";
                   return 1;
                }
            }
        }
          /////////////////////////////////////////////////////////////////
        function formular_eing($eingeloggt) // Eingabe Formular
        {
                  
          echo "<form action=\"gb.php\" method=\"post\">"; 
          echo "Betreff*:". "<input type=\"text\" name=\"betreff\">";
          echo "Name*:" . "<input type=\"text\" name=\"name\">";
          echo "<input type=\"submit\" name=\"eintragen\" value=\"Eintragen\"><br>";
          echo "Eintrag*:". "<textarea name=\"eintrag\" rows=\"10\" cols=\"50\"></textarea><br>";
      
             
                  if($eingeloggt==1) // Nur wenn er eingeloggt ist, sollen die Buttons zur Verfügung stehen
                  {
                    echo "<input type=\"submit\" name=\"aen\" value=\"&Auml;ndern\">";
                    echo "<input type=\"submit\" name=\"loesch\" value=\"L&ouml;schen\"><br>";
                    echo "<br>";
                    echo "GB-Eintrags nummer*: <input type=\"text\" name=\"zahl\"><br>";
                  }
                  echo "<br>";
                  echo "<br>";
                  echo "<br>"; 
                  echo("Felder mit * sind Eingabepflicht, durch Login stehen Ihnen weitere Funktionen zur Verf&uuml;gung<br>");                  
          echo "</form>";
        }
        /////////////////////////////////////////////////////////////////////////////////
        function pflicht_eing( $eing_name, $eing_betreff, $eing_eintrag) // Funktion die Eingabedaten an die Datenbank verschickt
        {
            if( empty($eing_name) || empty($eing_betreff) || empty($eing_eintrag) ) {
                return false;
            }
            $neu_datensatz = "INSERT INTO `eintr` (`betreff`, `nachricht`, `datum`, `name`) VALUES ('".mysql_real_escape_string($eing_betreff)."', '".mysql_real_escape_string($eing_eintrag)."', NOW(), '".mysql_real_escape_string($eing_name)."')";
            mysql_query($neu_datensatz) or die(mysql_error()); 

            
        }   
        //////////////////////////////////////////////////////////////////////////////////
        function login_check($username,$passwort,$dinhaltname,$dinhaltpasswort,$id)
        { //Soll nur ausgeführt werden, wenn Benutzername und Passwort dem der Datenbank entsprechen
          if($username == $dinhaltname && $passwort == $dinhaltpasswort)
          {    
              echo "Der Login war erfolgreich<br> ";
              $_SESSION['id'] = $id;
              $_SESSION['member'] = 'paul';
              
              
              return $mkay; // Sagt dass man eingeloggt ist.
              
              echo "<br>";
              echo "<br>";
              echo "<br>";
             // echo "<a href=\"logout()\">Ausloggen</a>";
              
              
             
              
          }
         
        }
        /////////////////////////////////////////////////////////////////////////////////
        function checkuser()
        {
                
                if(!isset($_SESSION['id']))
                {
                    formular_eing(0);
                }
                else
                {
                   formular_eing(1);
                }
             
        }
        //////////////////////////////////////////////////////////////////////////////////
        function logout()
        {
              echo "palast<br>";
        }
?>  
</head>
<body>
 
  <?php
  
         
        //Deklarationen
        define('MYSQL_HOST',     'localhost');  // Konstanten zum Verbinden mit MySQL
        define('MYSQL_USER',     'root');
        define('MYSQL_PASSWORD', 'start');
        define('MYSQL_DATABASE', 'gb');
        
            //Variablen
        $holdat1 = "SELECT * from eintr ORDER BY datum DESC;";
        $holdat2 = "SELECT * from usr;";
        // Wert der den GB eintrag herholt, fürs ändern
        /************************ Testdaten in Tabellle einfügen ****************************************************/
        $gibdat = "INSERT INTO eintr
                   (betreff,nachricht,datum,name)
                   VALUES
                   ('Solala','Das ist eine Nachricht von einem Spaceshuttle zur Erde',NOW(),'Hans');";
        $gibuser = "INSERT INTO usr
                   (username,password)
                   VALUES
                   ('dg87','test');";
                   
                   
                   con_sel(); //Funktion zum Verbinden und auswählen der Datenbank
                  
                   
                   
                   

         
 ?>
 <table>
    <tr>
        <td bgcolor="orange">
           <?php // Hier kommt das Login hin
              $result=mysql_query($holdat1) or die (mysql_error()); // Selektiert werden geholt
              $result2=mysql_query($holdat2) or die (mysql_error()); // Selektiert Daten von usr           
              
              /* ------------------------------- Login Maske ----------------------------------------------*/
              echo "Login: <br>";
              echo "<br>";
              echo "<form action=\"gb.php\" method=\"post\">";
              echo "<table border=\"1\">";
              echo "<tr>";
                echo "<td>";
                               echo "Member: ";
                               echo "<input type=\"text\" name=\"member\">";
                echo "</td>";
                echo "</tr>";
                echo "<tr>";
                echo "<td>";
                               echo "Passwort: ";
                               echo "<input type=\"password\" name=\"passwort\">";
                echo "</td>";
                echo "</tr>";
                echo "</table>";
                echo "<br>";
                echo "<input type=\"submit\" name=\"einloggen\" value=\"Login\">";
              echo "</form>";
              /*--------------------------------------------------------------------------------------------------*/
              
              $row2=mysql_fetch_assoc($result2); // Daten in row2 sichern
          
           
              // Wenn der Login Button betätigt wurde
              if($_POST['einloggen'])
               login_check($_POST['member'],$_POST['passwort'],$row2['username'],$row2['password'],$row2['id'])
        
           ?>
           
             
        </td>
        <td width="200%" bgcolor="yellow">
           <?php // Hier kommt das Gästebuch ////////////////////////////////////////////////////////
                  echo "<div align=\"center\">";
                  echo "<h1>G&auml;stebuch</h1> <br>";
                  echo "<br>";
                  echo "<br>";
                  
                  echo "Anzahl der GB Eintr&auml;ge: ".mysql_num_rows($result). "<br>"; // Gibt die Anzahl der Einträge aus
                  echo "Anzahl der Registrierten User: ".mysql_num_rows($result2)."<br>"; // Anzahl der enthaltenen User
           ?>
        </td>
        </tr>
        </tr>
        <td bgcolor="orange">
        </td>
        <td bgcolor="yellow">        
        <?php 
           /////////////////////////////////////Haupt Gästebuch Teil /////////////////////////////////
           
           echo "<div align=\"center\">";
           
          //mysql_query($gibdat) or die(mysql_error()); // Daten werden an die Tabelle geschickt
         // $user_result=mysql_query($gibuser) or die (mysql_error()); // Login Daten werden an die Datenbank geschickt
         
          echo "-----------------------------------------------------------------";
          while($row = mysql_fetch_assoc($result)) // In $row werden die Inhalte geholt und gesichert
          {
           //$eing_aen=$eing_aen+1;
           echo "<br>";
           echo "GB Eintrag nummer: ".$row['id']."<br>";
           echo "Betreff: ".$row['betreff']. "<br>";
           echo " ". $row['name'] . " schrieb um ".$row['datum'] . " folgendes: <br>";
           echo "<br>";
           echo "<br>";
           echo " ". $row['nachricht']. "<br>";
           echo "----------------------------------------------------------------- <br>";
           
          }
         checkuser($check);
         
         if($_POST['aen'])
         {
                $_POST['eintrag']='Du willst aendern du spast<br>';
         }
        
          
    
         
           
           echo "</div>";
           ?>         
        </td>
    </tr>
 </table>  
</body>
</html>

Ich wäre für Tipps sehr dankbar, hier ist z.B. meine Arbeitsanweisung die ich bekommen habe:

also du kannst mal ein gästebuch in php mit ner mysqldb dahinter schreiben.
legst dir mit phpmyadmin die tabelle (id, betreff, nachricht, datum) an und dann gehts los. aber kopier nicht alles ausm netz ;)
eine funktion zum löschen und bearbeiten kannst dann auch noch einbauen. und wennst des hast legs dir noch ne user-tabelle an mit den feldern id, username, password

dann im gästebuch ein loginfeld und jetzt kommts: nach dem login soll ne session gestartet werden, anhand der du abfragen kannst ob der benutzer eingeloggt ist und somit die funktionen zum editieren und löschen freischaltest.

wenn kein benutzer eingeloggt ist -> kein edit und delete.

mach des ganze in einer einzigen php-datei und mit funktionen strukturieren, nicht anhand von unendlich vielen if abfragen

Vielen Dank
 
Nimm statt funktionen lieber eine Klasse, benutz einen DB Abstraktionslayer (also ein weiteres File) und irgendwo musst du in die GB Tabelle auch noch die Nutzer ID einbauen, sonst weisst du ja nicht welcher Nutzer was geschrieben hat. Oder soll nur ein Nutzer existieren der alle GB Zeilen löschen kann?

session_destroy() beim logout befehl machen, dann ist die Session weg.

Oder ich hab noch nicht ganz verstanden was du genau möchtest.
 
Also das Problem allgemein ist schon mal, dass ich alles in einer Datei schreiben muss also keine weitere, weil das die Arbeitsanweisung ist (siehe oben).

Wie mache ich die User ID? Im moment ist nur ein User in der Tabelle (zum testen erstmal ob alles Funktioniert).

Die session_start() Funktion muss ich trotzdem ganz oben der Datei setzen oder, weil ist ja nur eine.
 
Zurück