PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : gleiches array in mehreren dateien verwenden


malloc
05.10.2005, 22:54:50
hallo,

kann mir bitte jemand sagen, wie ich ein und dasselbe array in mehreren dateien verwenden kann?

zB

//berechnung.php
hier wird ein teil der von $_POST übergebenen daten in ein array namens mein_array gespeichert.

//ergebnis.php
hier will ich das array aus der datei berechnung.php verwenden um noch berechnungen zu machen

//functions.php
hier liegen meine ganzen funktionen, die ich von berechnung.php aus aufrufe. hier habe ich mein_array global gemacht und hier habe ich keine probleme, dass das array nicht bekannt ist.

wie kann ich jetzt am einfachsten mein_array, das in berechnung.php befüllt worden ist, in der datei ergebnis.php verwenden?

ich brauche bitte dringend einen rat!

danke

Stevie B.
05.10.2005, 23:05:53
Einfach mit der Form übergeben:
<input type="hidden" name="mein_array" value="<?= $mein_array; ?>">

und dann in der ergebnis.php auslesen:
$mein_array = $_POST['mein_array'];
...

Gruß,
Stevie B.

malloc
05.10.2005, 23:33:14
hallo,

ich habe das nun versucht.

wenn ich in der ergebins.php jezt

<pre>
<?php print_r($mein_array); ?>
</pre>

schreibe, dann muss doch das array ausgegeben werden, oder?

Die Ausgabe beschränkt sich auf Array.

Noch ein Hinweis: ich möchte hier ein mehrdimensionales Array übergeben.

Ich bin wirklich für jede Hilfe sehr dankbar, denn ich probiere schon seit Stunden und das will einfach nicht klappen ....... :-((

Stevie B.
06.10.2005, 00:08:43
Wenn das ein mehrdimensionales Array ist, ist die Ausgabe auch logisch. Du musst schon soviele Arrays auslesen, wie dort enthalten sind.
Wenn $array = array(array(),array()) ist, dann musst Du so auslesen:

foreach ($array as $dArray) {
print_r($dArray);
}

Gruß,
Stevie B.

meikel (†)
06.10.2005, 00:19:37
kann mir bitte jemand sagen, wie ich ein und dasselbe array in mehreren dateien verwenden kann?
Du suchst Session:
http://de3.php.net/session

29. Sessions
http://www.php-faq.de/ch/ch-version4_session.html (Beschreibung ist älter aber nicht falsch)

Zusatztip:
schalte register_globals unbedingt aus und verwende das $_SESSION Array.

index.php
<?php
session_start();

$arr = array(1,2,3,4,5);
$seite2 = 'index2.php';

$_SESSION['speicher'] = $arr;

printf('<html>
<body>
<a href="%s?%s">Klick</a>
</body>
</html>',
$seite2,
SID
);
?>

index2.php
<?php
session_start();
$arr = $_SESSION['speicher'];
print '<html>
<body>';
print_r($arr);
print '
</body>
</html>';
?>
Tippfehler nicht ausgeschlossen...

malloc
06.10.2005, 00:34:44
hallo,

meine Ausgabe schaut so aus:

Array
(
[mein_array] => Array
[losmatrix] => Dmatrix los!
)


das array von mein_array nehme ich gar nicht mit!

<input type="hidden" name="mein_array" value="<?= $mein_array; ?>">
gibts nicht noch ne möglichkeit hier was zu ändern? hab schon statt $mein_array $mein_array[] probiert, aber das funkt auch nicht.

ich kenn mich mit sessions nicht aus.

danke

meikel (†)
06.10.2005, 00:48:22
ich kenn mich mit sessions nicht aus.
Das kann man lernen... Besser jetzt als nie.

Arrays kannst Du sonst nur sehr umständlich von Seite 1 an Seite 2 weiterreichen, weil HTML Formulare nur skalare Variablen (name -> wert) gestatten. Du müßtest also auf Seite 1 das Array in Variablen zerlegen, in das Formular printen und auf Seite 2... aus den Variablen wieder ein Array bilden. Das geht möglicherweise nur mit POST, da bei GET die Länge des URL begrenzt ist.

Du könntest es auch mit serialize() probieren, wenn Du die Userkommentare im Handbuch beachtest, da es bei dieser Funktion abhängig von der Arrayvariablen bisweilen Überraschungen geben kann.

Das alles kannst Du Dir ersparen, wenn Du den Kram in einer Session ablegst, denn genau für solche Zwecke wurden sie ja erfunden:
Frage: wie kann Seite 2 auf Variablen von Seite 1 zugreifen?
Antwort: Session.

malloc
06.10.2005, 01:00:48
hallo,

danke trotzdem für den session-tipp!

ich habe jetzt 500 codezeilen geschrieben, die zeit drängt, ich bin immer noch nicht fertig ...... ich kann jetzt nicht wieder von vorne beginnen.

ich weiss nicht ...

meikel (†)
06.10.2005, 02:45:26
danke trotzdem für den session-tipp!
Wieso trotzdem?

ich habe jetzt 500 codezeilen geschrieben, die zeit drängt, ich bin immer noch nicht fertig ......
Du wirst deshalb nicht fertig, weil Dein Konzept falsch ist. Außerdem schleust man keine validierten Daten übers Formular auf die nächste Seite, weil alles, was vom Client kommt falsch, verfälscht oder sogar schädlich sein kann.

12.11. Prüfe importierte Parameter. Traue niemandem
http://www.php-faq.de/q/q-sicherheit-parameter.html
Es gelten daher die folgenden Empfehlungen:
* Jede Form von Ping-Pong, also Wert-Weitergabe durch GET-Parameter, HIDDEN-Variablen und dergleichen ist zu vermeiden. Auch durch Codierung der Werte ist hier nichts zu erreichen.

Stattdessen sind Sessionvariablen zu verwenden. Nur die Session-ID wird von einer Seite an eine andere Seite weitergereicht.

* Keinesfalls darf ein Programm Werte aus einer GET, POST oder COOKIE-Quelle direkt verwenden. Jeder externe Wert ist einer Plausibilitätsprüfung zu unterziehen, bevor er verwendet wird (Genau das wird in Wie unterscheide ich böse Variablen von guten? näher beschrieben).

* Validierung von Eingabewerten muss serverseitig durch PHP geschehen. JavaScript-Validatoren sind nicht vertrauenswürdig: Der Browser des Anwenders führt diese Validatoren möglicherweise nicht aus, auch dann, wenn er sich durch die User-Agent-Zeile als JavaScript-fähiger Browser identifiziert. Ebenso muss angenommen werden, dass die Referer-Header des Browsers möglicherweise gefälscht sind. Man kann nicht annehmen, dass ein Zugriff tatsächlich von einer bestimmten vorhergehenden Seite hierher vermittelt wurde.

Zusammenfassend: Traue niemandem. Validiere allen Input oder stirb.