Array per Browserzeile übergeben

ahykes

Erfahrenes Mitglied
Guten Morgen.

Ich möchte ein Array per Browserzeile übergeben. Per Browserzeile heisst, ich rufe eine Seite mit einem Parameter auf :

HTML:
<form name="form" method="post" action="editdependencies.php?versionid=<?PHP echo $versionid ?>&tmpVI=<?php echo $test ?>&Modus=1 ">

$test wäre in diesem Fall mein Array. Aber leider scheint das nicht zu funktionieren. Also
habe ich schlau wie ich bin :rolleyes: einfach mal im Internet nachgeschlagen und dabei folgende Funktion gefunden, mit der ich aber irgendwie nichts anzufangen weiss :

PHP:
serialize(Arrayname);

Bin ich damit schon auf der richtigen Seite oder Hilft die mir auch nicht bei der Übergabe eines Arrays? ;-] 1000 Fragen auf einmal.... :p
 
Zuletzt bearbeitet:
Das heisst also, dass ich das Array mit implode ich sag jetzt mal "einpacke" und in eine Variable übergebe und mit explode wieder auspacke, richitg? Toll! Das hört sich schonmal sehr gut an, aber wie könnte ich das "Syntax-mäßig" umsetzten ? Ich komme irgendwie mit dem Link nicht klar.:(
 
Naja implode und explode geht aber nur, wenn du ein trennzeichen hast, welches unter gar keinen Umständen in den Daten vorkommen kann.... was auf jeden Fall zu einer eventuellen Schwachstelle führt.
Ansich hilft dir Serialize schon, die Frage ist eher ob da irgendwelche & und ? auftauchen, die dann die Get-Parameter versauen.
Wesentlich eleganter wäre es einfahc, zum Zeitpunkt der Generierung des Formular ne session anzulegen. Diese übergibst du als Parameter, steckst hier noch das Array rein und liest es danach wieder aus. Ist wesentlich Eleganter und weniger anfällig....
 
Deine Argument leuchten mir echt ein. Nur habe ich keine Ahnung was Du mit Session meinst! Kannste mir weiterhelfen?
 
Einfach hier mal nach Session suchen, gibt auch ein Tutorial dafür ansonsten auf der PHP-Seite.

Eine Session ist nix anderes als ne Datei auf dem Server, die PHP selbst verwaltet (auch was das löschen nicht mehr gebruachter angeht).
Jede Session wird durch einen 32Zeichen langen MD5 Schlüssel gekennzeichnet.

Wichtig ist hierbei session_start() was die Session anlegt.
in die Session schreibst du über das Globale Array $_SESSION.
Per session_id() bekommst du den MD5-Schlüssel der Session, der zu übergeben ist.
Der Standardmässig eingestellte "Name" der Session, der per POST / GET übergeben wird ist PHPSESSID.
Steht aber alles in den Dokus.

Vom Ablauf mal Grob:

Dokuemtn1 (was das Form erzeugt und via diesem das Array übergeben will):
PHP:
session_start();

//....

$_SESSION['deionarray'] = $array;
$_SESSION['sonstiges1'] = $was_auch_immer_du_noch_uebergeben_wolltest;

//Jetzt dein Form generieren und als Hidden param die Session ID anhängen:
echo '<form method="POST" action="deinscript.php">;
echo '<input type="hidden" name=\"PHPSESSID" value="'.session_id()'">';
//...

So dann käme in dem Fall deinscript.php, welches die Sessiondaten ausliest
PHP:
session_start();  //Führt die Session fort wenn eine gültige PHPSESSID gesetzt ist

//Dein Array per var_dump() zur Demo ausgeben
var_dump( $_SESSION['deinarray'] );

//....

damit du mal nen groben Abriss hast.
 
Vielen Dank Jungs. Ich werde mich da mal dran setzen, da ich finde, dass man auch mal selber kucken muss wie mans macht. Aber vielen Dank für den Vorschlag. Ich werde das mal mit der Session probieren und mich dann noch mal melden! ;-]
 
Okay Freunde Ich bin ja absolut begeistert. Das klappt alles ganz wunderbar. Eines habe ich aber noch nicht verstanden :

Warum kann ich den Inhalt nur so aus geben :

PHP:
//Dein Array per var_dump() zur Demo ausgeben 
var_dump( $_SESSION['deinarray'] );

und nicht zum Beispiel so :

PHP:
 echo $_SESSION['deinarray'] ;

Das Problem ist nämlich folgendes : Wenn ich nun hingehe und den Inhalt des Arrays an ein anderes 'schreiben' möchte, möchte ich das so machen:

PHP:
$aVersionInformations[] = var_dump( $_SESSION['$aVersionInformations'] );

Das ist aber Quatsch, weil er mir ja dann alles ausgibt. Mache ich es so :

PHP:
$aVersionInformations[] = $_SESSION['$aVersionInformations'];

steht in $aVersionInformations[] nur "ARRAY" drin.. Hat einer eine Ahnung warum das so ist bzw. Wie ich den Inhalt es übergebenen Arrays in "$aVersionInformations[]"schreiben kann. :rolleyes: :suspekt: :eek:

Also nur mal nebenbei, ihr seid echt super und sessions sind auch voll cool :p
 
Nene du kannst schon.
Das war nur ein exemplarisches beispiel. Mit echo kannst du keine Arrays ausgeben (da steht dann nur array). Um solche struktuen auszugeben brauchst du var_dump() oder print_r() (oder meinetwegen auch ne schleife wenns schön macht).

Wenn du das Array in ein anderes kopieren willst mach einfach

$neues_array = $_SESSION['altes_array'];

Du kannst mit $_SESSIOn ganz normal arbyten...

PHP:
 $aVersionInformations[] = $_SESSION['$aVersionInformations'];

ist so oder so quatsch. Zum einen wird durch die einfach ' der Text $a...., also der Name der variable als text zum neuen Arry hinzugefügt.
Zum anderen kommt hinzu, dass der aufruf, wie soll man sagen, rekursiv(?) ist.
Denn du willst zum Array $aVersionInformations ein Element hinzufügen. Dessen inhalt soll ein element aus $_SESION sein, welches aber wieder um an der Stelle $aVersionInformations sein, soll, aber $aVersionInformations ist ja eigentlich dein neues array.... fallst du verstehst wie ich meine.
 
Zurück