[PHP] Absolut einfaches Problem

nightsky99

Grand Admiral Special
Mitglied seit
25.11.2001
Beiträge
2.043
Renomée
19
Standort
Wuppertal
Hier steh ich nun...da ich mich mit PHP + MySQL bald mehr beschäftigen will, hab ich langsam angefangen mich da einzuarbeiten.

Folgendes Problem: Ich habe eine komplette Arbeitsumgebung installiert nach einer sehr guten Anleitung WinTotal Anleitung und der Test lief erfolgreich, Apache luppt, MySQL luppt und PHP ist eingebunden.

Nun hab ich ein absolut einfaches Beispiel programmiert.
Die HTML File:

Code:
<html><head><title>Testformulare</title></head>
<body bgcolor="#FFFFFF"><br>
<form method="get" action ="new_entry.php">
<input type="hidden" name="eingabe" value="1">

Name: <Input type "text" name="name" size="20"><br>
Email: <Input type "text" name="email" size="20"><br>
Url: <Input type "text" name="url" value="http://" size="40"><br>
<Textarea name="text" rows="10" cols="40"></textarea><br>
<input type="submit" value="Absenden" size="20">
<input type="reset" value="Clear" size="20">

</form>
</body>
</html>

Dies ist also die Formular Oberfläche.

Nun dazu die new_entry.php

Code:
<html><head><title></title></head>
<body bgcolor="#FFFFFF">
<?php

if($eingabe == 1) {
                               echo("Name: $name<br>Email: $email<br>url: $url<br>Ihr Text: $text");
}	
else {
                echo("Bitte verwenden Sie das Formular");
}
?>
</body></html>

Das Problem ist: Er gibt mir nur den else Zweig permanent zurück, auf Eingaben reagiert er überhaupt nicht. Selbst wenn ich die new_entry.php aufrufe über den Browser z.B. mit
http://localhost/new_entry.php?eingabe=1&name=Andreas&email=lol@web.de=http://www.olo.de&text=Text+ in+der+Textarea kommt immer nur " Bitte verwenden Sie das Formular" zurück...

Ich weiss echt nicht mehr weiter, hat jemand eine Idee?
 
PHP:
<html><head><title></title></head>
<body bgcolor="#FFFFFF">
<?php

if(intval($_GET['eingabe']) == 1) {
                               echo("Name: ".$_GET['name']."<br>Email: ".$_GET['email']."<br>url: ".$_GET['url']."<br>Ihr Text: ".$_GET['text']);
}	
else {
                echo("Bitte verwenden Sie das Formular");
}
?>
</body></html>

Register_Globals, was übergebene Felder automatisch zu Variablen macht ist nicht bei jeder möglichen PHP Distri an. Das ist auch gut so, kann nämlich zur Sicherheitslücke werden wenn der Programmierer dann nicht drauf achtet eigene Variablen erst auf leer zu setzen. Verwende deshalb immer die Arrays $_GET oder $_POST, je nachdem wie du das Formular übergibst.
 
Wunderbaren herzlichen Dank Meister, nun funktioniert es!

Bin dir auf ewig dankbar :)
 
Nochwas, was zwar nicht direkt mit dem Problem zu tun hat: Bevor du richtig in PHP und MySQL einsteigst, solltest du XHTML und CSS fließend beherschen. Also würde ich dir raten erstmal das zu lernen, da nur so der Weg zu wirklich erfolgreichen Ergbnissen führen kann.

Nicht böse gemeint, aber bitte lern erst HTML!

http://jendryschik.de/wsdev/einfuehrung/

\²³/
 
Hehe keine Sorge, XHTML und CSS beherrsche ich schon gut, das Beispiel oben war nur mal so lieblos hingekritzelt als Beispiel, normalerweise programmiere ich schon nach W3C HTML 1.1 Strict ;D

Die Seite kenn ich auch, ist echt 1A, kann ich nur empfehlen!
 
Zuletzt bearbeitet:
nightsky99 schrieb:
Hehe keine Sorge, XHTML und CSS beherrsche ich schon gut, das Beispiel oben war nur mal so lieblos hingekritzelt als Beispiel, normalerweise programmiere ich schon nach W2C HTML 1.1 Strict ;D

