snowboarder1994
Goto Top

Problem beim Header

Hallo,

habe einen Header und dort sind noch paar kleine Fehler drin. Habe es auch durch einem Validator checken lassen usw... Das Problem ist, im Internet Explorer wird es falsch angezeigt aber im Firefox wird es richtig angezeigt. Hier ist mal der Code:

http://pastebin.com/ivYRmFb7

Wer könnte mir bitte helfen?

Gruß Markus K.

Content-ID: 152802

Url: https://administrator.de/contentid/152802

Ausgedruckt am: 24.11.2024 um 17:11 Uhr

maretz
maretz 11.10.2010 um 21:11:08 Uhr
Goto Top
ich habe ehrlich gesagt mittendrin aufgehört zu lesen:

[code]
<table><tr><td>
<?
$domain = "http://".$_SERVER['SERVER_NAME'];
?>
<?
$username_session = (isset($_SESSION['username'])) ? $_SESSION['username'] : null;
[/code]

Denn das sieht mir stark danach aus als wenn da nur nen bisserl Copy & Paste gemacht wurde ohne selbst zu überlegen. Denn es gibt mit sicherheit KEINEN sinnvollen Grund das man die PHP-Tags
?>
<?
genau hintereinander schreibt, oder?

Es geht aber weiter:
[code]
$usernasme_session = $_SESSION["username"];
[/code]
Warum schreibst du Variablen nicht einfach mal richtig? Das macht es deutlich leichter zu lesen - auch wenn man doch die ganze Zeit mit $_SESSION["username"] arbeiten könnte - warum da ne Variable noch für nehmen?

[code]
#
include("<?echo $domain;?>/connect.inc.php");
#
include("<?echo $domain;?>/inc/onlinestatus.inc.php");
#
include("<?echo $domain;?>/inc/status.inc.php");
[/code]
Was DAS werden soll entzieht sich irgendwie meiner Kenntnis... Du bist innerhalb eines PHP-Blockes und arbeitest mit <?-Tags um noch weitere PHP-Scripte zu öffnen?!? Hä?

[code]
if ($username_session !== null) {
[/code]

DAS funktioniert? Ich kenne (!$username_session), ($username_session!= null) oder ($username == null). Aber was ist !==?

Hier hab ich jetzt aufgehört zu lesen - ich weiss nicht woher du den Code hast - und wie es der Code durch den Interpreter schafft. Es mag auch sein das meine PHP-Zeit zulang her ist (ich mache aktuell mehr in Java) - aber ich glaube das ist zimlich schräg da alles...
Florian.Sauber
Florian.Sauber 11.10.2010 um 23:24:29 Uhr
Goto Top
Psst, maretz...

Aber was ist !==(null)
Das ist eigentlich noch ein gut gehütetes Geheimnis aus den dunklen Laoboren der Computerlinguisten.
Nennt sich "ungleichvergleichender Äquivalenzzuweisungsoperator". Die Möglichkeiten solch eines Konstruktes sprengen jedliche Vorstellungskraft. Werden später fleissig Verwendung in Quantencomputern finden. Als Laie kann man sich das wie bei deklarativen Sprachen vorstellen. Du definierst nicht den Weg zur Lösung, sondern den Problem/Ergebisraum.
Auch wenn ich hier vielleicht zu viel davon verrate, kann ich soviel schon dazu sagen:.
Im Prinzip ist es so einfach, dass bisher nur noch keiner darauf gekommen ist:
Was ist das Gegenteil von ungleich...? Genau: gleich. Und wenn alles was ungleich ist null zugewiesen wird, was steht dann in allen Variablen? Genau, die richtige Lösung. Und zwar von JEDEM beliebigen Problem.

Aber bleibt bitte unter uns!

LG Florian
maretz
maretz 12.10.2010 um 06:49:53 Uhr
Goto Top
nun - wie ich bereits erwähnt habe ist meine PHP-Zeit schon ein wenig her. Versuche das mal bei Java:

if (LoadThread!==1)

-> und er wird dir sagen "Syntax Error on Token - delete =".

Es mag aber sein das PHP das zulässt - von daher mag das da gültig sein. ICH weiss es nicht - und ehrlich gesagt habe ich auch momentan keine Zeit & Lust das groß auszuprobieren. Ich würde aber auch behaupten das es in dem Programmkontext falsch ist -> da man vermutlich prüfen möchte ob $username_session gefüllt ist und etwas sinnvolles drin steht. Ich hätte das ganze generell anders gebaut -> beim Seitenaufruf wird folgendes aufgerufen:
if ($_SESSION["userlogin"]!=1) $_SESSION["userlogin"]=0;

Beim Login setze ich diese Variable einmalig auf 1 (oder von mir aus auch nem anderem Wert wenn es mich denn glücklich macht) -> und schon kann ich überall elegant mit einem kleinen schnellen Vergleich abfragen ob der User angemeldet ist. Da es hier nur 0 oder 1 gibt habe ich kein Problem damit wenn z.B. der Username mal maretz, MAretz, mAretz oder was auch immer ist (und ich spare mir nen teuren String-Vergleich). Und wenn man schon sowas wie hier angegeben baut -> dann hat PHP doch so schöne Funktionen wie "isset". Man muss ja eine Sprache nicht verprügeln wenn es nich unbedingt not tut ;)

