amiga-news DEUTSCHE VERSION
.
Links| Forums| Comments| Report news
.
Chat| Polls| Newsticker| Archive
.

amiga-news.de Forum > Programmierung > $_GET geht, $_POST nicht [ - Search - New posts - Register - Login - ]

-1- 2 [ - Post reply - ]

2009-03-02, 23:58 h

ylf
Posts: 4112
User
Ich habe vermutlich ein Konfigproblem auf meinem Rechner.
Zu Testzwecken (Herumspielen mit PHP) habe ich Apache 2.0 und PHP 5.2.6 unter Fedora10 laufen. register_globals ist ON. Die Datenübergabe per GET geht, per method POST nicht. Und ich habe keinen Plan wieso. Bisher war meine Suche nach einem Hinweis zur Lösung ergebnislos.

bye, ylf

[ - Answer - Quote - Direct link - ]

2009-03-05, 21:53 h

Mad_Dog
Posts: 1944
User
@ylf:

Es wäre hilfreich, wenn Du Beispielcode (HTML und PHP) hier posten würdest. Da kann sich schon beim HTML-Formular ein Fehler einschleichen...

in php kommst Du an die Variablen so ran:
php code:
// GET
$foo = $_GET['foo'];

// POST
$foo = $_POST['foo'];

// GET oder POST
$foo = $_REQUEST['foo'];


--
http://www.norman-interactive.com

[ - Answer - Quote - Direct link - ]

2009-03-05, 22:50 h

ylf
Posts: 4112
User
html code:
<HTML>
<HEAD>
	<TITLE>Formular</TITLE>
</HEAD>
<BODY>

<FORM ACTION="ausw.php"	METHOD="GET"	ENCTYPE="text/plain">
	<INPUT TYPE="TEXT" NAME="fromget" SIZE="10">
	<BR>
	<INPUT TYPE="submit" VALUE="Senden!">
	 
	<INPUT TYPE="reset" VALUE="Zurücksetzen">
</FORM>

<FORM ACTION="ausw.php"	METHOD="POST" ENCTYPE="text/plain">
	<INPUT TYPE="TEXT" NAME="frompost" SIZE="10">
	<BR>
	<INPUT TYPE="submit" VALUE="Senden!">
	 
	<INPUT TYPE="reset" VALUE="Zurücksetzen">
</FORM>	
	
</BODY>
</HTML>

php code:
<HTML>
<HEAD>
	<TITLE>Auswertung</TITLE>
</HEAD>
<BODY>

	<?php
	// GET
	$varget = $_GET['fromget'];

	// POST
	$varpost = $_POST['frompost'];

	// GET oder POST
	$reqboth1 = $_REQUEST['fromget'];
	$reqboth2 = $_REQUEST['frompost'];
	
	echo "per get : $varget <BR>";
	echo "per post:  $varpost <BR>";
	echo "get per req : $reqboth1 <BR> ";
	echo "post per req : $reqboth2 <BR> ";
	?>
	
</BODY>
</HTML>



[ - Answer - Quote - Direct link - ]

2009-03-06, 00:01 h

_PAB_
Posts: 3016
User
@ylf:
Ok, und was genau ist die Ausgabe Deines obigen Skripts ?

[ - Answer - Quote - Direct link - ]

2009-03-06, 10:43 h

ylf
Posts: 4112
User
Wenn ich per get sende:
per get : get
per post:
get per req : get
post per req :

per Post:
per get :
per post:
get per req :
post per req :

Womit wir wieder am Anfang wären. :D

[ - Answer - Quote - Direct link - ]

2009-03-06, 16:57 h

malte
Posts: 28
User
@ylf:
Nimm mal das Atribut enctype raus.

Irgendwie scheint sich das mit POST zu beißen, ich habe im Zusammenhang mit Formularen noch nie enctype benutzt (und mir ist daher nicht klar wozu das hier da ist, aber ohne funktioniert dein Beispiel).

[ - Answer - Quote - Direct link - ]

2009-03-06, 18:20 h

Mad_Dog
Posts: 1944
User
Hallo ylf,