Die Seite kenn ich auch, ist echt 1A, kann ich nur empfehlen!

W2C ? *buck*
Du meinst sicherlich W3C, oder?

AndyK
 
W2C hin oder her --- HTML 1.1 strict find ich viel schlimmer *chatt*
 
hast eigentlich recht *buck*
 
Wurde geändert ;D ganz schön peinlich, wäre nicht schlecht wenn man vor dem posten auch nochmal nachliest :-[
 
ok, also jetzt wieder W3C Konform, aber immer noch kein HTML 4.0, oder zumindest 3.2? ;D

AndyK
 
Zuletzt bearbeitet:
Ich geh am Stock ;D mein natürlich XHTML 1.1 Strict....aber ich lass das mal oben zur allgemeinen Belustigung stehen.

Ich sach euch, die Uni raubt einem jede Gehirnmasse! ;D ;D
 
Um diese Stichelei fortzuführen :-X

Ich geh am Stock ;D mein natürlich XHTML 1.1 Strict....aber ich lass das mal oben zur allgemeinen Belustigung stehen.
Der Stock muss aber dick sein, denn du kannst dies auch gleich weiter stehen lassen - ebenfalls zur allgemeinen Belustigung *buck*

Es gibt kein "XHTML 1.1 Strict". Oder hast du die selbst erfunden? Entweder "XHTML 1.0 Strict" oder nur "XHTML 1.1".

Aber nix für ungut *suspect* ;)
 
Jaa gehts mir, wenn ich am Boden bin dann direkt nochmal drauf, ich brauch das ;D ;D

http://www.w3.org/TR/xhtml11/ XHTML 1.1 heisst das wohl nur, ist eine Mischung aus HTML 4.0 und XHTML 1.0 Strict soweit ich das verstanden habe...


HAUPTSACHE EIN GUTER, LESBARER CODE :P

Mein Professor sagte immer: "Ein Code ohne Kommentare kann man wegschmeißen" 8)

edit: Wollte mich jetzt nich als der Oberul0r aufspielen...wollte nur erwähnen das mein Code normalerweise anders ausschaut als in dem HTML Beispiel oben ^^ Sorry falls das falsch verstanden wurde!
 
Jaa gehts mir, wenn ich am Boden bin dann direkt nochmal drauf, ich brauch das ;D ;D
Das hab ich mir schon gedacht dass dir das gefällt - wem gefällt sowas auch nicht? :o :] ;)

Ansonsten würd ich sagen, dass XHTML generell eine auf XML basierende Neuformulierung von HTML4 ist.

edit: Wollte mich jetzt nich als der Oberul0r aufspielen...wollte nur erwähnen das mein Code normalerweise anders ausschaut als in dem HTML Beispiel oben ^^ Sorry falls das falsch verstanden wurde!
Hilfe, nein - ich denk das wurde nicht falsch verstanden. Diese Hinweise waren ja auch nicht todernst gemeint, die Smilies sprechen ja für sich :)
 
Ja natürlich - das ganze war doch nicht ernst gemeint - Man konnte sich ja vorstellen, dass XHTML 1.1 gemeint ist (oder XHTML 1.0 strict).

Zu XHTML 1.1 würde ich persönlich sagen, dass es momentan noch nicht wirklich sinnvoll einsetzbar ist (zumindest nicht streng formal). Vom Syntax her entspricht es zwar ziemlich genau XHTML 1.0 strict - aber es gibt Unterschiede:

XHTML 1.1 geht den Schritt hin zu einer "echten" Modularisierung - Deshalb gibt's auch kein "transitional/strict/frameset etc" mehr. Stattdessen bietet es die Möglichkeit mittels <doctype> eine eigene DTD zu formulieren. Dort wäre es möglich das Modul "target" miteinzubauen, das ja eigentlich in xhtml 1.0 strict/xhtml 1.1 ungültig ist. Ebenso wäre es möglich, gewisse Entitäten anzupassen, damit "üöä" direkt im Code gültig sind (ohne dass man sie mit &ouml &auml usw. beschreiben muss).
Das Problem an der Sache: Bis jetzt unterstützt noch kein Browser wirklich, das Einlesen einer "eigenen" DTD. Allerdings ist es fraglich, ob die Browserhersteller jemals erlauben, eigene DTDs zu formulieren - Das W3C rät hierzu, man solle die nächst tiefere Version nehmen, wenn man auf ein Modul angewiesen ist.. beim "target" beispielsweise auf XHTML 1.0 transitional auszuweichen...

