• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[gelöst] Problem Parameterübergabe GET POST bei PHP-Skripten

Flo79

Newbie
Hallo, offensichtlich werden bei mir keine GET- oder POST-Variablen/Werte an die PHP-Skripte weitergegeben.
EIn PHP-Skript für sich läuft, doch es erhält keine Variablen die per GET oder POST übergeben werden.

ich habe bereits $variable = $HTTP_GET_VARS["name"];
und $variable = $_GET["name"]; verwendet.

Das php-skript wird mit test.php?name=testinhalt123 aufgerufen,
aber $variable bleibt leer. Entsprechendes geschieht(auch nicht) bei POST.
:(

ich Poste mal meine PHP-Info-daten hier :

http://s3lt3n.com/phptest/testphp.html
Wohl gemerkt, das ist die HTML-Kopie einer bei mir lokal
erstellten php-info:
Benutzername = free

Kann mir da jemand einen Tip geben?
Ganz unten in der Info ist der Abschnit VARIABLES,
der ist bei meiner lokalen infodatei, also da, wo*s mit
den GET und POST nicht klappt viel kürzer, als auf
dem Server, wo meine Homepage läuft (im internet).

Aber ich wüsste nicht, wo ich diese Dinge einrichten könnte.
Also mein Apache läuft, das public-html-Verz. wird gelistet,
bei localhost erscheint "It works!" und mit den Rechten
stimmt auch alles im Public-html-Verzeichnis.


Mein System:
OpenSuSE 10.2, Grub-Bootloader,
(Windows XP Prof.),
AMD Athlon 3000+ (64bit),
512MB RAM, 250GB+120GB IDE HDs,
DVD-Brenner, 3,5" Floppydrive
Board: MSI K8T Neo2,
Sound: Creative 5.1
Haupauge-TV-Tuner BT848, analog,
Geforce MX400 mit 128MB



:roll:
 

beleg

Member
Vielleicht liegt der Fehler aber auch an einer anderen Stelle im Script. Du könntest mal die Fehlerausgabe einschalten, dann siehst Du eventuell eher, wo es hakt.
 

ginka

Member
Flo79 schrieb:
Ganz unten in der Info ist der Abschnit VARIABLES,
der ist bei meiner lokalen infodatei, also da, wo*s mit
den GET und POST nicht klappt viel kürzer, als auf
dem Server, wo meine Homepage läuft (im internet).

Dort fehlen bei dir die Einträge der Umgebungsvariablen $_ENV, und das ist deswegen so, weil in deiner php.ini die Einstellung

Code:
variables_order="GPCS"

gesetzt ist. Mit dem Wert "EGPCS" würde in diesem Abschnitt auch $_ENV angezeigt werden. Das sollte aber eigentlich keine Rolle spielen.

Ruf doch dein phpinfo-Skript mal mit GET-Parametern auf, also z.B.

Code:
http://localhost/phpinfo.php?test=123

und schau dir die Ausgabe unter "PHP Variables" nochmal an. Dort müsste es jetzt eine Zeile mit dem Inhalt

Code:
_GET["test"]	123

geben. Wenn das der Fall ist, sind eindeutig GET-Daten vorhanden. Dann musst du den Fehler in deinem nicht funktionierenden Skript suchen. :roll:

Viele Grüße
ginka
 
OP
F

Flo79

Newbie
Habe das "E" in der php.ini zu den anderen Buchstaben hinzugefügt,
diese befand sich unter etc/php5/apache2/php.ini

Ich hoffe, das ist die richtige.
Es hat sich nichts geändert. (Nach Neustart)

Wie kann ich die Fehlerausgabe bei PHP den einschalten ?
Welchen Befehl muß ich da im Skript einfügen?

hier mein skript zum Testen:


Code:
<?php

echo <<<EOM
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Strict//EN"
       "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Vartest</title>
</head>
<body>
EOM;

echo "<h2>Variablen-Test</h2>\n";

$variabley = trim($HTTP_POST_VARS["variable1"]); // empfangene katliste
if ($variabley == "") echo "Die Variable variable1 ist leer.<br>\n";
else echo "Die Variable1 traegt den Wert \"".$variabley."\" in sich.<br>\n";

echo "<h2>Wert senden:</h2>\n";
echo "<form action=\"variablentest.php\" method=\"post\">\n";
echo "Wert eingeben: <input type=\"text\" name=\"variablex\"></input><br>\n";
echo "<input type=\"submit\" value=\" - senden mit POST - \"><br>\n";
echo "</form>\n";

echo "--------------------<br>\n";

echo "<a href=\"variablentext.php?variable2=dasistnichtlustig\"> GET- Test variable2 (variablentext.php?variable2=dasistnichtlustig) </a><br>\n";

$variabley = trim($HTTP_GET_VARS["variable2"]); // empfangene katliste
if ($variabley == "") echo "Die Variable variable2 ist leer.<br>\n";
else echo "Die Variable2 traegt den Wert \"".$variabley."\" in sich.<br>\n";


echo "------------------<br>\n"
   	$datum = date("d.m.Y");          // Datum
   	$uhrzeit = date("H.i.s");        // Uhrzeit
   	$ip = $_SERVER['REMOTE_ADDR'];   // Internet Protocol - Adresse
echo "Datum = $datum, <br>Uhrzeit = $uhrzeit, <br>IP = $ip; <br>\n";

?>


</body></html>
 

ginka

Member
Wie ich schon sagte, ob die Umgebungsvariablen gehasht werden oder nicht sollte für dein Problem keine Rolle spielen. Das war nur als Erklärung gedacht, weil du die unterschiedliche Ausgabe deiner lokalen phpinfo mit der auf deinem Webspace angesprochen hattest.

Hast du das folgende aus meinem vorigen Posting auch ausprobiert...?

ginka schrieb:
Ruf doch dein phpinfo-Skript mal mit GET-Parametern auf, also z.B.

Code:
http://localhost/phpinfo.php?test=123

und schau dir die Ausgabe unter "PHP Variables" nochmal an. Dort müsste es jetzt eine Zeile mit dem Inhalt

Code:
_GET["test"]	123

geben. Wenn das der Fall ist, sind eindeutig GET-Daten vorhanden. Dann musst du den Fehler in deinem nicht funktionierenden Skript suchen. :roll:

Viele Grüße
ginka
 

ginka

Member
Flo79 schrieb:
Wie kann ich die Fehlerausgabe bei PHP den einschalten ?
Welchen Befehl muß ich da im Skript einfügen?

Füge ganz am Anfang in deinem Skript folgendes ein:

Code:
ini_set('display_errors', 1);
error_reporting(E_ALL);

Dann werden etwaige Fehlermeldungen dieses Skriptes am Bildschirm ausgegeben.

Dann siehst du z.B., dass in Zeile 34 deines Skriptes ist ein Syntax-Fehler ist. Da fehlt der Strichpunkt am Ende der ersten zitierten Zeile:
Flo79 schrieb:
Code:
echo "------------------<br>\n"
      $datum = date("d.m.Y");          // Datum
      $uhrzeit = date("H.i.s");        // Uhrzeit
      $ip = $_SERVER['REMOTE_ADDR'];   // Internet Protocol - Adresse

Dein Skript funktioniert übrigens deswegen nicht, weil dein input-Feld den Namen "variablex" hat, du aber im Skript versuchst, die POST-Variable mit dem Index "variable1" auszugeben. Die kann es hier nicht geben. Ändere doch mal die Zeile

Code:
$variabley = trim($HTTP_POST_VARS["variable1"]); // empfangene katliste

ab in

Code:
$variabley = trim($HTTP_POST_VARS["variablex"]); // empfangene katliste

dann sollte es gehen. Unabhängig davon sind $HTTP_POST_VARS und $HTTP_GET_VARS veraltet, nimm stattdessen besser $_POST bzw. $_GET (vgl. http://www.php.net/manual/de/reserved.variables.php#reserved.variables.get

Viele Grüße
ginka
 
OP
F

Flo79

Newbie
:p

Ihr hattet recht damit, daß es bei /ab PHP 5.0 wirklich nur mehr
mit $_GET und $_POST funktioniert, die alte Schreibweise mit
$HTTP_GET_VARS und $HTTP_POST_VARS schein nicht mehr
zu funktionieren.

Auch $HTTP_SERVER_VARS ist nun $_SERVER. (aber das schon länger, oder?)

Mit info.php?testvariable=x123kghj etc. funktioniert,
die Variable wir dann agezeigt.

Vielen Dank.
und die Sache mit
Code:
ini_set('display_errors', 1);
error_reporting(E_ALL);
ist auch ganz hilfreich.

Danke an alle Beteiligten. :)
 

ginka

Member
Schön. 8)

Würdest du dann bitte noch den Titel deines ersten Postings als "gelöst" markieren, sodass es auch im Forumslisting erscheint? Am aussagekräftigsten ist es m.E., wenn du den Original-Titel stehen lässt und ein "gelöst" voranstellst.

Danke & viele Grüße
ginka
 
Oben