Probier mal folgendes:

Zitat:
Original von ylf:
html code:
<HTML>
<HEAD>
	<TITLE>Formular</TITLE>
</HEAD>
<BODY>

<FORM ACTION="ausw.php"	METHOD="GET" accept-charset="ISO-8859-1">
	<INPUT TYPE="TEXT" NAME="fromget" SIZE="10">
	<BR>
	<INPUT TYPE="submit" VALUE="Senden!">
	 
	<INPUT TYPE="reset" VALUE="Zurücksetzen">
</FORM>

<FORM ACTION="ausw.php"	METHOD="POST" accept-charset="ISO-8859-1">
	<INPUT TYPE="TEXT" NAME="frompost" SIZE="10">
	<BR>
	<INPUT TYPE="submit" VALUE="Senden!">
	 
	<INPUT TYPE="reset" VALUE="Zurücksetzen">
</FORM>	
	
</BODY>
</HTML>



--
http://www.norman-interactive.com

[ - Answer - Quote - Direct link - ]

2009-03-06, 22:21 h

ylf
Posts: 4112
User
Zitat:
Original von malte:
@ylf:
Nimm mal das Atribut enctype raus.

Irgendwie scheint sich das mit POST zu beißen, ich habe im Zusammenhang mit Formularen noch nie enctype benutzt (und mir ist daher nicht klar wozu das hier da ist, aber ohne funktioniert dein Beispiel).


So, habe ich mal probiert, ohne enctype funktioniert get wie gehabt, bei post bekomme ich das Attribut Value vom Submit-Button.

Laut meinem schlauen Büchlein gibt man bei einem Formular auch die Art der Verschlüsselung der Daten an. Sollte normal auch kein Problem sein.

[ - Answer - Quote - Direct link - ]

2009-03-06, 22:24 h

ylf
Posts: 4112
User
@Mad_Dog:
Diese Variante funktioniert.

TNX, so kann ich erstmal "arbeiten".

bye, ylf

[ - Answer - Quote - Direct link - ]

2009-03-08, 02:12 h

_PAB_
Posts: 3016
User
@ylf:
Dann nimm' doch jetzt mal enctype wieder rein, damit Du weißt, ob das zum Problem führte bzw. zur Lösung notwendig war und melde hier zurück - ich muss auch in Kürze zahlreiche Formulare überarbeiten, weil bei mir eine UTF-8 Umstellung ansteht.

[ - Answer - Quote - Direct link - ]

2009-03-08, 11:20 h

ylf
Posts: 4112
User
@_PAB_:
mit enctype geht es nicht.
Ich habe dazu folgende Aussage irgentwo im Web gefunden:
Zitat:"... vielleicht bei der Form enctype="text/plain" angegeben? Dann liefert der IE die Daten in einem nicht für den Webserver interpretierbaren Format, alle anderen normal. Was jetzt konform ist, will ich jetzt nicht diskutieren ... " Zitatende

Ich nutze den Firefox 3.0.6 unter Linux ...


[ Dieser Beitrag wurde von ylf am 08.03.2009 um 11:21 Uhr geändert. ]

[ - Answer - Quote - Direct link - ]

2009-03-08, 15:23 h

_PAB_
Posts: 3016
User
@ylf:
Danke für die Info - aber ehrlich gesagt, inzwischen gebe ich einen Dreck auf IE.
Selber schuld, wer den noch nutzt...

[ - Answer - Quote - Direct link - ]

2009-03-08, 19:27 h

Mad_Dog
Posts: 1944
User
Zitat:
Original von _PAB_:
@ylf:
Danke für die Info - aber ehrlich gesagt, inzwischen gebe ich einen Dreck auf IE.
Selber schuld, wer den noch nutzt...


Dieser Browser wird leider sehr häufig benutzt. Ich hatte auch schon Sachen, die mit allen anderen Browsern gingen, nur mit IE nicht.

Übrigens: Der Standardwert für ENCTYPE bei HTML-Formularen ist "application/x-www-form-urlencoded", d.h. diesen Wert hat ENCTYPE, wenn man nichts angibt. Siehe auch http://www.edition-w3.de/TR/1999/REC-html401-19991224/interact/forms.html#adef-enctype