Ein zweites Problem: Da wie AMDler auch schon gesagt hat, XHTML ein "XML" basierendes HTML ist, müsste streng formal bei XHTML 1.0strict/XHTML 1.1 der mime-type für die Übertragung "application/xhtml+xml" lauten anstatt wie bei HTML "text/html". Damit ist sicher gestellt, dass das Dokument auch wirklich durch den XML parser läuft. Allerdings ist hier wieder ein Problem: Der IE6 unterstützt den mime-type "application/xhtml+xml" in diesem Zusammenhang gar nicht.
Zwar melden die wenigsten Validatoren den falschen mime-type überhaupt als Fehler - aber ganz formal genommen, handelt es sich eben NICHT um valides XHTML 1.1 wenn es als "text/html" ausgeliefert wird...
Es gibt zwar ne Lösung - z.B. analysiert man den Header mit PHP und liefert im Falle des IE den anderen mime-typen aus - aber das ist ja wiederum nur eine "Krücke"...

Also persönlich bin ich der Meinung, dass man momentan mit xhtml 1.0 transitional am besten beraten ist. Und wenn man z.B. für Lernzwecke den Code ganz sauber schreiben will, dann wäre wohl xhtml 1.0 strict die beste Wahl - allerdings mit dem Kompromiss, dass man die Geschichte mit dem mime-type im Hinterkopf haben sollte.

Der grosse Vorteil von xhtml 1.1, die Modularisierung, die lässt sich heute leider noch nicht einsetzen - und ich denke mir, dass erst mit XHTML 2.0 wirklich echt modularisiert wird. Bis das dann aber verabschiedet und v.a. verbreitet ist, dürfte es noch Jahre gehen...

Aber grundsätzlich kann man hier ja verschiedene Meinungen haben... ;D
 
Zuletzt bearbeitet:
...Also persönlich bin ich der Meinung, dass man momentan mit xhtml 1.0 transitional am besten beraten ist...
Das sehe ich nicht so. Man braucht das target-Attribut im Grunde nicht mehr. Wenn man einen externen Link angklickt, wird er eigentlich schon in einem neuen Fenster geöffent. Und falls man sicher gehen will, kann man immer noch eine kleine JS-Anweisung einbauen. So sehe ich das. :)
 
Man braucht das target-Attribut im Grunde nicht mehr. Wenn man einen externen Link angklickt, wird er eigentlich schon in einem neuen Fenster geöffent.
Ähm, das ist jetzt ein Widerspruch in sich. Ein neues Fenster öffnet sich nur mit target="_blank" o.ä.. Ohne das target-Attribut bleibt man im aktuellen Fenster.

Und falls man sicher gehen will, kann man immer noch eine kleine JS-Anweisung einbauen.
Und wenn der Anwender dann JS deaktiviert hat?
 
Ähm, das ist jetzt ein Widerspruch in sich. Ein neues Fenster öffnet sich nur mit target="_blank" o.ä.. Ohne das target-Attribut bleibt man im aktuellen Fenster.
Stimmt, hab das grade mal getest, war Mist was ich da gepostet hab. :-X

Und wenn der Anwender dann JS deaktiviert hat?
Dann hat er eben Pech gehabt. :P
Ne im Ernst: Nur wegen dem target-Attribut brauch ich nicht auf transitional zurückzugehen. Also ich fahre mit dem strict bisher ganz gut. Wenn du das anderst siehst, dann steht dir ja nichts im Wege transitional zu nehmen. Ich benutze das strict auch, um mal ein Zeichen zu setzen (mit dem valid-Button), nämlich, dass das "alte" HTML in neuen Webseiten nichts mehr zu suchen hat.

\²³/
 
Nur wegen dem target-Attribut brauch ich nicht auf transitional zurückzugehen. Also ich fahre mit dem strict bisher ganz gut. [...] Ich benutze das strict auch, um mal ein Zeichen zu setzen (mit dem valid-Button), nämlich, dass das "alte" HTML in neuen Webseiten nichts mehr zu suchen hat.
Exakt! Nur dass ich für meinen Teil auf 1.1 setze. :)

