PHP - Werte von Variablen übergeben

Hola,

hab da ein kleines Problem =)

ich habe hier ein Formular, in welchem Variablen deklariert sind. Sobald ich auf ok klicke rufe ich eine Weiterleitung wie folgt auf:

Code:
echo "<meta http-equiv='refresh' content='0; url=index.php?action=blubb'>";

Auf der darauf folgend erscheinenden Seite sollen die Variablen aus dem vorhergehenden Formular weiterverarbeitet werden. Das Problem ist imho, daß die Variablen über die Meta-Anweisung nicht an die zweite Seite weitergegeben werden können.

Habe es schon mit der $_POST-Anweisung versucht, aber das klappt nicht.
Die zweite Seite will ich aber auch nicht Include, weil dann alles falsch dargestellt wird.

Eine weitere Möglichkeit wäre, es über die Header-Anweisung weiterzuleiten. Da hab ich allerdings das altbekannte Problem mit dem Byte vor der Anweisung und der Fehlermeldung "Cannot modify header information", wo ich mir die Zähne ausbeiße.

Weiß jemand Rat?

Vielleicht hat ja jemand eine alternative Weiterleitung in PHP zu den oben genannten Möglichkeiten.

So long...

Greetz Evil
 
an der meta anweisung liegt das nicht. du hast wohl die variable falsch eingelesen.
du schreibst dass du $_POST verwendet hast. da du die variable aber in der url mitgibst, musst du $_GET['action'] verwenden.
 
Wenn ich im Zieldokument schreibe:
Code:
echo "Dateigröße: $_GET['dateigroesse'] Byte";
kommt ein parse error. Hab ich mich da irgendwo verschrieben?



Allerdings wenn ich das insofern anders schreibe:
Code:
$dateigroesse=$_GET['dateigroesse'];
und anschließend die Variable aufrufe:
Code:
echo "Dateigröße: $dateigroesse Byte";
funktioniert es auch nicht. Oder muß ich die GET-Anweisung in dem Quell-Dokument einfügen, da der Wert der Variable _mitgegeben_ wird ?
 
wenn du ne ältere php version hast, kann sein das er das $_GET nicht kennt.
also versuchs mal so
PHP:
echo "Dateigröße: ".$HTTP_GET_VARS['dateigroesse']." Byte";
und guck mal ob du nicht irgend nen rechtschreibfehler im variablenname (im quelldokument) hast, so dass er die variable nicht findet.
 
Ne, funktioniert leider auch nicht. Ich hab jetzt in der Quelldatei einfach mal eine Variable x mit dem Wert 1 deklariert und folgendes ausprobiert:

Quelldatei (funktioniert):
Code:
$x = 1;
echo "$x";

Zieldatei (funktioniert nicht, ohne Fehlermeldung):
Code:
$x=$_GET['x'];
echo "$x";

oder auch in der Zieldatei (funktioniert nicht, mit Fehlermeldung):
Code:
echo "$_GET['x']";

Wenn ich das GET in der Zieldatei in die zweite Zeile mit einbaue, erhalte ich einen Fehler. Ich hab das Gefühl, als ob die Variablen einfach nicht mit übergeben bzw. gespeichert wird.

Btw: Ich hab schon eine etwas neuere PHP-Version, allerdings kennt er die Funktion foreach nicht (Mackz kann davon ein Liedchen singen *zwinker*)
 
Also Variableneingang kann wie folgt dargestellt werden:

echo("ich bin {$_GET["name"]} und bin {$_POST["alter"]} Jahre alt und wohne in {$_REQUEST["alter"]}!");

Hier wird der "name" aus der URL genommen und das alter aus POST. Woher er das alter holt ist egal, wobei die reihenfolge, wie ich festegestellt habe, GET vor POST heitß. Post ist also das, was letzten endes gilt.

somit sollte es

echo("Dateigröße: {$_GET["dateigroesse"]} Byte");

heißen. Hier machen auch die " innerhalb des befehls nicht, weil es von PHP durch die {} eh als source gewertet wird...

bgbö ;)
 
was gibt dir (in deinem code)?

PHP:
<?php

error_reporting(E_ALL);
print_r($_GET);
print_r($_POST);

?>
 
Jetzt hab ich das Notebook gerade eingepackt, werds aber ausprobieren, sobald ich wieder auf der Arbeit bin.

Bin mal gespannt, ob das an den geschweiften Klammern lag.

Dank Euch schonmal für die Tipps ;-]
 
ein re, ein re und keiner hat ne Flinte ;-]

sorry boppy, das funktioniert auch nicht wirklich.


@soox, ich bekomme folgende Ausgaben:


print_r($_POST);
Ausgabe: Array()

print_r($_GET);
Ausgabe: Array ( [action] => dateiname )
 
Code:
print_r($_POST['variablenname']);