--
http://www.norman-interactive.com

[ - Answer - Quote - Direct link - ]

2009-03-08, 19:38 h

Mad_Dog
Posts: 1944
User
Zitat:
Original von ylf:
@_PAB_:
mit enctype geht es nicht.
Ich habe dazu folgende Aussage irgentwo im Web gefunden:
Zitat:"... vielleicht bei der Form enctype="text/plain" angegeben? Dann liefert der IE die Daten in einem nicht für den Webserver interpretierbaren Format, alle anderen normal. Was jetzt konform ist, will ich jetzt nicht diskutieren ... " Zitatende


Was war denn das für ein Luschenforum?

Zitat:
Ich nutze den Firefox 3.0.6 unter Linux ...

Dann besorg Dir mal das Firefox-Addon "Firebug". Mit den kannst Du Dir unter anderem auch den Datenverkehr zwischen Browser und Server anschauen. Am besten Du probierst mal aus, was passiert, wenn man bei einem Formular als ENCTYPE "text/plain" angibt. Dann wirst Du vielleicht verstehen, warum das in dem Fall keinen Sinn ergibt.

Bei GET hat das "zufällig" funktioniert, weil da ja die Parameter in der URL drin stehen. Bei POST ist das was anderes. Und wenn Du da nen Quatsch für die Codierung angibst...

--
http://www.norman-interactive.com

[ - Answer - Quote - Direct link - ]

2009-03-08, 22:03 h

ylf
Posts: 4112
User
Zitat:
Original von Mad_Dog:
Zitat:
Original von ylf:
@_PAB_:
mit enctype geht es nicht.
Ich habe dazu folgende Aussage irgentwo im Web gefunden:
Zitat:"... vielleicht bei der Form enctype="text/plain" angegeben? Dann liefert der IE die Daten in einem nicht für den Webserver interpretierbaren Format, alle anderen normal. Was jetzt konform ist, will ich jetzt nicht diskutieren ... " Zitatende


Was war denn das für ein Luschenforum?

Der Eintrag war schon ein paar Jahre alt und stammt aus einem selfhtml oder PHP angeschlossenen Forum ...


Zitat:
Zitat:
Ich nutze den Firefox 3.0.6 unter Linux ...

Dann besorg Dir mal das Firefox-Addon "Firebug". Mit den kannst Du Dir unter anderem auch den Datenverkehr zwischen Browser und Server anschauen. Am besten Du probierst mal aus, was passiert, wenn man bei einem Formular als ENCTYPE "text/plain" angibt. Dann wirst Du vielleicht verstehen, warum das in dem Fall keinen Sinn ergibt.

Bei GET hat das "zufällig" funktioniert, weil da ja die Parameter in der URL drin stehen. Bei POST ist das was anderes. Und wenn Du da nen Quatsch für die Codierung angibst...

--
http://www.norman-interactive.com

Soweit ich das überblicke, stammt der ENCTYPE "text/plain" aus CGI Zeiten. PHP kann damit nur nicht um.

Aber ich bin nur Hobbyfrickler, ich muß die ständigen Standardumwälzungen im Web Bereich nicht verstehen. ;)

bye, ylf

[ - Answer - Quote - Direct link - ]

2009-03-09, 22:05 h

Mad_Dog
Posts: 1944
User
Zitat:
Original von ylf:
Aber ich bin nur Hobbyfrickler, ich muß die ständigen Standardumwälzungen im Web Bereich nicht verstehen. ;)


Es gibt die Hobbyfrickler und die "ich verstehe zwar nicht, was es bedeutet, aber ich schreib es mal so hin, weil der andere das auch so gemacht hat - mal sehen, was passiert" - Programmierer. Du selbst entscheidest, zu welcher Kategorie Du gehören möchtest. ;)

Übrigens kann ich Deine nächsten Fragen schon voraussehen:

"Warum werden Umlaute falsch dargestellt?"
"Warum spuckt mein Datenbankserver mit bei bestimmten Eingaben in das Formular Fehlermeldungen aus?"