Und nur mal "unter uns": Ich kenne Sprachen in denen noch ganz andere Konstrukte möglich (und nötig) sind... Da wäre ein !== sicher noch nicht das was mich am meisten erstaunt. Aber bei derart vielen Fehlern die dort im Code sind möchte ich behaupten das dort jeder Interpreter hofft zum Japaner zu werden (die haben die tolle erfindung des Harakiri -> so kann der Interpreter wenigstens ehrenvoll sterben!). Aber warten wir mal was der TO sagt. Ggf. gibt es ja gute Gründe für die Fragen (es waren ja einige hier zu sehr ähnlichen Themen). Das hier wirkt für mich wie irgendwo (falsch) rauskopiert, noch nen bisserl ein paar Zeichen reinfeuern und sich dann wundern warum es nicht geht. Dabei müsste jedes Error-Log da schon Amok laufen... Und zumindest solang wir nicht auf der Enterprise sind (wo man nen Programm baut indem man dem Computer sagt "Mach mir mal etwas was die Zahl Pi berechnet" oder den haushaltsüblichen Board-Androiden an den Schiffscomputer anklemmt) muss man da wohl noch ein wenig am Code arbeiten...
Arano
Arano 12.10.2010 um 11:43:30 Uhr
Goto Top
Hey Jungs...

schaut doch mal hier: PHP-Manual: Comparison Operators
Das hat also sehr wohl einen Sinn ! :-P

Habe es auch durch einem Validator checken lassen usw..
Und warum hast du dessen angezeigte Fehler noch nicht korrigiert ?
Hättest du das getan, würde es vielleicht schon von alleine im Internet Explorer wieder funktionieren face-wink

Beispiele ?
  1. in den ersten Zeilen hast du zweimal das öffnende <html>-Tag
  2. dazwischen den öffnenden <head>-Tag, aber nicht den schließenden
  3. dann öffnest du eine Tabelle/Zeile/Spalte machst aber mit dem <title> und weiten Angaben die im <head> stehen sollten weiter
Ich glaube nicht das irgendein Browser das "richtig" anzeigen kann.
Und eine Frage die du uns auch mal beantworten solltest, was ist den richtig und was ist falsch !? Wie soll es den aussehen ? Bzw. Wie sollen wir ohne zu wissen wie es richtig aussieht die Fehler erkennen - das ist einfach unmöglich !

Warum benutzte du mal "<? ?>" und mal "<?php ?>" ? Wobei beim ersterem die Gefahr besteht das diese deaktiviert sind !

<?php

$domain =  "http://".$_SERVER['SERVER_NAME'];  

// was anderes...

