... noch ein paar Anfänger-Fragen

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

  • ... noch ein paar Anfänger-Fragen

    Bin echt begeistert, wie einfach man mit php Sachen machen kann wie automatisch mails versenden, Bilder uploaden, passwortgeschütze Bereiche anlegen, Gästebuch, DB, usw... alles in den letzten 3 Tagen ausprobiert.

    Aber ein paar Problemchen hab ich noch:
    1)
    Hab nen einfachen Zähler gebaut, der die Anzahl der Seitenaufrufe in einem File speichert. Nun möchte ich gerne verhindern, daß er bei einem reload auch hochzählt.
    Kann man irgendwie abfragen, ob der reload-Button des Browsers gedrückt wurde? Hab da nix zu gefunden...
    Oder wie kann man das eleganter lösen? Mit Sessions? Hab das probiert, hat aber irgendwie nicht funktioniert.

    2)
    Sessions:
    a)
    Wenn ich den Zähler mit einer Session realisiere, krieg ich da nicht Probleme, weil der Zähler sowohl für anonyme Gäste als auch für angemeldete Benutzer funktionieren soll?
    Wenn ich mich z.B. auslogge und die Session beendet wird, dann reloade, hab ich ja auch eine Session-Variable gelöscht, die mir sagt, daß ich schon mal auf der Seite war... muß ich da beim Ausloggen also nur z.B. die User-Variable löschen, oder wie mach ich das am geschicktesten? Kann man vielleicht gleichzeitig verschiedene Sessions laufen lassen?
    b)
    Ich hab das Problem, daß mein Browser in Sessions manchmal meckert, wenn man den Back-Knopf in Safari drückt ('Formular nochmal absenden?') und beim Reload-Knopf heißt es dann plötzlich 'Benutzer oder Passwort falsch!', obwohl ich mich gar nicht ausgeloggt habe. Seltsam dabei ist, daß beim Reload z.B. von 'privat.php' nicht die Fehlermeldung 'Bitte einloggen!' erscheint, wie es auf selbiger steht. Die Meldung 'Benutzer oder Passwort falsch!' gehört eigentlich zur Seite 'verify.php', die einen vom Login zu 'privat.php' bringt.
    Mit firefox funktioniert alles, wie ich es mir vorstelle.
    Irgend welche Ideen dazu?


    3)
    Gästebuch:
    Ich saß gestern ewig dran, bis das mit dem Zeilenumbruch funktioniert hat. Ich hab mangels DB die Einträge aus einer Textarea in ein File gespeichert. Dort hatte ich entweder 2 oder 0 statt einem Zeilenumbruch, manchmal sah es im File auch korrekt aus, aber die fgets()-Funktion hat doch nicht die Zeilenumbrüche erkannt, usw...
    Nun hab ich es so gelöst:
    $text aus der Textarea:
    - Alle \r werden in \n umgewandelt.
    - Alle \n\n werden in \n umgewandelt.
    Der Text wird dann mit explode("\n",$text) in Zeilen zerlegt
    und mit fputs($file,$textzeile[$i]."\n") ausgegeben.
    So funktioniert es bei mir.
    Ich habe aber die leise Ahnung, daß dies wieder ganz anders aussieht, wenn man mit einem Win-Computer Text eingibt. Kann ich leider nicht testen, hab nen Mac.
    Wie macht man sowas am elegantesten?

    4)
    Dateien:
    Nur lesen mit 'r' krieg ich hin, kein Ding.
    Nur Text anhängen mit 'a' auch.
    Aber Text verändern?
    Hab z.B. ein user.data-File, wo eine Zeile so aussieht:
    <user>#<passwort>#<zugangslevel>#<mailadresse>

    Wenn ich jetzt ein Passwort ändern will, muß ich erst Zeile für Zeile nach dem User suchen und dann in der selben Zeile das alte durch das neue Passwort ersetzen.

    Ich krieg es aber einfach nicht hin, gleichzeitig zu lesen und zu schreiben!
    Wenn ich im 'w'-Modus bin, wird scheinbar jedesmal 'user.data' gelöscht oder überschrieben, denn wenn ich es mit einem Editor öffne, starrt mich die gähnende Leere an. Das ist wohl auch der Grund, weshalb fgets() nichts zurückgibt, auch wenn davor noch kein fputs() oder irgendein anderer schreibender Befehl kam... Ist das normal?

    Ich hab das jetzt so gelöst, daß ich mit 'r' das gesamte File in 2-dimensionale Arrays einlese, diese bearbeite und dann mit 'w' alles komplett neu schreibe.
    Das muß doch einfacher gehen!


    So. Mir war, als ob ich noch ein ungelöstes Problem hätte, fällt mir aber grad nicht ein.
    Reicht ja auch erst mal. Vielleicht kommt später noch was dazu

    Bin für jede Hilfe dankbar!

  • #2
    Beim counter würd ich einfach die IP abspeichern, bei erneutem Aufruf vergleichen & nen Timeout setzen (d.h. ob der besucher vielleicht wieder gezählt werden soll)
    Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
    var_dump(), print_r(), debug_backtrace und echo.
    Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
    Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
    Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

    Kommentar


    • #3
      Aber Text verändern?
      bei Änderungen in Textdateien gibt es zwei folgende Möglichkeiten:
      inhalt komplett neu schreiben bzw. inhalt am ende anfügen

      Ich hab mangels DB die Einträge aus einer Textarea in ein File gespeichert
      dann schau doch mal nach phptriad, da hast du auch eine DB dabei. und sämtliche probleme mit den textdateien sind erledigt.

      gruss
      peter
      Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
      Meine Seite

      Kommentar


      • #4
        Original geschrieben von Kropff
        bei Änderungen in Textdateien gibt es zwei folgende Möglichkeiten:
        inhalt komplett neu schreiben bzw. inhalt am ende anfügen
        Schade. Da hätte ich von php mehr Komfort erwartet.
        Ist doch irgendwie umständlich, erst ein File komplett auszulesen, leicht zu ändern und komplett neu zu schreiben. Das ist für kleine Textdateien ok, aber für größere nicht besonders effizient.
        Naja, da werd ich mir wohl selbst eine solche Funktion schreiben müssen.


        dann schau doch mal nach phptriad, da hast du auch eine DB dabei. und sämtliche probleme mit den textdateien sind erledigt.
        Nein, so wichtig ist es nicht. Das geht schon mit einem Textfile. Außerdem hab ich auf meinem Rechner mysql, nur auf dem Web-Server ist keins. Und ich glaube kaum, daß ich darauf phptriad installieren kann. Außerdem kostet es was...

        Kommentar


        • #5
          Original geschrieben von Kropff
          bei Änderungen in Textdateien gibt es zwei folgende Möglichkeiten:
          inhalt komplett neu schreiben bzw. inhalt am ende anfügen
          Hab nochmal recherchiert, weil ich das nicht glauben konnte.
          Bin auch fündig geworden!
          Man kann sehr wohl Dateien ändern, alles andere hätte mich auch sehr gewundert.

          Es gibt nämlich noch die Modi 'r+', 'w+' und 'a+'.
          Ersterer erlaubt mir, zu lesen UND zu schreiben. Beim Schreiben wird dabei an der Filepointer-Stelle eingefügt, nicht überschrieben.

          Kommentar


          • #6
            und den Filepointer setzt du immer genau an die richtige Stelle

            naja, ich halte das für ziemlich unsicher.

            Die Methode: Lesen und dann String bzw. das Array neu erstellen mit den Ergänzungen und dann speicher ist bestimmt einfacher und sicherer.
            Kostenlose Werbung für Ihre Website

            Kommentar


            • #7
              öhm fasch, sorry

              Forumregeln!

              Gute PHP-(tutorial-)Seiten

              Kommentar

              Lädt...
              X