Ich denke folgendes Buch wäre gut als Einstiegslektüre für Dich geeignet:

http://www.amazon.de/PHP-MySQL-Kompendium-Sonderausgabe-CD-ROM/dp/3827242991/ref=sr_1_21?ie=UTF8&s=books&qid=1236632536&sr=8-21

Bild: http://ecx.images-amazon.com/images/I/51C8LV1t5AL._SL500_AA240_.jpg

--
http://www.norman-interactive.com

[ - Answer - Quote - Direct link - ]

2009-03-10, 08:43 h

Thore
Posts: 2266
User
Das ENCTYPE gibt lediglich ein MIME-Encoding an. Da es in dieser Ebene keine Datei-Erkennung gibt, muss der "Dateityp" eben so angegeben werden.
Für reinen ASCII Text wäre das "text/plain". Ein Form hat standardmäßig "application/x-www-form-urlencoded", und in Kombination mit dem Input-Element und type="file" wird der Content-Type mit "multipart/form-data" angegeben.

Möchtest Du gewisse Ausgaben auf dem Bildschirm wiedergeben, empfehl ich Dir auch, die "Kleiner"-Zeichen durch HTML-Code zu ersetzen, und SSI zu deaktivieren ;) Wird von Anfängern oft übersehen...

[ - Answer - Quote - Direct link - ]

2009-03-10, 12:03 h

nG
Posts: 36
User
@ylf:

Obwohl das Problem jetzt wohl gelöst ist, noch ein Nachsatz.

Mach bitte, bitte register_globals aus. Du benutzt ja schon den richtigen Weg, um an die Eingaben zu kommen, damit ist register_globals nur eine Gefahrenquelle. Selbst wenn du den Server nur lokal laufen läßt, ist das etwas, dass man a) später leicht vergisst, und b) nur zu schlechten Gewohnheiten führt. Glücklicherweise wird PHP6 diese furchtbare Option gar nicht mehr anbieten.

[ - Answer - Quote - Direct link - ]

2009-03-10, 14:49 h

Mad_Dog
Posts: 1944
User
Zitat:
Original von Thore:
Das ENCTYPE gibt lediglich ein MIME-Encoding an. Da es in dieser Ebene keine Datei-Erkennung gibt, muss der "Dateityp" eben so angegeben werden.
Für reinen ASCII Text wäre das "text/plain". Ein Form hat standardmäßig "application/x-www-form-urlencoded", und in Kombination mit dem Input-Element und type="file" wird der Content-Type mit "multipart/form-data" angegeben.


text/plain ist eigentlich nur für den Fall sinnvoll, wenn man ein mailto-Form macht (action="mailto:foo@bar.org"). Damit kann man die interne Mail-Funktion des Browsers benutzten - natürlich nur, wenn der verwendete Browser das unterstützt.

Wenn man als ENCTYPE text/plain angibt, aber die POST-Daten in einem php-Skript weiter verarbeiten möchte, gibt's natürlich Probleme, weil der Webserver dann nicht weiß, was er mit diesem MIME-Type anfangen soll. Mit so Aussagen wie "gibt nur den MIME-Type an" wäre ich vorsichtig, denn der MIME-Type ist nicht nur zur Zierde da...

Der Vollständigkeit halber hier noch der Link zur entsprechenden SelfHTML-Seite:

http://de.selfhtml.org/html/referenz/attribute.htm#form

Zitat:
Möchtest Du gewisse Ausgaben auf dem Bildschirm wiedergeben, empfehl ich Dir auch, die "Kleiner"-Zeichen durch HTML-Code zu ersetzen, und SSI zu deaktivieren ;) Wird von Anfängern oft übersehen...

Man kann auch uft-8 verwenden. Und ab dem Punkt sind wir beim Herrlichen Thema "Zeichencodierung" angelangt...

--
http://www.norman-interactive.com

[ - Answer - Quote - Direct link - ]

2009-03-10, 15:34 h

