Session() gibt Fehler aus

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

  • Session() gibt Fehler aus

    Ich habe ein Eingabeformular, in welchem ganz zu Beginn folgende Session-Anweisungen stehen:

    Code:
    <?php
        session_start();
        session_register($paket);
        session_register($domainanzahl);
        $paket="Standard";
        $domainanzahl=1;
    ?>
    Ich finde nichts daran falsch. Doch beim Aufruf der PHP-Datei erhalte ich folgende Fehlermeldungen:

    Warning: session_start() [function.session-start]: open(/tmp\sess_e1c6ae4312b0e64037ff39b0565f57a2, O_RDWR) failed: No such file or directory (2) in d:\beispiel_formularausgabe\form_1.php on line 2

    Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at d:\beispiel_formularausgabe\form_1.php:2) in d:\beispiel_formularausgabe\form_1.php on line 2

    Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at d:\beispiel_formularausgabe\form_1.php:2) in d:\beispiel_formularausgabe\form_1.php on line 2

    Warning: Unknown(): open(/tmp\sess_e1c6ae4312b0e64037ff39b0565f57a2, O_RDWR) failed: No such file or directory (2) in Unknown on line 0

    Warning: Unknown(): Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/tmp) in Unknown on line 0

    [COLOR=red]WARUM?[/COLOR]

  • #2
    Probier mal das:

    PHP-Code:
    session_start();
    session_register("paket");
    session_register("domainanzahl");
    $paket="Standard";
    $domainanzahl=1
    Gruss

    tobi
    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

    Kommentar


    • #3
      Warning: session_start() [function.session-start]: open(/tmp\sess_e1c6ae4312b0e64037ff39b0565f57a2, O_RDWR) failed: No such file or directory (2) in d:\beispiel_formularausgabe\form_1.php on line 2
      Überprüfe mal den Pfad

      Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at d:\beispiel_formularausgabe\form_1.php:2) in d:\beispiel_formularausgabe\form_1.php on line 2
      wurde Leerzeichen oder anderweitige Zeichen bereits geschickt? Auch Leerzeichen/zeilen in deiner PHP Datei sind relevant.
      HTTP-Referer bereits abgeschickt?

      Original geschrieben von jahlives
      PHP-Code:
      session_register("paket");
      session_register("domainanzahl"); 
      session_register verwendet man nicht mehr.
      Dafür gibt es das superglobale Array
      PHP-Code:
      $_SESSION 
      Zuletzt geändert von Payne_of_Death; 14.09.2004, 00:55.
      [color=blue]MfG Payne_of_Death[/color]

      [color=red]Manual(s):[/color] <-| PHP | MySQL | SELFHTML |->
      [color=red]Merke:[/color]
      [color=blue]Du brauchst das Rad nicht neu erfinden ! [/color]<-ForumSuche rettet Leben-> || <-Schau in den Codeschnippsels->

      Murphy`s Importanst LAWS
      Jede Lösung bringt nur neue Probleme
      Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht.
      In jedem kleinen Problem steckt ein großes, das gern raus moechte.

      Kommentar


      • #4
        [COLOR=blue]Für jahlives:[/COLOR]

        Die richtige Syntax lautet:

        Code:
        <?php
            session_start();
            session_register("$paket");
            session_register("$domainanzahl");
            $paket="Standard";
            $domainanzahl=1;
        ?>
        Also doch mit $-Zeichen vor den Variable, aber in Anführungszeichen. Dennoch erhalte ich die Fehlermeldung, sowohol mit meiner ersten version als auch mit deiner version (ohne $-Zeichen und in Anführungszeichen) als auch mit meiner letzten Version (wie oben).


        [COLOR=blue]Für Payne_of_Death:[/COLOR]

        Der pfad d:\beispiel_formularausgabe\form_1.ph stimmt.
        Aber den Pfad (/tmp\sess_e1c6ae4312b0e64037ff39b0565f57a2, O_RDWR) kenne ich nicht, der ist nicht von mir. Ich nehme an, der PHP legt automatisch ein temporäres Verzeichnis /tmp und speichert die Session bzw. die Session-ID dort. Ich habe in dieses Verzeichnis reingeschaut, tatsächlich wird der Eintrag sess_e1c6ae4312b0e64037ff39b0565f57a2 dort geschrieben.

        Es wurden kein Lerrzeichen oder anderweitige Zeichen mitgeschickt. Die Form-Datei wird das erste Mal aufgerufen und schon kommt die Meldung. Ich habe noch keine Daten eingegeben geschweige denn geschickt.

        Kommentar


        • #5
          session_register() ist veraltet!

          www.php.net/session
          INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


          Kommentar


          • #6
            Please verify that the current setting of session.save_path is correct (/tmp) in Unknown on line 0
            ich würde mal auf ihn hier tippen ... hast du mal den slash umgedreht, afaik kann nur \ oder / verwendet werden ...
            Code:
            ; Argument passed to save_handler.  In the case of files, this is the path
            ; where data files are stored. Note: Windows users have to change this
            ; variable in order to use PHP's session functions.
            session.save_path= ".;D:\...\.....\Xampp\tmp"
            der 'header already' kommt afaik nur durch die fehlermeldungen ... der tmp-pfad ist nicht existent ...
            Ich habe in dieses Verzeichnis reingeschaut, tatsächlich wird der Eintrag sess_e1c6ae4312b0e64037ff39b0565f57a2 dort geschrieben.
            na, was denn nun?
            Die Zeit hat ihre Kinder längst gefressen

            Kommentar


            • #7
              Danke für den Tip. Der session.save_path in der PHP.INI-Datei war nicht richtig gesetzt.

              Die Sache hat sich erledigt. Danke an alle!

              Kommentar


              • #8
                Original geschrieben von Armadi
                [COLOR=blue]Für jahlives:[/COLOR]

                Die richtige Syntax lautet:

                Code:
                <?php
                    session_start();
                    session_register("$paket");
                    session_register("$domainanzahl");
                    $paket="Standard";
                    $domainanzahl=1;
                ?>
                Also doch mit $-Zeichen vor den Variable, aber in Anführungszeichen.
                ...
                Sorry, aber das ist totaler Quatsch. Bitte beharre nicht öffentlich auf so einen Quark.

                Code:
                bool session_register ( mixed Name [, mixed ...])
                
                
                session_register() akzeptiert eine variable Anzahl von Argumenten,
                die jeweils entweder eine Zeichenkette sein können,
                die den Namen einer Variablen trägt, 
                oder ein Array, das aus solchen Variablennamen oder anderen Arrays besteht. 
                Für jeden Namen registriert session_register() die globale Variable 
                mit diesem Namen in der aktuellen Session.
                mixed NAME, nicht mixed var.

                Abgesehen davon, daß man wirklich $_SESSION verwenden sollte, kann man also:
                session_register("paket", "domainanzahl");
                schreiben.
                (oder: $sessvar=array("paket","domainazahl"); session_register($sessvar); )

                Viele verstehen es einfach nicht:
                wenn aus irgendeinem Grund $paket zB den Wert "Banane" enthaelt
                (vor einem session_register) ,
                hast Du mit session_register("$paket") eine Session-Variable erstellt,
                die "Banane" heißt und nicht "paket".

                Was Dich spätestens stutzig machen sollte, ist, wenn die Entwickler von
                PHP in Ihrer Online-Doku selbst nur session_register("varname") benutzen.
                Wie gesagt, $ ist OK, wenn der Parameter ein Array mit Variablen-Namen ist,
                aber niemals "$var"!

                Nur weil es in PHP 4.x fehlertolarent behandelt wird, ist dies kein Grund,
                es als einzig richtige Möglichkeit zu postulieren.

                Los editiere Deinen Beitrag und nehme es zurück. Danke.

                nice day
                Quickborner

                Kommentar


                • #9
                  Erstens, habe ich nicht die Tatsache, dass die Syntax session_register("$paket") bei mir (Ich verwende PHP4) die richtige Syntax ist, als einzig richtige Möglichkeit zu postuliert.

                  Zweitens du hast nicht das Recht, gleich ordinär und niveaulos zu werden. Dein Ton gefällt mir nicht. Du bist hier nicht auf einem Jahmarkt, wo man Kühe verkauft und allerlei Tonarten hört. Du kannst höflich deine Argumente vorbringen. Schließlich bringt man hier Probleme vor, und von den verschiedenen Reaktionen und Antworten darauf lernen alle etwas.

                  Ich verwende, wie schon gesagt, PHP4. Und diese bringt sowohl bei session_register("paket") als auch bei session_register($paket) eine Fehlermeldung; aber bei session_register("$paket") nicht. Außerdem ich fand bei den meisten manuals im Internet nur die letzte Version.
                  Zuletzt geändert von Armadi; 16.09.2004, 15:05.

                  Kommentar


                  • #10
                    @Armadi

                    Original geschrieben von Armadi
                    Erstens, habe ich nicht die Tatsache, dass die Syntax session_register("$paket") bei mir (Ich verwende PHP4) die richtige Syntax ist, als einzig richtige Möglichkeit zu postuliert.

                    Zweitens du hast nicht das Recht, gleich ordinär und niveaulos zu werden. Dein Ton gefällt mir nicht. Du bist hier nicht auf einem Jahmarkt, wo man Kühe verkauft und allerlei Tonarten hört. Du kannst höflich deine Argumente vorbringen. Schließlich bringt man hier Probleme vor, und von den verschiedenen Reaktionen und Antworten darauf lernen alle etwas.

                    Ich verwende, wie schon gesagt, PHP4. Und diese bringt sowohl bei session_register("paket") als auch bei session_register($paket) eine Fehlermeldung; aber bei session_register("$paket") nicht. Außerdem ich fand bei den meisten manuals im Internet nur die letzte Version.
                    Lieber Armadi,

                    Es gibt keinen Grund unsachlich zu werden.
                    Welches Recht ich habe oder nicht, entscheidest nicht Du.

                    Wenn Du etwas blau fett schreibst und dann semantisch inkorrekten Code
                    postest, ist es ein Postulat und ein Newbie, der dies liest, könnte es
                    für bare Münze nehmen, weil Du so auf wichtig machst.

                    Nachwievor ist Deine Aussage schlichtweg falsch.
                    Und darum geht es mir, nur weil es bei Dir (angeblich) aus irgendwelchen
                    Gründen so funktioniert, ist es noch lange nicht richtig.

                    Wir haben 2004, da arbeitet man mit $_SESSIONS und register_globals 'off'.

                    Wenn Du folgenden Code am Anfang einer Datei hast, und $paket
                    nicht durch $_GET/$_POST/$_COOKIES/include() etc. definiert ist
                    (und dies ist ganz klar nicht Deine Intention),

                    PHP-Code:
                        session_start();
                        
                    session_register("$paket");
                        
                    session_register("$domainanzahl");
                        
                    $paket="Standard";
                        
                    $domainanzahl=1
                    dann gibt es in Zeile 2 eine Fehlermeldung. (notice: undefined variable: paket...)

                    Wenn nicht, hast Du einfach eine kaputte/verquerte Konfiguration von PHP.
                    Schau' einfach einmal über den Tellerrand.

                    Beschäftige Dich mit Sessions und Du wirst sehen, daß diese intern als Array abgebildet werden.

                    Und ein Array-Element spricht man assoziativ über den literalen Arraykey an.
                    $foo["bar"], ganz simpel.

                    VARIABLEN IN DOPPELTEN QUOTES WERDEN VON PHP GEPARSED UND AUSGEWERTET. PUNKT.
                    LIES DAS 2 MAL UND BEGREIFE ES ENDLICH.

                    Zu 99.94% ist $ARRAY["$var"] falsch, ob Ihr es nun seit Jahren benutzt oder nicht, ist egal.

                    Das verstehst Du offensichtlich nicht.

                    Zudem hast Du meine Humor-Tags überlesen.

                    Die Relevanz von Fremd-Doku ist gegenüber der Original-Doku unerheblich.
                    Diese entsteht nämlich genau auf Deine Weise, dieser Thread wird gegooglet,
                    jemand findet Dein Wichtig-Posting und verbreitet es weiter und schon
                    schreiben wieder 100 arme Deppen session_register("$paket") statt $_SESSION["paket"];

                    Also, nichts für ungut, aber versuche nicht, Unwissenheit durch Arroganz zu kompensieren.
                    Damit ist hier keinem geholfen.

                    Für weitere Fragen stehe ich gern zur Verfügung.

                    Ich bedaure, daß mein Reifegrad es noch nicht zulässt, Dein Posting einfach zu ignorieren.

                    Hochachtungsvoll
                    Quickborner

                    Kommentar


                    • #11
                      OffTopic:

                      Wir haben 2004, da arbeitet man mit $_SESSIONS und register_globals 'off'.
                      Was hat das mit 2004 zu tun?
                      Hätte man nicht auch schon 2002 sauber arbeiten können?
                      Nur weil jetzt standardmässig register_globals 'off' ist, bedeutet dass doch nicht dass man vorher nicht auch schon ordentlich arbeiten konnte / sollte?

                      [Test] MySQL cli Emulator

                      Kommentar


                      • #12
                        Deine Argumente könntst du, wie ich schon in meinem gestrigen Beitrag vorbrtachte, in höflicher Ausdruckweise darlegen.

                        Und das Thema meines Threads hat sich dank Beiträge anderer Forum-Freunde, die Ihre Tips sachlich und ohne Schimpfwörter eingetragen hatten, schon erledigt. Also belassen wir es dabei.

                        Zuletzt geändert von Armadi; 16.09.2004, 15:00.

                        Kommentar

                        Lädt...
                        X