Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Problem beim Header

Frage Entwicklung PHP

Mitglied: Snowboarder1994

Snowboarder1994 (Level 1) - Jetzt verbinden

11.10.2010 um 18:00 Uhr, 3126 Aufrufe, 10 Kommentare

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.
Mitglied: maretz
11.10.2010 um 21:11 Uhr
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...
Bitte warten ..
Mitglied: Florian.Sauber
11.10.2010 um 23:24 Uhr
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
Bitte warten ..
Mitglied: maretz
12.10.2010 um 06:49 Uhr
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...
Bitte warten ..
Mitglied: Arano
12.10.2010 um 11:43 Uhr
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

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 !

01.
<?php 
02.
 
03.
$domain =  "http://".$_SERVER['SERVER_NAME']; 
04.
 
05.
// was anderes... 
06.
 
07.
include("<?echo $domain;?>/connect.inc.php"); 
08.
include("<?echo $domain;?>/inc/onlinestatus.inc.php"); 
09.
include("<?echo $domain;?>/inc/status.inc.php"); 
10.
?>
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
Bitte warten ..
Mitglied: maretz
12.10.2010 um 12:48 Uhr
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!
Bitte warten ..
Mitglied: Arano
12.10.2010 um 13:23 Uhr
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
Bitte warten ..
Mitglied: Florian.Sauber
12.10.2010 um 13:25 Uhr
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
Bitte warten ..
Mitglied: Arano
12.10.2010 um 13:34 Uhr
Keine Sorge, deinen Beitrag habe ich ignoriert :-P
Bitte warten ..
Mitglied: maretz
12.10.2010 um 13:41 Uhr
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
Bitte warten ..
Mitglied: Arano
12.10.2010 um 14:25 Uhr
Gern gern

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
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
DSL, VDSL
Problem mit variernder Internetgeschwindigkeit (12)

Frage von schaurian zum Thema DSL, VDSL ...

Windows Netzwerk
gelöst Problem mit PSexec64 von Sysinternals (8)

Frage von MaxMoritz6 zum Thema Windows Netzwerk ...

Windows Server
gelöst Problem nach DC-Installation unter Server 2012 R2 (9)

Frage von manuel1985 zum Thema Windows Server ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Festplatten, SSD, Raid
M.2 SSD wird nicht erkannt (14)

Frage von uridium69 zum Thema Festplatten, SSD, Raid ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (14)

Frage von liquidbase zum Thema Windows Update ...