Thore
Posts: 2266
User
Zitat:
Mit so Aussagen wie "gibt nur den MIME-Type an" wäre ich vorsichtig, denn der MIME-Type ist nicht nur zur Zierde da...
Ich wollte damit nicht zum Ausdruck bringen, daß es irrelevant wäre, ohne MIME Typ weiß das Programm nicht, wie es mit den Daten umgehen soll. Wird z.B. ein Bild (image/gif) übertragen aber als text/plain deklariert, würde das Bild als Text angezeigt werden...

Zitat:
Man kann auch uft-8 verwenden. Und ab dem Punkt sind wir beim Herrlichen Thema "Zeichencodierung" angelangt...
Nur daß das Kleiner-Zeichen im utf-8 auch ein Kleiner-Zeichen ist ;)


[ - Answer - Quote - Direct link - ]

2009-03-10, 15:58 h

Mad_Dog
Posts: 1944
User
Zitat:
Original von Thore:

Zitat:
Man kann auch uft-8 verwenden. Und ab dem Punkt sind wir beim Herrlichen Thema "Zeichencodierung" angelangt...
Nur daß das Kleiner-Zeichen im utf-8 auch ein Kleiner-Zeichen ist ;)

Aber eben auch nicht
html code:
<


Soll heißen: Wenn man utf-8 verwendet, kann man auch auf die sonst üblichen Escape-Sequenzen verzichten. Das gilt auch für andere Zeichencodierungen, sofern man in der HTML-Datei explizit angibt, um welche Codierung es sich handelt. Natürlich muss die Datei dann auch in der angegebenen Zeichencodierung vorliegen, sonst gibt's wieder Käse. ;)



--
http://www.norman-interactive.com

[ - Answer - Quote - Direct link - ]

2009-03-10, 16:02 h

Thore
Posts: 2266
User
Der HTML code ist kein UTF-8 Code, sondern eine HTML-Umschrift, die mit jedem Codepage verwendbar ist =)

[ - Answer - Quote - Direct link - ]

2009-03-10, 16:12 h

Mad_Dog
Posts: 1944
User
Zitat:
Original von Thore:
Der HTML code ist kein UTF-8 Code, sondern eine HTML-Umschrift, die mit jedem Codepage verwendbar ist =)


Hä? Ich glaube, wir reden aneinander vorbei. Was ich meinte: Man kann im HTML-Code Umlaute und andere Sonderzeichen durchaus "einfach so" ohne die üblichen HTML-Escape-Sequenzen wie z.B.
html code:
ü
ß
<


und so weiter reinschreiben (also ü ß <), vorausgesetzt man gibt explizit an, in welcher Zeichencodierung die HTML-Datei (also der Quellcode) abgespeichert ist. Also z.B.
html code:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>


Kanntest Du wohl noch nicht, was? ;)


--
http://www.norman-interactive.com

[ - Answer - Quote - Direct link - ]

2009-03-10, 16:14 h

Thore
Posts: 2266
User
Doch kenne ich, hab auch beruflich damit zu tun, nur ist ein Kleiner-Zeichen auch in UTF-8 ein Kleiner-Zeichen, was durchaus dazu genutzt werden kann, HTML Code in Foren einzubasteln, wenn man nicht aufpasst.

[ - Answer - Quote - Direct link - ]

2009-03-10, 16:37 h

ylf
Posts: 4112
User
Zitat:
Original von Mad_Dog:
"Warum werden Umlaute falsch dargestellt?"

Glaube ich nicht, ich habe schon vor Jahren die Jungs bei Giga (/genau, diese pseudo Computer Sendung für Teenies) angepfiffen, weil sie die HTML-Codierung von Umlauten nicht berücksichtigten. :D

Zitat:
"Warum spuckt mein Datenbankserver mit bei bestimmten Eingaben in das Formular Fehlermeldungen aus?"
Ist bisher nicht geplant. 8)

[ - Answer - Quote - Direct link - ]

2009-03-10, 16:40 h

ylf
Posts: 4112
User
Zitat:
Original von nG:
@ylf:

Obwohl das Problem jetzt wohl gelöst ist, noch ein Nachsatz.

