falsche links werden geöffnet

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

  • #16
    ok, also eiglt so:

    PHP-Code:
    if(file_exists("files/".$_GET['file'].".php")) {
      include(
    "files/".$_GET['file'].".php");

    aber daran kanns glaub nid liegen^

    ok hab jetzt mal die gelegenheit gehabt das ganze auf einem anderen Server zu testen, mit der Ergebnis, dass der Fehler weiterhin bestehen bleibt.
    Schlussfolgerung es liegt an meine Script .s
    Ich werd dann demnächst mal die index.php etwas kommentieren und uppen
    Zuletzt geändert von Enerkin; 30.01.2006, 17:12.
    1123581321

    Kommentar


    • #17
      Original geschrieben von Enerkin
      Ich werd dann demnächst mal die index.php etwas kommentieren und uppen
      das wäre sehr hilfreich ... und mach ein Testcase (was müssen wir machen um den Effekt zu erzielen?!)

      Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

      bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
      Wie man Fragen richtig stellt

      Kommentar


      • #18
        was genau ist ein testcase?
        1123581321

        Kommentar


        • #19
          Ok, habe jetzt die index.php etwas kommentiert.
          Angehängte Dateien
          1123581321

          Kommentar


          • #20
            Re: falsche links werden geöffnet

            Original geschrieben von Enerkin
            Hi,
            hab folgendes Problem: hab jetzt so ne art cms erstellt und bisher gab es auch keine probleme, nur seit dem die seite gelaunched wurde und mehrere user gleichzeitig auf der seite sind, wird des öfteren der falsche link geöffnet. D.h. ich klick auf home und komme dann ins forum. Und manchmal passiert es dann auch, dass man plötzlich als jemand ganz anderes eingeloggt ist. Allerdings kann ich mir absolut nicht vorstellen wie das passieren kann. Weiß jmd von euch vllt nen Rat?
            Heißt es, du hast das auf localhost entwickelt und es ging?

            Dann schau dort noch mal und öffne das teil mit zwei verschiedenen Browsern, damit 2 verschiedene Sessions erzeugt werden. Dann suche mal wo die sessions gespeichert sind und öffne die Dateien mit einem editor. Dann probiere einiege klicks auf der Site und überprüfe was in den Sessions sich ändert.
            Meine Vermutung ist nämlich, dass da irgendwas mit der Session nicht in Ordnung ist.
            Xdevel

            Kommentar


            • #21
              nein, hab es nid auf localhost entwickelt, werd es aber dort jetzt mal ausprobieren..

              solange man ja allein auf der seite ist hat es nie probleme.
              1123581321

              Kommentar


              • #22
                Hallo,

                ich bin zwar kein Profi,

                aber ich denke auch das es an der Session liegt.

                Ich denke auch, das auf jedenfall was überschrieben wird, d.h.

                wenn Du auf den Link klickst wird falls das so Programmiert ist,

                eine Variable gefüttert (oder etwas anderes) wenn der User 2 auch auf ein Link klickt, so wird die Variable überschrieben.

                Passiert es wenn User 1 und User 2 gleichzeitig auf den Link klickt, so kann es passieren das User 1 die falsche Seite angezeigt bekommt,

                weil User 2 die Variable überschreibt, kurz vor der Abfrage des Browsers oder Servers für User 1, und somit die Daten des User 2 bekommt.

                Kann es auch sein, das auch die Session es so ähnlich macht, gibt es ein überschreibungsschutz der Variable, bis diese nach abfrage wieder aufgehoben ist?

                Kannst ja mal nach Möglichkeiten suchen!

                Mit freundlichen Grüßen
                RycoDePsyco
                www.CustomMaps.de, www.Kultevents.net
                www.CustomMap.de, www.Kultevent.net

                Kommentar


                • #23
                  hab den fehler immernoch nicht gefunden
                  habe das ganze auf einem andren webspace getestet, fehler besteht aber weiterhin

                  was mir auffiel, dass wenn diese links vertauscht werden, dass dann auch die url im browser vertauscht wird, d.h. man klickt auf index.php?file=home kommt aber zu index.php?file=gbook und das index.php?file=gbook steht auch noch in der url, obwohl man ja eine völlig andre seite aufgerufen hat?
                  kann man sowas überhaupt mit einem php script manipulieren?
                  da ja php nur serverseitig abläuft?
                  1123581321

                  Kommentar


                  • #24
                    wer weiß, ob du soo unsauber programmiert hast, und "zufällig" ne Weiterleitung (aus welchem Grund auch immer) existiert,

                    Kommentar


                    • #25
                      Ok hab jetzt den fehler auch auf 2 andren seiten von mir gefunden..
                      und jedesmal hab ich smarty verwendet, hab jetzt den code der index.php auf das weiteste gekürzt:
                      PHP-Code:
                      <?php
                       ini_set
                      ('arg_separator.output''&');

                       include(
                      'include/setup.php');
                       
                       
                      $template $_GET['file'];

                       if(
                      $template == false) {
                        
                      $template "home";
                       }
                       
                       
                      $smarty->assign('template'$template);
                       
                      $smarty->display('index.tpl');
                       
                      $smarty->clear_all_cache();
                      ?>

                      und hier die setup.php

                      PHP-Code:
                      <?php
                      // Smarty Library Dateien laden
                      define('SMARTY_DIR','/home/www/web300/html/puhn/include/');
                      require(
                      SMARTY_DIR.'Smarty.class.php');

                      // ein guter Platz um Applikations spezifische Libraries zu laden
                      // require('guestbook/guestbook.lib.php');

                      class Smarty_template extends Smarty {

                         function 
                      Smarty_template()
                         {
                                      
                      // Konstruktor. Diese Werte werden für jede Instanz automatisch gesetzt

                                      
                      $this->Smarty();

                                      
                      $smarty = new Smarty;
                                      
                      $smarty->template_dir '/home/www/web300/html/puhn/templates';
                                      
                      $smarty->compile_dir '/home/www/web300/html/puhn/templates_c/';
                                      
                      $smarty->config_dir '/home/www/web300/html/puhn/configs/';
                                      
                      $smarty->cache_dir '/home/www/web300/html/puhn/cache/';

                                      
                      $this->caching true;
                                      
                      $this->assign('app_name','template');
                         }

                      }
                      $smarty = new Smarty_template;
                      ?>
                      hm da is absolut nix mit ner weiterleitung oder ähnlichem

                      und im template wird das template so includet:

                      PHP-Code:
                      <td valign="top">
                                 {include 
                      file="../templates/$template.tpl"}
                      </
                      td
                      liegt das also an smarty?
                      Zuletzt geändert von Enerkin; 22.02.2006, 18:17.
                      1123581321

                      Kommentar


                      • #26
                        jo, mach mal $this -> caching = false ...

                        eigentlich wäre schon zu erwarten, dass smarty sowas nicht macht, aber ich vermute wirklich schwer, dass man

                        PHP-Code:
                         $smarty->cache_dir '/home/www/web300/html/puhn/cache/' .session_id() . '/'
                        nehmen sollte.

                        solche fehler treten entweder dann auf, wenn man mit objektorientiertem php4-code auf php5 umsteigt, und für urls und dergleichen objekte verwendet hat, die plötzlich nicht mehr (wie gewollt) kopiert werden, oder wenn man nicht-gesession'te daten hat - eine datei, die irgendeinen status angibt, ein datensatz in der db, irgendwas.

                        wozu brauchst du eigentlich das $smarty - objekt im konstruktor? ist doch schwachsinn - du verwendest es ja gar nicht. muss es nicht $this -> template_dir etc. lauten?
                        Zuletzt geändert von axo; 23.02.2006, 00:48.

                        Kommentar


                        • #27
                          hi
                          danke für deine antwort. es scheint funktioniert zu haben.
                          hab jetzt $this->caching auf false gestellt.
                          Sollte ich jetzt trotzdem noch das $smarty->cache_dir in
                          PHP-Code:
                          $smarty->cache_dir '/home/www/web300/html/puhn/cache/' .session_id() . '/'
                          ändern?

                          Brauche ich jetzt eiglt noch das hier am Ende der Datei?:
                          PHP-Code:
                          $smarty->clear_all_cache(); 
                          Und hab noch ne Frage: was genau ist jetzt der Unterschied, wenn man das auf false gestellt hat?

                          wozu brauchst du eigentlich das $smarty - objekt im konstruktor? ist doch schwachsinn - du verwendest es ja gar nicht. muss es nicht $this -> template_dir etc. lauten?
                          weiß nid genau^ hab die setup.php von irgendeinem smarty tutorial und da war das alles so beschrieben..
                          1123581321

                          Kommentar


                          • #28
                            weiß nid genau^ hab die setup.php von irgendeinem smarty tutorial und da war das alles so beschrieben..
                            ja, dann denk mal ganz genau nach. programmierung ist halt nicht copy&paste, kopf muss eingeschaltet bleiben.
                            ich meine, dass du die $smarty - variable im konstruktor überhaupt nicht brauchst, und glaube, sie kann komplett gelöscht werden.

                            sollte der Smarty-konstruktor aber irgend ein magisches verhalten haben, das nur nach zweimaligem aufruf 'passiert', braucht's das. also guck in den Smarty() - konstruktor und schau dir an, was dort passiert, und entscheide dann, ob es $smarty überhaupt braucht.
                            u.U. sollte $smarty in $this umbenannt werden, um zum erwünschten verhalten zu kommen.

                            und wenn du das smarty-caching ausschaltest, machst du damit deine komplette applikation saulangsam, d.h. du solltest weiter nach dem fehler suchen und nicht einfach das caching abschalten...

                            guck erstmal, was passiert, wenn du $smarty in $this umwandelst ( im konstruktor ).

                            übrigens, weil ich deine 'kommentare' auch mit angucken musste:

                            es bringt nichts, den code nochmal in worte zusammenzufassen.
                            ein kommentar muss 'mehrwert' haben, d.h. informationen vermitteln, die allein durch das lesen des codes nicht zur verfügung stehen.

                            kommentare der art
                            PHP-Code:
                            // falls $bla == true 
                            if ( $bla == true
                            sind nicht nur obsolet, sondern sogar hinderlich.
                            das für die zukunft. überleg dir, was sich ein mensch fragen könnte, der deinen code in 200 jahren mal lesen muss, und schreib das hin. beantworte das 'warum sieht diese zeile/codeblock/methode so aus?' in einem kommentar.
                            Zuletzt geändert von axo; 23.02.2006, 13:31.

                            Kommentar


                            • #29
                              ok danke für die tipps,
                              habe mich jetzt nochmal über das caching informiert.
                              Wenn ich
                              PHP-Code:
                              $smarty->clear_all_cache(); 
                              am Ende von jedem Script ausführe kann ich doch $this->caching gleich auf false stellen, da es ja dann keinen effekt hat.
                              Desweiteren werden ja die Änderung auf der Seite dann ja nicht sofort sichtbar wenn $this->caching auf true gestellt ist, was mir persönlich absolut nicht gefällt.

                              Desweiteren hab ich mich hier nochmal über die Smarty Installation schlau gemacht und das $smarty - Objekt im Konstruktor durch $this ersetzt.

                              Danke für alle die mir hier geholfen haben
                              1123581321

                              Kommentar

                              Lädt...
                              X