session und sql_connect

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

  • session und sql_connect

    ich habe drei php-dateien
    index.php
    PHP-Code:
      session_start();
      
      include(
    "formular.php");
      include(
    "function.php");

      if(
    $anmeldencheck($username$passwort);
      if(!isset(
    $_SESSION['angemeldet']) || !$_SESSION['angemeldet']) 
        
    anmelden();
      
    //Hauptseite
      
    if($_SESSION['startseite'] or $zurueck)
      { 
    $_SESSION['startseite']=false;  
        
    willkommen();
      }
      
    //Abmelden
      
    elseif($abmelden
      { 
    //schließen der Datenbankverbindung
        
    mysql_close($_SESSION['datenbank']);
        
    //schließen der Session
        
    session_unset();
        
    session_destroy();
        
    anmelden();
        }
      
    //Adressansicht
      
    elseif($adressenadressen($adressen); 
    function.php
    PHP-Code:
      function check($bn$passwd)
      { 
    session_start();
        
    $db_server="localhost";
        
    $db_user="root";
        
    $db_passwort="";
        
    $db_name="raumerfassung";
        
    //Herstellen der Datenbankverbindung
        
    $db mysql_connect($db_server$db_user$db_passwort);
        
    mysql_select_db($db_name);
        
    //Benutzername und Passwort werden überprüft
        
    $erg=mysql_query("Select Passwort From Benutzerverwaltung Where Nutzername='$bn'");
        if((
    mysql_num_rows($erg)>0) and (mysql_result($erg,0)==md5($passwd)))
        { 
    $_SESSION['datenbank']=$db;
          
    $_SESSION['angemeldet']=true;
          
    $_SESSION['startseite']=true;
        }
        else 
    mysql_close($db);
      } 
    mit der dritten stelle ich formulare dar.
    problem 1:
    wenn ich mich ausloggen will, bringt er mir die fehlermeldung
    mysql_close(): supplied argument is not a valid MySQL-Link resource in C:\xampp\htdocs\index.php on line 19
    das ist die zeile, wo "mysql_close" steht.
    problem 2:
    wenn ich auf der formularseite ne sqlabfrage machen will, fehlt mir die verbindung zur datenbank. aber ich denke das ganze läuft serverseitig und wenn ich andere dateien include, haben die die selben variablen wie die anderen dateien.

  • #2
    die mysql-extension sorgt dafür, dass die verbindung (solange nicht persistent aufgebaut) automatisch beendet wird, nachdem das script beendet wird. brauchst also mysql_close() erst gar nicht auszuführen.

    ich glaube nicht, dass du einen zeiger auf eine resource effektiv in einer session speichern kannst.

    Kommentar


    • #3
      PHP-Code:
      function check($bn$passwd)
        { 
      session_start();
          
      $db_server="localhost";
          
      $db_user="root";
          
      $db_passwort="";
          
      $db_name="raumerfassung";
          
      //Herstellen der Datenbankverbindung
          
      $db mysql_connect($db_server$db_user$db_passwort);
          
      mysql_select_db($db_name);
      ...

      Damit ist die Verbindung nur innerhalb der Funktion gültig!

      Baue dir doch eine Funktion connect_DB($db,$tabelle) die du ganz leicht von überall aufrufen kannst, erspart einen Menge Schreibarbeit.

      Kommentar


      • #4
        Wenn ich den anderen Thread von dir richtig interpretiert hab, bist du scheinbar der Meinung, dass du eine DB-Verbindung in einer Session von Script zu Script transportieren kannst. Dem ist aber nicht so - die Verbindung zur DB musst schon bei jedem Scriptaufruf von neu herstellen - wenn ich deinen Code richtig verstehe, stellst du aber nur beim anmeldung die Verbindung zur DB her - beim abmelden möchtest du scheinbar die Verbindung schließen, die du in dem Script beim anmelden mal geöffnet hast - diese Verbindung existiert aber nicht mehr, weil die geschlossen wird sobald das PHP-Script beendet wird.
        Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
        Schön - etwas Geschichte kann ja nicht schaden.
        Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

        Kommentar


        • #5
          gut, dann ist das ja schon mal erledigt, wenn ich mein script so ändere
          PHP-Code:
            session_start();
            
            include(
          "formular.php");
            include(
          "function.php");

            
          $db_server="localhost";
            
          $db_user="root";
            
          $db_passwort="";
            
          $db_name="raumerfassung";
            
          //Herstellen der Datenbankverbindung
            
          $db mysql_connect($db_server$db_user$db_passwort);
            
          mysql_select_db($db_name);
            
            
          //Überprüfung der Anmeldung
            
          if($anmeldencheck($username$passwort);
            
          //Anmelden
            
          if(!isset($_SESSION['angemeldet']) || !$_SESSION['angemeldet']) 
              
          anmelden();
            
          //Hauptseite
            
          if($_SESSION['startseite'] or $zurueck)
            { 
          $_SESSION['startseite']=false;  
              
          willkommen();
            }
            
          //Abmelden
            
          elseif($abmelden
            { 
          //schließen der Session
              
          session_unset();
              
          session_destroy();
              
          anmelden();
              }
            
          //Adressansicht
            
          elseif($adressenadressen($adressen); 
          dann tritt mein 2tes problem auch nicht mehr auf, kann mir das einer erklären?!? kann es sein, dass nur die index.php die variablen der eingebundenen formulare nutzen kann und die, der der index.php? denn die datenbankverbindung habe ich in der function.php und benutzen wollte ich sie in der formular.php

          Kommentar


          • #6
            Original geschrieben von ExInfernis
            Damit ist die Verbindung nur innerhalb der Funktion gültig!

            Baue dir doch eine Funktion connect_DB($db,$tabelle) die du ganz leicht von überall aufrufen kannst, erspart einen Menge Schreibarbeit.
            Nö - nur bedingt - bei erfolgreicher Anmeldung legt er ja die Verbindungs-ID im $_SESSION-Array ab.
            Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
            Schön - etwas Geschichte kann ja nicht schaden.
            Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

            Kommentar


            • #7
              @quetschi
              Wenn ich den anderen Thread von dir richtig interpretiert hab, bist du scheinbar der Meinung, dass du eine DB-Verbindung in einer Session von Script zu Script transportieren kannst.
              mir ging es eigentlich nur darum, das ganze mitzuschleppen, um hinterher die connection zur db zu beenden. ansonsten brauch ich das nicht.

              Dem ist aber nicht so - die Verbindung zur DB musst schon bei jedem Scriptaufruf von neu herstellen
              das wusste ich nicht und irgendwie konnte ich diese frage nicht so gut formulieren wie du. ich dachte da die verbindung serverseitig hergestellt wird, bleibt sie auch bestehen, egal wie oft ich das script aufrufe, wäre es so, bräuchte ich ja die verbindung in der session, um alles wieder zu schließen.

              @all
              Danke für die schnelle hilfe, ich habs kapiert!

              Kommentar


              • #8
                PHP-Code:
                include("formular.php");
                include(
                "function.php"); 
                Somit kannst du in formular.php nicht auf Werte von function.php zurückgreifen, da sie erst später includiert wird!

                Kommentar


                • #9
                  www.php.net/mysql_connect != www.php.net/mysql_pconnect

                  zweiteres könntest aber sowieso nicht mit mysql_close beenden.
                  Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
                  Schön - etwas Geschichte kann ja nicht schaden.
                  Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

                  Kommentar


                  • #10
                    Original geschrieben von ExInfernis
                    PHP-Code:
                    include("formular.php");
                    include(
                    "function.php"); 
                    Somit kannst du in formular.php nicht auf Werte von function.php zurückgreifen, da sie erst später includiert wird!
                    Er dachte ja, er könne die Verbindung in der Session transportieren und die wird vor dem formular-include gestartet
                    Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
                    Schön - etwas Geschichte kann ja nicht schaden.
                    Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

                    Kommentar

                    Lädt...
                    X