Mach bitte, bitte register_globals aus. Du benutzt ja schon den richtigen Weg, um an die Eingaben zu kommen, damit ist register_globals nur eine Gefahrenquelle. Selbst wenn du den Server nur lokal laufen läßt, ist das etwas, dass man a) später leicht vergisst, und b) nur zu schlechten Gewohnheiten führt. Glücklicherweise wird PHP6 diese furchtbare Option gar nicht mehr anbieten.


Werde ich machen. Der PHP Server läuft bei mir tatsächlich nur lokal und dient lediglich der grundsätzlichen Entwicklungen einfacher Skripte.

[ - Answer - Quote - Direct link - ]

2009-03-10, 17:28 h

Mad_Dog
Posts: 1944
User
Zitat:
Original von ylf:
Zitat:
Original von Mad_Dog:
"Warum werden Umlaute falsch dargestellt?"

Glaube ich nicht, ich habe schon vor Jahren die Jungs bei Giga (/genau, diese pseudo Computer Sendung für Teenies) angepfiffen, weil sie die HTML-Codierung von Umlauten nicht berücksichtigten. :D

Du wirst Dich noch wundern, wenn Du mit verschiedenen Zeichencodierungen umgehst... da flucht selbst der Profi dann und wann mal:

Bild: http://www.technovelty.de/tn_images/t4_scheiss-encoding.jpg

Das gilt übrigens auch für Deine Formulare:

Wenn Du z.B. im HTML-Dokument mit dem Formular wie ich oben geschrieben habe, utf-8 angibst, dann ist die Zeichencodierung im Formular normalerweise auch utf-8, also bekommt Dein Server das in der Codierung geliefert. Und wenn Du dann nicht die nette php-Funktion utf8_decode() anwendest...

..aber laß Dich mal überraschen ;)




--
http://www.norman-interactive.com

[ - Answer - Quote - Direct link - ]

2009-03-10, 18:27 h

Mad_Dog
Posts: 1944
User
Zitat:
Original von Thore:
Doch kenne ich, hab auch beruflich damit zu tun, nur ist ein Kleiner-Zeichen auch in UTF-8 ein Kleiner-Zeichen, was durchaus dazu genutzt werden kann, HTML Code in Foren einzubasteln, wenn man nicht aufpasst.


Du meinst, so wie ich damals, als ich Deinem Gästebuch JavaScript-Code untergejubelt habe. Das war Dir wohl eine Lehre. 8)

--
http://www.norman-interactive.com

[ Dieser Beitrag wurde von Mad_Dog am 10.03.2009 um 18:28 Uhr geändert. ]

[ - Answer - Quote - Direct link - ]

2009-03-10, 19:50 h

Thore
Posts: 2266
User
Zitat:
Du meinst, so wie ich damals, als ich Deinem Gästebuch JavaScript-Code untergejubelt habe. Das war Dir wohl eine Lehre. 8)
Ich sag nur "Quaak".

Aber zumindest reden wir nun nicht mehr aneinander vorbei ;)

UTF-8 ist aus Kompatibilitätsgründen zum Unicode und der dynamischen Zeichenlänge empfehlenswert. Sofern jemand OWB für OS3.5 portiert, dürte jedes Betriebssystem zumindest Webtechnisch damit umgehen können ;)

[ - Answer - Quote - Direct link - ]

2009-03-10, 20:15 h

Mad_Dog
Posts: 1944
User
Zitat:
Original von Thore:
Ich sag nur "Quaak".


Das Fröschlein war doch herzallerliebst. Ich hätte auch ne fließe Endlosrekursion oder eine Weiterleitung zu irgend einer schmuddel-Seite machen können. :smokin:

--
http://www.norman-interactive.com

[ - Answer - Quote - Direct link - ]


-1- 2 [ - Post reply - ]


amiga-news.de Forum > Programmierung > $_GET geht, $_POST nicht [ - Search - New posts - Register - Login - ]


.
Masthead | Privacy policy | Netiquette | Advertising | Contact
Copyright © 1998-2024 by amiga-news.de - all rights reserved.
.