php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 14-01-2008, 06:45
PHPler
 Registrierter Benutzer
Links : Onlinestatus : PHPler ist offline
Registriert seit: Oct 2003
Beiträge: 250
PHPler ist zur Zeit noch ein unbeschriebenes Blatt
Standard [Hilfe] Seltsames Phänomen mit Firefox und PHP

Hallo!

Ich habe in meinem CMS diese Funktion:
Code:
$sql = mysql_query("SELECT * FROM modules");
if(!empty($sql)) {
    if(mysql_num_rows($sql) > 0) {
        while($line = mysql_fetch_assoc($sql)) {
            ...
            if(!empty($line['module'])) {
                include("modules/".$line['module']."/index.php");
            }
            ...
        }
    }
    mysql_free_result($sql);
}
Diese Funktion lädt mir Module in meine Seite. Nun habe ich mal (testweise) ein Modul mit den folgenden Zeilen:
Code:
$fp = fopen("C:\\text.txt", "a");
if(fwrite($fp,1."\n")) {
    echo '<div style="background-color:#000000;color:#FFFFFF;">OK</div>';
}
fclose($fp);
Das CMS läuft auf meinem Testrechner, auf dem ein Apache 2 mit PHP5 und MySQL5 läuft. Dabei läuft es auch über einen VirtualHost (www.cms.de). Rufe ich die Seite nun auf, wird eine Textdatei erstellt, die eine 1 enthält. Zusätzlich wird ein "OK" in einer Blackbox ausgegeben. Sind jedoch die folgenden Bedingungen erfüllt:

- Der aufruf erfolgt über www.cms.de (nicht über Localhost, 192.168.0.1, etc).
- Ich bin im CMS als Administrator eingeloggt
- Ich rufe die besagte Seite mit dem Firefox auf

Wird mir zwar auch das OK in der Blackbox ausgegeben, die Textdatei enthält jedoch gleich "zwei" 1.

Es sieht so aus, als würde das Modul gleich zwei mal eingebunden werden, was wiederum nicht sein kann, da das OK in der Blackbox nur einmal ausgegeben wird.

Und irgendwie bin ich nun grad mit meinem Latein am Ende. Ich würde ja noch verstehen, wenn ich irgendwo einen Fehler beim Coden gemacht hätte, und das Problem sich auf den Administrator Account beziehen würde. Es ist aber zugleich an den VirtualHost und an den Firefox geubnden, der ja wiederum kein Einfluss auf das Parsen des Scripts haben kann, da das ja Serverseitig passiert. Also scheint wohl mein Apache ne Macke zu haben, oder was ist da los?

Hat schon jemand von Euch so ein Phänomen erlebt und weis ggf. eine Lösung für oder hat nen Tip für mich wie ich das Problem lokalisieren kann?

Ein "echo $line['module']" in der oberen Funktion zeigt mir, dass das Modul der Seite NICHT zweimal zugewiesen wurde. Auch ein require_once statt des include hindert das Script nicht daran zwei mal eine 1 in die Textdatei zu schreiben.

Hoffe mir kann irgendwer von Euch helfen. Danke schonmal...
Mit Zitat antworten
  #2 (permalink)  
Alt 14-01-2008, 06:59
unset
  Moderator
Links : Onlinestatus : unset ist offline
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.782
unset befindet sich auf einem aufstrebenden Ast
Standard

Zeig mal evtl. noch deine VirtualHost-Direktiven her.
Mit Zitat antworten
  #3 (permalink)  
Alt 14-01-2008, 07:08
PHPler
 Registrierter Benutzer
Links : Onlinestatus : PHPler ist offline
Registriert seit: Oct 2003
Beiträge: 250
PHPler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

NameVirtualHost 127.0.0.1

<VirtualHost 127.0.0.1>
ServerName www.cms.de
DocumentRoot C:/AppServ/www/cms
</VirtualHost>

<VirtualHost 127.0.0.1>
ServerName cms.de
DocumentRoot C:/AppServ/www/cms
</VirtualHost>

Lustig ist im übrigen auch folgendes:
Code:
class test {
    public static $test = 0;

