Ankündigung

Einklappen
Keine Ankündigung bisher.

Session problematik

Einklappen
Dieses Thema ist geschlossen.
X
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Session problematik

    Guten abend/ nacht,
    ich habe eine Frage :
    ich habe mir einen Login - Script geschrieben.
    Der übergibt folgendes:

    PHP-Code:
                    $_SESSION['nickname'] = "$nickname";
                    
    $_SESSION['nachname'] = "$nachname";
                    
    $_SESSION['vorname'] = "$vorname";
                    
    $_SESSION['telefon'] = "$telefon";
                    
    $_SESSION['emailadress'] = "$emailadresse"
    dann habe ich mir noch einen script geschrieben wo informationen vom login script in eine db eingetragen werden.

    Jedoch wird alles eingetragen, bis auf
    PHP-Code:
    $_SESSION['nickname'
    bzw wird er übergeben ist jedoch leer.
    somit kann man sich nicht mehr austraagen, da der script überprüft ob der eingetragene nickname mit dem vom login übereinstimmt...
    ich habe keine ahnung warum das so ist. kann mir bitte jemand helfen?
    danke im vorraus


  • #2
    Einmal bitte komplettes Script posten, Danke.

    Kommentar


    • #3
      Zitat von salix Beitrag anzeigen
      PHP-Code:
                      $_SESSION['nickname'] = "$nickname";
                      
      $_SESSION['nachname'] = "$nachname";
                      
      $_SESSION['vorname'] = "$vorname";
                      
      $_SESSION['telefon'] = "$telefon";
                      
      $_SESSION['emailadress'] = "$emailadresse"
      Die Variablen hier in Anführungszeichen zu setzen, ist unsinnig. Bitte abgewöhnen.

      [Problem] ich habe keine ahnung warum das so ist.
      Wir auch nicht, wenn du uns den relevanten Code vorenthältst.

      Kommentar


      • #4
        PHP-Code:
        <html>
        <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8"><style type="text/css">
        <!--
        body {
            background-color: #000;
        }
        body,td,th {
            color: #F00;
        }
        -->
        </style></head>
        <body>
        <p align="center" ><img src="http://www.php.de/../hqdefault_normal.jpg" width="414" height="326" alt="5"></p>

        <?php
        @session_start();
        if (isset( 
        $_POST['nick']))
            {



            require_once (
        'konfiguration.php');
            
        $db_link mysql_connect (MYSQL_HOSTMYSQL_BENUTZERMYSQL_KENNWORT);
            
        //wenn link besteht if ausführen
            
        if ( $db_link )
                {
                
        //datenbank auswählen
                
        mysql_select_dbMYSQL_DATENBANK )
                or die(
        "Auswahl der Datenbank fehlgeschlagen");
                
        //wählt die ID, nick etc von der tabelle aus wo der nickname übereintrifft
                
        $sql "SELECT ID, nickname, password, nachname, vorname, telefon, emailadresse FROM belegung WHERE nickname='".$_POST['nick']."'";
                
        // stellt die ausgewählten elemente zur verfügung
                
        $db_erg mysql_query($sql);
                
        // solange das array ergebnisse liefert führt es diese schleife aus
                
        if ($zeile mysql_fetch_array$db_ergMYSQL_BOTH))
                    {
                    echo 
        "<br />";

                    
        $ID=$zeile['ID'];
                    
        $nickname=$zeile['nickname'];
                    
        $password=$zeile['password'];
                    
        $nachname=$zeile['nachname'];
                    
        $vorname=$zeile['vorname'];
                    
        $telefon=$zeile['telefon'];
                    
        $emailadresse=$zeile['emailadresse'];

                    if (
        $nickname=$_POST['nick'] and  $password==$_POST['pass'])
                        {
                        
        //die session wird gestart
                        
        @session_start();
                        
        //die variablen werden einträge gemacht
                        
        $_SESSION['nickname'] = "$nickname";
                        
        $_SESSION['nachname'] = "$nachname";
                        
        $_SESSION['vorname'] = "$vorname";
                        
        $_SESSION['telefon'] = "$telefon";
                        
        $_SESSION['emailadress'] = "$emailadresse";
                        
        // wenn der "anmeldecheck" erfolgreich ist, also die session_anmelden die 1 an die variable übergeben hat,
                        // heißt es der login kommt von anmeldung.php und soll auch dorthin zurück führen
                           
        if (isset( $_SESSION['anmelden']))
                           {
                           if( 
        $_SESSION['anmelden']=='1')
                                    {

                            echo 
        "Login erfolgreich ";
                            echo 
        "<br />";
                            echo 
        "Sie werden gleich automatisch weitergeleitet";
                                   include (
        "translationwait2.html");
                                   unset (
        $_SESSION['anmelden']);
                                    }
                           }


                        
        //überprüfung ob login erfolgreich
                            
        ?>
                            <p align="center">
                            <?php
                            
        echo "Login erfolgreich ";
                            echo 
        "<br />";
                            echo 
        "Sie werden gleich automatisch weitergeleitet";
                            include (
        "translationwait3.html")    ;
                            
        ?>
                            </p>
                            <?php
                        
        }
                            else
                            {   
        //Fehlermelden wenn pw oder benutzet falsch eingegeben wurde
                            
        echo "Login fehlgeschlagen";
                            echo 
        "<br />";
                            echo 
        "Benutzername oder Passwort falsch eingegeben";
                            }
                        }
                        else
                        {   
        //fehlermeldung wenn benutzername nicht existiert
                        
        echo "Login fehlgeschlagen";
                        echo 
        "<br />";
                        echo 
        " Noch nicht Registriert? ";
                        echo 
        "<br />";
                        echo 
        " Hier kostenlos ";
                        include (
        "reglink.html");
                        }

                        exit;
                    }

                   }

            
        // Wenn nicht eingeloggt wird einlogg-formular angezeigt
        if ( ! isset ( $_SESSION['nickname'] ) )
            {
            include (
        "login.html") ;
            }
            
        // Hier beginnt das "profil" des eingeloggten zu wirken
            // wenn eingeloggt wird logout button angezeigt
        elseif ( $_POST['Logout'])
            {
            
        session_destroy();
                            
        ?>
                            <p align="center">
                            <?php
            
        echo "Sie wurden ausgeloggt";
                            
        ?>
                            </p>
                            <?php
            
        }
        else
            {
            
        ?>
        <p align="center">
            <?php
            
        echo "Sie sind bereits eingeloggt.";
            echo 
        "<br />";
            echo 
        "Wie wollen Sie vorgehen?";
            echo 
        "<br />";
            include (
        "logout.html");
            }
            
        ?>
        </p>
        </body>
        </html>
        Das war der PHP CODE
        PHP-Code:
        <html>
        <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8"><style type="text/css">
        <!--
        body {
            background-color: #000;
        }
        body,td,th {
            color: #F00;
        }
        -->
        </style></head>
        <body>
        <p align="center" ><img src="http://www.php.de/../hqdefault_normal.jpg" width="414" height="326" alt="5"></p>
        <div align="center">
          <?php


        @session_start();


            
        // link zur DB aufbauen
        require_once ('konfiguration.php');
        $db_link mysql_connect (MYSQL_HOSTMYSQL_BENUTZERMYSQL_KENNWORT);
            
        // wenn link besteht if ausf?hren
        if ( $db_link )
            {
               
        // datenbank ausw?hlen
            
        mysql_select_dbMYSQL_DATENBANK )
            or die(
        "Auswahl der Datenbank fehlgeschlagen");

            if (isset(
        $_SESSION['nickname']))
                {
                @
        session_start();
                
        $nickname=$_SESSION['nickname'];

                
        // hier wird geschaut ob der nick vorhanden ist
                
        $sql "SELECT nickname, belegt FROM angemeldet WHERE spn=1 ";
                
        $db_erg=mysql_query($sql) or die("Anfrage fehlgeschlagen: " mysql_error());
                if  (
        $zeile mysql_fetch_array$db_ergMYSQL_BOTH))
                    {
                     
        $nickname1=$zeile['nickname'];
                     
        $belegung=$zeile['belegt'];
                    }
                }
            }
        if (isset(
        $_POST['check']))
            {
            
        // verbindung zur datenbank
            
        require_once ('konfiguration.php');
            
        $db_link mysql_connect (MYSQL_HOSTMYSQL_BENUTZERMYSQL_KENNWORT);
            
        // wenn link besteht if ausf?hren
            
        if ( $db_link )
                {
                
        // datenbank ausw?hlen
                
        mysql_select_dbMYSQL_DATENBANK )
                or die(
        "Auswahl der Datenbank fehlgeschlagen");
                
        // auswahl von  belegt von der tabelle angemeldet wo spn 1 ist
                
        $sql "SELECT belegt FROM angemeldet WHERE spn='1'";
                
        $db_erg=mysql_query($sql) or die("Anfrage fehlgeschlagen: " mysql_error());
                if  (
        $zeile mysql_fetch_array ($db_ergMYSQL_BOTH))
                    {

                    
        $belegung=$zeile['belegt'];
                    }
                
        //session start
                
        @session_start();
                
        //vorbereitung zum einf?gen der eingaben in DB
                
        $email $_SESSION['emailadress'] ;
                
        $nachname $_SESSION['nachname'] ;
                
        $vorname $_SESSION['vorname'] ;
                
        $nummer $_SESSION['telefon'] ;
                
        $nickname $_SESSION['nickname'] ;
                
        // eingaben einf?gen befehl
                
        if (isset($belegung))
                    if (
        $belegung!="belegt")
                    {
                    
        $sql "
                    UPDATE `angemeldet`
                    SET
                    `nachname` = '
        $nachname',
                    `vorname` = '
        $vorname',
                    `telefon` = '
        $nummer',
                    `emailadresse` = '
        $email',
                    `nickname` = '
        $nickname',
                    `belegt` = 'belegt' WHERE `angemeldet`.`spn` =2 LIMIT 1 "
        ;
                    
        //ausf?hren des insert befehls
                    
        $db_erg mysql_query($sql) or die("Anfrage fehlgeschlagen: " mysql_error());
                    echo 
        "Anmeldung erfolgreich ";
                    echo 
        "<br />";
                    echo 
        "Sie werden gleich automatisch weitergeleitet";
                    
        // automatische weiterleitung

                    
        ?>
          <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
            "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
          <html xmlns="http://www.w3.org/1999/xhtml">
          <head>
          <script language="Javascript" type="text/javascript">

        window.location.href="wait42.php";

        </script>
          <?php

                    
        //verbindung l?sen
                    
        mysql_close($db_link );
                    
        // ende der ausf?hrungen
                    
        exit;
                    }
                    
        // wenn FREI = 1    ->
                
        else
                    {
                    
        "Dieser Platz wurde soeben belegt.";
                    
        "Suchen Sie sich bitte einen anderen aus.";
                    }
                }
            }
        else
            {
            require_once (
        'konfiguration.php');
            
        $db_link mysql_connect (MYSQL_HOSTMYSQL_BENUTZERMYSQL_KENNWORT);
            
        // wenn link besteht if ausf?hren
            
        if ( $db_link )
                {
                
        // datenbank ausw?hlen
                
        mysql_select_dbMYSQL_DATENBANK )
                or die(
        "Auswahl der Datenbank fehlgeschlagen");
                @
        session_start();
                
        // Belegt anzeige
                
        $sql"SELECT belegt FROM `angemeldet` WHERE spn= '1'";
                
        $db_erg=mysql_query($sql) or die("Anfrage fehlgeschlagen: " mysql_error());
                if (
        $zeile mysql_fetch_array$db_ergMYSQL_BOTH))
                    {
                    
        $belegung=$zeile['belegt'];
                    echo 
        " Dieser Platz ist  ".$belegung;
                    echo 
        "<br />";
                        if (isset(
        $_POST['austragen']))
                            {
                            
        // austragen
                            
        $sql " UPDATE `angemeldet`
                                     SET
                                    `nachname` = '',
                                    `vorname` = '',
                                    `telefon` = '',
                                    `emailadresse` = '',
                                    `nickname` = '',
                                    `belegt` = 'Frei'
                                    WHERE `angemeldet`.`spn` =1 LIMIT 1" 
        ;
                            
        $db_erg =mysql_query($sql) or die ("anfrage fehlgeschlagen:".mysql_error());
                            echo 
        " Sie wurden ausgetragen.";
                            echo 
        "<br />";
                            echo 
        " Sie werden gleich automatisch weitergeleitet";
        // automatische weiterleitung  | "aktualisierung"
                    
        ?>
          <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
            "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
          <html xmlns="http://www.w3.org/1999/xhtml">
          <head>
          <script language="Javascript" type="text/javascript">

        window.location.href="wait42.php";

        </script>
          <?php
                            
        // datenbank ausw?hlen
                            
        mysql_select_dbMYSQL_DATENBANK )
                            or die(
        "Auswahl der Datenbank fehlgeschlagen");
                            }
                        else
                            {
                            
        // check ob belegt oder nicht
                            
        $inhalt="belegt";
                            
        // nur wenn ein nick eingegen wurde wird ?berhaupt etwas ?berpr?ft
                            
        if (isset($_SESSION['nickname']))
                                {   
        // wenn der in DB vorhandene nick gesetzt und mit dem eingeloggten nick ?bereinstimmt
                                    // wird der button zum austragen angezeigt sonst nicht
                                        
        if ($_SESSION['nickname']=$nickname1)
                                        {   
        // check ob belegt
                                            
        if ($inhalt==$belegung)
                                                {
                                                echo 
        "Zum Austragen dr&uuml;cken Sie diesen Button";
                                                
        ?>
        </div>
        <form action="Anmeldung.php" method="post">
          <div align="center">
            <input type="submit" value="austragen" name="austragen" />
          </div>
        </form>
        <div align="center">
          <?php                                   // austragen button
                                                
        }
                                        
        // datenbank nickname
                                        
        }
                                
        // eingegebener nick
                                
        }
                            
        // wenn nocht nicht austragen gedr?ckt wurde - > dass anzeigen
                            
        }
                        
        // austragen funktion
                        
        }
                    
        // wenn nick vorhanden ist , aktion!
                   
        }
                
        // wenn link besteht
                
        }

        if (  !isset (
        $_SESSION['nickname']))
            
        // fehlermeldung wenn nicht eingeloggt und eintragen will
            
        {
            @
        session_start();


            echo 
        "Sie m&uuml;ssen jedoch eingeloggt sein um sich einzutragen.";
            echo 
        "<br />";
            echo 
        "Hier k&ouml;nnen Sie sich ";

            
        // hier wird die ?berpr?fung f?r den login script ?bergeben
            
        $_SESSION['anmelden'] = '1';
            
        ?>
          <a href="login.php">einloggen.</a>
          <?php
             
        }

        else
            {
        // check ob frei /  nicht frei
            
        if ($belegung!= "belegt"  )
                {
        // wenn frei dann eintragen button anzeigen
                
        ?>
        </div>
        <form action="Anmeldung.php" method="post">
          <p align="center">Eintragen?</p>
          <div align="center">
            <input type="submit" value="Eintragen" name="check" />
          </div>
        </form>
        <div align="center">
          <?php
                
        }
            }
                
        ?>
        </div>
        </body>
        </body>
        </html>
        das der Code zum eintragen

        Kommentar


        • #5
          mySQL Injections Gefahr.

          WHERE nickname='".$_POST['nick']."'" und kurz danach $nickname=$_POST['nick'] aja ^^, warum unterdrückst du hier
          PHP-Code:
          @session_start(); 
          die fehlermeldung? mach das mal weg und guck was dan kommt.

          Kommentar


          • #6
            Wenn du nicht unsinnigerweise Fehlermeldungen mit @ unterdrücken würdest, dann würde PHP dir höchstvermutlich sagen, dass session_start an der Stelle problematisch ist, weil du vorher bereits Ausgaben gemacht hast.


            Und auch das HTML, das du erzeugst, ist grober Unfug.
            Wie kommst du auf die Idee, in einem HTML-Dokument innerhalb eines DIV-ELements noch mal ein komplettes Dokument mit Doctype, <html> etc. unterzubringen?

            Du solltest, bevor du dich weiter mit PHP beschäftigst, erst mal die Grundlagen von HTML erlernen.

            Kommentar


            • #7
              Ok habs weggemacht hat fehlermeldung gebracht, dass halt session_start zu oft vorgekommen ist. hab die dann weggemacht, jetzt loggt er garnemmer ein bzw übergibt keine login werte mehr.

              Kommentar


              • #8
                dass halt session_start zu oft vorgekommen ist


                setzt session_start an den ANFANG, bevor irgendwas gesendet wird.

                Kommentar


                • #9
                  bitte nicht böse sein^^ ist mein erste seite die ich mache, die zu viele <html> un so wurde iwie autoamtisch vom editor gemacht sry. und ja hab jetzt bei anmeldescript und bei loginscript in die erste zeile geschrieben. wenn ich mich dann einlogge wird beim anmeldescript folgende meldung angezeigt :
                  Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\Dokumente und Einstellungen\Sarah\Desktop\xampplite\htdocs\anmel dung.php:1) in C:\Dokumente und Einstellungen\Sarah\Desktop\xampplite\htdocs\anmel dung.php on line 1

                  Kommentar


                  • #10
                    http://www.php.de/php-einsteiger/489...rundlagen.html
                    http://php.de/wiki-php/index.php/Headers_already_sent

                    [MOD: Thread geschlossen]
                    --

                    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                    Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                    --

                    Kommentar

                    Lädt...
                    X