Wenn du das anderst siehst, dann steht dir ja nichts im Wege transitional zu nehmen.
Ich nehm mal an mit dem "du" meinst du nicht mich...?!
 
Yohoi!
Ich sagte ja, dass man da verschiedener Meinung sein kann. Das Argument vom "target" Attribut war ja nicht, dass ich es unbedingt verwenden will - denn spätestens seit google wissen die Leute ja mit "Open in a new tab/window" umzugehen... Ich meinte damit die Modularisierung, die mit XHTML 1.1 möglich wäre, aber noch kein Browser unterstützt.

Bei XHTML 1.0 strict und XHTML 1.1 wird der richtige Mime-Typ vom IE nicht unterstützt. Und solche Seiten mit dem falschen mime-typ "html/text" sind schlicht invalid - auch wenn der w3c Validator das weder überprüft noch bemängelt.

Hier zwei Link:
http://jendryschik.de/wsdev/einfuehrung/xhtml/xhtml#probleme (kurzer Lösungsansatz)
http://www.hixie.ch/advocacy/xhtml (ausführlichere Beurteilung von nem Opera Developper - er ist sogar der Meinung, dass man bei HTML 4.01 bleiben soll)

Und mein Standpunkt ist einfach der, dass man Standards dann einsetzen sollte, wenn sie auch von den Browsern richtig umgesetzt werden. Und das ist halt bei XTHML 1.0 strict und XHTML 1.1 leider nicht der Fall... Und wenn man den falschen Mimetypen verwendet, wird das XHTML document nach wie vor als Tag-Soup verarbeitet, anstatt wie xml geparsed zu werden. Anders herum: Selbst wenn valide xhtml Dokumente "valid" sind, ist es möglich, dass sie nicht wellformed im Sinne von XML sind (dies tritt nämlich erst zu tage, wenn man den richtigen Mime-Typ verwendet).

PS: Mir wäre es auch lieber, wenn der IE besser wäre - de facto unterstützt streng formal der IE überhaupt kein XHTML. Und es wäre schön, wenn alle Browser bereits die Modularisierung von XHTML 1.1 unterstützten - aber es ist ja nicht der Fall. Darum erstelle ich in der Regel Seiten mit XHTML 1.0 strict, ändere dann aber aus o.g. Gründen den Doctype auf 'transitional' ab.
 
Zuletzt bearbeitet:
Und mein Standpunkt ist einfach der, dass man Standards dann einsetzen sollte, wenn sie auch von den Browsern richtig umgesetzt werden. Und das ist halt bei XTHML 1.0 strict und XHTML 1.1 leider nicht der Fall...
Hm, ok. Mein Standpunkt ist, dass mir Wohlgeformtheit wichtiger ist als die Akzeptanz von Browsern. Ich muss dazu sagen, dass ich nur meine eigene Webseite mache und es da durchaus verantworten kann, wenn manche Browser (eigentlich nur der IE) das ein oder andere Problem damit hat. Dann hat dieser IE-User halt Pech gehabt. Mir ist dabei schon klar, dass man so u.U. keinen Designpreis gewinnen kann - das muss jeder für sich selbst entscheiden was man will.

Außerdem verwende ich einen ähnlichen Ansatz wie ihn Jendryschik vorschlägt: Mit einer "PHP-Weiche" kriegt der IE sein text/html und ist damit zufrieden, Mozilla & co bekommen den richtigen MIME-Type.

Dazu gibts auch eine (find ich) interessante Abhandlung: XHTML-Einmaleins.
Und, noch besser - bei schneegans gibts auch einen XML schema validator.
 
Ja - du hast natürlich ganz recht - ist ein Unterschied, ob man eine Intranet oder Internet-Seite macht.
z.B. bin ich momentan an ner Typo3-Sache - und da wäre ich froh, wenn endlich alles mal valides xhtml 1.0 transitional wäre :(

Und danke für die Links - besonders die Schneegans ist super - ich kannte sie zwar - aber der link hilft sicher dem einen oder anderen weiter. Gerade bei XHTML ist ja der w3cValidator nicht das Gelbe vom Ei - ein Schema-validator ist da besser..
 
Zurück
Oben Unten