include("<?echo $domain;?>/connect.inc.php");  
include("<?echo $domain;?>/inc/onlinestatus.inc.php");  
include("<?echo $domain;?>/inc/status.inc.php");  
?>
Wie Maretz schon ansprach... aber zusätzlich noch: Du willst die Dateien extra über das Internet aufrufen "ww.domain,de/connect.inc.php" obwohl die Datei direkt neben der anderen auf dem selben Server, der gleichen Festplatte liegt !?
Das ist etwa so sinnvoll als würden zwei Personen die __nebeneinander__ stehen sich anrufen...
Vergiss nicht, PHP wird Serverseitig ausgeführt und nur die Ausgaben (echo's) werden an den Client geschickt.


~Arano
maretz
maretz 12.10.2010 um 12:48:00 Uhr
Goto Top
Naja - macht es wirklich sinn mit $username_session !== null?

[quote]
TRUE if $a is not equal to $b, or they are not of the same type. (introduced in PHP 4)
[/quote]

Das muss man mal im Zusammenhang mit dem Code sehen:

[quote]
if ($username_session !== null) {
include("<?echo $domain;?>/connect.inc.php");
include("<?echo $domain;?>/inc/onlinestatus.inc.php");
include("<?echo $domain;?>/inc/status.inc.php");
[/quote]

Das bedeutet wenn irgendein Müll in $username_session steht dann wird das ding loslaufen. Kann man machen - ist aber ja alles andere als schön.

Zumal in der Zeile darüber
[quote]
$username_session = (isset($_SESSION['username'])) ? $_SESSION['username'] : null;
[/quote]
ja der direkte Vergleich steht. Warum also nicht einfach das zusammenfassen und schreiben

if (isset($_SESSION["username"])) {...};

Ich bin einfach ein Freund davon wenn man sich unnötige Abfragen spart ;). Wenn man nämlich das ganze jetzt noch mit nem Login-Flag koppelt

if ((isset($_SESSION["username"]) && ($_SESSION["login"]==1)) {....}

dann kann man das ganze auch dann noch nutzen wenn die Variablen z.B. mal automatisch initialisiert wurden. Weiterhin hat man das $_SESSION["login"] eben nur an genau EINER Stelle zu ändern -> nämlich beim Login-Formular. Hier kann man also gleich Programmfehler vermeiden - wenn man irgendwo in seinem Programm nochmal ein $_SESSION["login"]=1; schreibt dann ist irgendwas falsch! Darf nicht passieren, böse, schlecht und eh doof!
Arano
Arano 12.10.2010 um 13:23:47 Uhr
Goto Top
Naja... ich habe den Queltext auch nur bis Zeile 80 oder so gelesen, dann hatte ich schon keine Lust mehr im Bezug auf die Hilfefrage !

Ob das bei diesem Quelltext Sinn macht - Vermutlich nicht, aber falsch ist es auch nicht !
Aber das wollt ich damit ja auch gar nicht sagen, ich wollte lediglich den Hinweis geben, das PHP keine Fehlermeldung a la: "Parse error: syntax error, unexpected '=' in /srv/vhosts/***/www/lib/officetable.php on line 186" geben wird weil "!==" Syntaktisch korrekt ist ! Und so auch gleichzeitig deiner Unlust (welches verständlich ist) das zu überprüfen entgegen zukommen - ganz einfach weil ich dieses wusste !

Unnötig aber gründlich,
Gründlich aber unnötig ?


~Arano
Florian.Sauber
Florian.Sauber 12.10.2010 um 13:25:52 Uhr
Goto Top
Hi nochmal!
Zitat von @maretz:
nun - wie ich bereits erwähnt habe ist meine PHP-Zeit schon ein wenig her. Versuche das mal bei Java:

if (LoadThread!==1)

-> und er wird dir sagen "Syntax Error on Token - delete =".

Mann seit ihr ernst!
Ich mein "ungleichvergleichender Äquivalenzzuweisungsoperator".... wie kann man sowas denn ernst nehmen?!

LG Florian
Arano
Arano 12.10.2010 um 13:34:51 Uhr
Goto Top
Keine Sorge, deinen Beitrag habe ich ignoriert :-P
maretz
maretz 12.10.2010 um 13:41:47 Uhr
Goto Top
Ok, dann danke ich für die Info -> das wusste ich wirklich nicht das eine sprache das macht ;)

aber auch ich lerne ja gern dazu face-smile
Arano
Arano 12.10.2010 um 14:25:49 Uhr
Goto Top
Gern gern face-smile

Javascript "kann" das auch: SelfHTML-Javascript: Operatoren

Ich glaube das kommt daher weil in diesen Sprachen beim deklarieren einer Variable das angeben dessen Typs nicht möglich ist, bei einem Vergleich der Typ aber dennoch berücksichtigt werden kann.

~Arano