    function test() {
        $fp = fopen("C:\\text.txt", "a");
        fwrite($fp,1);
        fclose($fp);
        self::$test = 1;
    }

}
if(empty(test::$test != 1) {
    test::test();
}
Gibts trotzdem zwei 1, obwohl die Funktion ja nach dem ersten Aufruf ja eigentlich blockiert ist...

Und ach ja, das Problem ist im übrigen einfach so aufgetreten, bestand also nicht immer...
Mit Zitat antworten
  #4 (permalink)  
Alt 14-01-2008, 07:26
unset
  Moderator
Links : Onlinestatus : unset ist offline
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.782
unset befindet sich auf einem aufstrebenden Ast
Standard

Nimm mal all das gepostete raus und ersetz es durch das:
Code:
<VirtualHost *>
	ServerName www.cms.de
	ServerAlias cms.de www.cms.de
	DocumentRoot C:/AppServ/www/cms
</VirtualHost>
Ich halte es zwar für unwahrscheinlich, aber da du zweimal vHosts für 127.0.0.1 angegeben hast (was natürlich keinen Sinn macht), könnte es sein, dass FF aus irgend einem Grund auch beide ausgeliefert bekommt. Wie gesagt, ich halte es für sehr unwahrscheinlich und ich bin auch nicht grade ein Ass auf diesem Gebiet. Dennoch würde ich mal meine Direktive ausprobieren.

ServerName ist nämlich nur der Name der in der Signatur angezeigt wird. ServerAlias bestimmt die Domains auf die Angesprungen werden soll.

Und wenn ich mich irre: Sorry, ich bin verdammt müde

Edit: SELECT * is evil!
Mit Zitat antworten
  #5 (permalink)  
Alt 14-01-2008, 07:33
PHPler
 Registrierter Benutzer
Links : Onlinestatus : PHPler ist offline
Registriert seit: Oct 2003
Beiträge: 250
PHPler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hab ich mal gemacht. Problem ist weiterhin da. Auf dem Server meines Hosters besteht das Problem ebenfalls, warum auch immer...
Mit Zitat antworten
  #6 (permalink)  
Alt 14-01-2008, 10:44
ghostgambler
 Master
Links : Onlinestatus : ghostgambler ist offline
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
ghostgambler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Das klingt so als wenn dein Rechner die Website einfach zwei Mal aufruft...
Guck mal in die Access-Logs vom Webserver.
Mit Zitat antworten
  #7 (permalink)  
Alt 14-01-2008, 15:32
PHPler
 Registrierter Benutzer
Links : Onlinestatus : PHPler ist offline
Registriert seit: Oct 2003
Beiträge: 250
PHPler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hm, das scheint in der Tat so. Habe mal die Seiten aufgerufen, und dann die Aufrufstatistik angeschaut. Die ist glatt um 3 Aufrufe hochgeangen (zwei von der Seite, eine vom reload der Seite mit den Statistiken).

Code:
127.0.0.1 - - [14/Jan/2008:14:23:00 +0100] "GET /index.php?site=forum&f=3&t=1 HTTP/1.1" 200 7776 
127.0.0.1 - - [14/Jan/2008:14:23:00 +0100] "GET /templates/default/style_forum.css HTTP/1.1" 304 -
127.0.0.1 - - [14/Jan/2008:14:23:00 +0100] "GET /plugins/lightbox/js/prototype.js HTTP/1.1" 304 -
127.0.0.1 - - [14/Jan/2008:14:23:00 +0100] "GET /plugins/lightbox/js/scriptaculous.js?load=effects HTTP/1.1" 304 -
127.0.0.1 - - [14/Jan/2008:14:23:00 +0100] "GET /plugins/lightbox/js/effects.js HTTP/1.1" 304 -
127.0.0.1 - - [14/Jan/2008:14:23:00 +0100] "GET /plugins/lightbox/js/lightbox.js HTTP/1.1" 304 -
127.0.0.1 - - [14/Jan/2008:14:23:00 +0100] "GET /plugins/lightbox/css/lightbox.css HTTP/1.1" 304 -
127.0.0.1 - - [14/Jan/2008:14:23:00 +0100] "GET /plugins/tinymce/jscripts/tiny_mce/tiny_mce.js HTTP/1.1" 304 -
127.0.0.1 - - [14/Jan/2008:14:23:00 +0100] "GET /images/blank.gif HTTP/1.1" 304 -
127.0.0.1 - - [14/Jan/2008:14:23:00 +0100] "GET /templates/default/images/headerbg.png HTTP/1.1" 304 -
127.0.0.1 - - [14/Jan/2008:14:23:00 +0100] "GET /templates/default/images/1-topleft.gif HTTP/1.1" 304 -
127.0.0.1 - - [14/Jan/2008:14:23:00 +0100] "GET /templates/default/images/1-bottomright.gif HTTP/1.1" 304 -
127.0.0.1 - - [14/Jan/2008:14:23:00 +0100] "GET /index.php?site=forum&f=3&t=1 HTTP/1.1" 200 7775
In den Logs (nachdem ich sie gelöscht habe) taucht die besagte Seite in der Tat zwei mal auf. Aber warum zum Teufel ruft mein Rechner die denn zwei mal auf? Und dann eben nur mit dem Firefox und wenn ich als Administrator eingeloggt bin? Oo
Mit Zitat antworten
  #8 (permalink)  
Alt 14-01-2008, 18:46
ghostgambler
 Master
Links : Onlinestatus : ghostgambler ist offline
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
ghostgambler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von PHPler
In den Logs (nachdem ich sie gelöscht habe) taucht die besagte Seite in der Tat zwei mal auf. Aber warum zum Teufel ruft mein Rechner die denn zwei mal auf? Und dann eben nur mit dem Firefox und wenn ich als Administrator eingeloggt bin? Oo
ka?
Fasterfox nur auf dem Admin-Konto installiert oder so ... was weiß ich, ist dein Rechner oO
Mit Zitat antworten
  #9 (permalink)  
Alt 14-01-2008, 18:55
IchBinIch
 Registrierter Benutzer
Links : Onlinestatus : IchBinIch ist offline
Registriert seit: Apr 2003
Beiträge: 324
IchBinIch ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ich glaube Adminkonto meint das den Admin des CMS. Was natürlich einen Fehler auch(!) dort vermuten lässt...
__________________
ICH BIN ICH!!!
Mit Zitat antworten
  #10 (permalink)  
Alt 14-01-2008, 23:53
PHPler
 Registrierter Benutzer
Links : Onlinestatus : PHPler ist offline
Registriert seit: Oct 2003
Beiträge: 250
PHPler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Jo, meine das Administrationskonto im CMS. Aber das Ding ist eben, dass das nur mit dem Firefox der Fall ist. Wenn ich den IE oder Opera verwende passiert nichts, auch wenn ich als Administrator eingeloggt bin. Das ist nur beim Firefox der Fall.
Mit Zitat antworten
  #11 (permalink)  
Alt 14-01-2008, 23:59
ghostgambler
 Master
Links : Onlinestatus : ghostgambler ist offline
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
ghostgambler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hast du Extensions im Firefox installiert?
Wenn ja, alle deaktivieren.

Noch mal versuchen?
Immer noch?

Passiert das auch bei anderen Seiten? Oder nur bei der index.php?
Wenn nur bei der index.php, lässt sich der Code soweit reduzieren, dass der Fehler nicht mehr auftritt?

Betreib doch mal Eingrenzung des Problems... ich versteh nicht, dass ich das immer wieder neu erklären muss, das ist doch irgendwie offensichtlich, dass man da was eingrenzen muss oO
Bisher ist das ja nun wirklich keine ausreichende Problembeschreibung... da kann ich genauso gut würfeln und sagen "Satan ist schuld, du hast gestern deinen Teller nicht leer gegessen".
Mit Zitat antworten
  #12 (permalink)  
Alt 15-01-2008, 00:34
PHPler
 Registrierter Benutzer
Links : Onlinestatus : PHPler ist offline
Registriert seit: Oct 2003
Beiträge: 250
PHPler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Aaaaaaaaaahhhhhhhhh...

Ich hab den Fehler gefunden. Ich hatte in einem Modul mehrere Links, die Grafikdateien als Link enthielten, und den Linktext als Alternativtext. Diese Links enthielten ein leeres src (es wurde also der alt text angezeigt). Da sie nur für Administratoren angezeigt wurden, kam damit auch der Fehler zu Stande. Aber aus irgendeinem Grunde veranlassten diese Links den Firefox die Seite ein zweites mal aufzurufen. Jetzt habe ich mal (vorrübergehend) irgendwas ins src geschrieben, womit sich das Problem erledigt hat...

Gott ist das gruselig...
Mit Zitat antworten
  #13 (permalink)  
Alt 15-01-2008, 00:39
ghostgambler
 Master
Links : Onlinestatus : ghostgambler ist offline
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
ghostgambler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Wahrscheinlich interpretiert der Firefox ein leeres src-Attribut als "lade das, was in der Adresszeile steht", lädt das, findet raus, dass das kein Bild ist, und zeigt das alt-Attribut an.
Mit Zitat antworten
  #14 (permalink)  
Alt 15-01-2008, 00:51
PHPler
 Registrierter Benutzer
Links : Onlinestatus : PHPler ist offline
Registriert seit: Oct 2003
Beiträge: 250
PHPler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ja das kann angehen, wobei es mich wundert warum es bei 5 leeren srcs nicht 5 mal die Seite lädt. Aber egal, nun läuft ja alles wieder...
Mit Zitat antworten
  #15 (permalink)  
Alt 15-01-2008, 01:00
PHP-Desaster
 PHP Expert
Links : Onlinestatus : PHP-Desaster ist offline
Registriert seit: Mar 2006
Beiträge: 3.105
PHP-Desaster befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Ja das kann angehen, wobei es mich wundert warum es bei 5 leeren srcs nicht 5 mal die Seite lädt. Aber egal, nun läuft ja alles wieder...
OffTopic:
Das haben die OpenSource-Heinis extras so optimiert, dass das erkannt wird...
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni


 

Aktuelle PHP Scripte

HeidiSQL - kostenloses MySQL front-end Editor für Windows ansehen HeidiSQL - kostenloses MySQL front-end Editor für Windows

HeidiSQL - ist ein Windows-Editor für die bekannt open Source Datenbank mySQL

10.12.2018 Berni | Kategorie: MYSQL/ Management
piwik Open-Source Webanalyse-Software ansehen piwik Open-Source Webanalyse-Software

piwik ist eine gute Alternative zu Google Analytics. Viele Features und ein modernes Erscheinungsbild mit aussagefähigen Statistiken in Echtzeit

10.12.2018 phpler | Kategorie: PHP/ Besucherzaehler
jQuery Mobile ansehen jQuery Mobile

Touch-Optimized Web Framework für Smartphones & Tablets

09.12.2018 phpler | Kategorie: AJAX/ Framework
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 03:54 Uhr.