Ausgabe: Wert der Variable

Mit count($_POST) kannst du auch die Größe des Arrays ermitteln. $_GET bzw. $_POST Variablen sind nur gesetzt wenn du diese per Formular oder Link an die empfangende Datei schickst, manuell setzen bringt nix ;)

Und das foreach nicht geht kann ich mir auch kaum vorstellen X(
 
@ Zwirni:
Evils PHP-Version ist vom Teufel besessen ;) und ich fürchte, da helfen selbst die besten Exorzisten nichts :D
 
kannst du eventuell mal deinen form-tag posten ? ich würd gern mal sehen was du bei action eingetragen hast (nur um alle fehler quellen aus zu schließen)

mfg

püppi
 
Also hier mal der Code-Ausschnitt von der ersten Seite inklusive Form-Tag:
Code:
<font size="2"><b>Datei-Upload:</b></font><br><br>
<font size="2">Datei in die Datenbank aufnehmen:</font><br>
<form action="index.php?action=seite1" method="post" enctype="multipart/form-data">
<input type="file" name="datei">
<input type="submit" name="submit" value="Submit">

<?php

    $pfad = "bitmaps/";    // Pfad

    if (isset($_FILES['datei']) && $_FILES['datei']['size'] > 0 ) {

      $maxgroesse = 2000000;
      $tempname = $_FILES['datei']['tmp_name'];
      $dateiname = $_FILES['datei']['name'];
      $dateigroesse = $_FILES['datei']['size'];
      $dateityp = GetImageSize($tempname);

        if ($dateityp[2] == 1 || $dateityp[2] == 2) {    // GIF oder JPEG

           if ($dateigroesse <= $maxgroesse) {    // Datei zu groß?

              if (move_uploaded_file($tempname, $pfad . $dateiname)) {
//                      Dateigröße: <b>$dateigroesse</b> Byte,
//                      Bildname: <b>$dateiname</b><br></p>";

                echo "<meta http-equiv='refresh' content='0; url=index.php?action=seite2'>";

              } else {

              ...
Wenn ich die Kommentarzeilen dort oben entferne, funktioniert es. Allerdings soll das eben in der darauf folgenden Seite angezeigt werden.


Hier der Code von der zweiten Seite, welche über die Metaweiterleitung aufgerufen wird:
Code:
<?php

// $dateigroesse = $_GET['dateigroesse'];
echo "<center><font size='2'>Datei wurde erfolgreich hochgeladen!</font></center><br>";
// echo "<center><font size='2'>Dateigröße: {$_GET["dateigroesse"]} Byte</font></center><br>";
// echo "<center><font size='2'>Dateiname: $_POST['dateiname']</font></center>";
echo "<center><font size='2'>Klicken Sie <a href='index.php?action=bitmaps'><b>hier</b></a>, um zum Formular zurückzukehren</font></center>";

?>
In den Zeilen, welche als Kommentar gesetzt sind, habe ich ein wenig rumprobiert.


Btw: Wenn das net bald klappt, opfer ich ein Huhn auf meinem Notebook und zeichne mit deren Blut ein Pentagramm auf die Frontseite. Soviel dann zur Teufelsaustreibung *g
 
Über deine Meta Refresh Anweisung wird nur eine Variable weitergegeben, und zwar $action, die anderen Variablen verfallen alle.

Entweder hängst du deine Variablen an die Anweisung an, oder versuchst dein Glück mit Sessions.

Der Hesse

EDIT

Mein Vorschlag:

Im ersten Script dieses ändern

echo "<meta http-equiv='refresh' content='0; url=index.php?action=seite2'>";

in

Code:
echo "<meta http-equiv='refresh' content='0; url=index.php?action=seite2&dateigroesse=$dateigroesse&dateiname=$dateiname'>";

in der zweiten Seite dann folgendes

// echo "<center><font size='2'>Dateigröße: {$_GET["dateigroesse"]} Byte</font></center><br>";
// echo "<center><font size='2'>Dateiname: $_POST['dateiname']</font></center>";

in

Code:
echo "<center><font size='2'>Dateigröße: $_GET["dateigroesse"] Byte</font></center><br>";
echo "<center><font size='2'>Dateiname: $_GET["dateiname"]</font></center>";
 
Super danke, funktioniert ;-]

Ich mußte bei der zweiten Seite aber folgendes ändern:

Code:
$dateigroesse=$_GET['dateigroesse'];
$dateiname=$_GET['dateiname'];

echo "<center><font size='2'>Dateigröße: $dateigroesse Byte</font></center><br>";
echo "<center><font size='2'>Dateiname: $dateiname</font></center>";

Wenn ich es wie in Deinem Beispiel mache, bekomme ich einen Parse-Error ... warum auch immer, eigentlich sollte er auch das akzeptieren.

Danke fein für eure Hilfe =)
 
Zurück
Oben