PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Variablen auslesen nachdem sie mit GET übergeben wurden.



Gutschy
11-06-2004, 15:11
Wisst ihr Leute, es ist wichtig seinen Humor zu behalten



Also da wird diese Variable per GET übergeben:

<a href=\"details.php?kunde=$row[3]\">

kann ich auch ganz normal auslesen. Z.B. so: 10360

nur sobald ich eine zweite Variable mit auf dem Weg geben möchte

<a href=\"details.php?kunde=$row[3]'&'spalteA=$spalteA\">

wird der Variablen Wert nur noch so ausgegeben: 10360\'
an den Wert von SpalteA komme ich gar nicht erst ran.
Ich les die Werte halt ganz normal aus.

$kunde=$HTTP_GET_VARS['kunde'];
$spalteA=$HTTP_GET_VARS['spalteA'];

Hoffe ihr habt noch Bock mir daraus zu helfen.

:D

Gutschy
11-06-2004, 15:31
QUERY_STRING ist ein Lösungsansatz und noch mal EXPLODE Testen.

Gaert
11-06-2004, 15:46
Hallo Gutschy,

Schreib den Code sauber, und schon klappt es... nur weil du bei PHP Variablen auf verschiedenste Weisen in einen String schmeißen kannst, heißt das noch lange nicht, dass immer alles funktionieren muss.



echo '<a href="details.php?kunde=' . $row[3] . '&spalteA=' . $spalteA . '">';


Viel übersichtlicher...

Gruß,

Gaert

Gutschy
12-06-2004, 00:27
So, ihr ward beide schneller. Hab jetzt mal ein paar Schreibweisen rumprobiert und komme mit der von Geart wunderbar zurecht.

@Claudine, warum ich die Werte doppelt speicher, nunja dank der Schreibweise von Geart brauche ich gar kein "$HTTP_GET_VARS" mehr, geht auch ohne. Aber ich dachte bis jetzt das ich das "GET" für jede Variable bringen muß die ich von einem Formular annehme. Na ja, warum da jetzt nicht so ist konnte ich mir aber bis jetzt auch nicht erklären. Ich hab doch zwei Variablen und bei "POST" geht es ja auch so, oder liegt das daran das POST Formularfelder sendet und GET einen String in der URI:confused: .

Auf jeden Fall schönes WE.

Gaert
12-06-2004, 14:14
Hallo Gutschy,

ich nehme mal an, dass bei dir register_globals in der php.ini auf "on" gestellt ist - das bewirkt dann, dass du die Variablen nicht aus den $HTTP_**_VARS Arrays holen musst.
Es ist aber auf jeden Fall sauberer und sicherer sich die Daten aus den Arrays zu holen!
Übrigens gibt es in neueren PHP Versionen die Arrays $_POST und $_GET statt den $HTTP_**_VARS - du solltest auf jeden Fall diese benutzen.

PS: man schreibt mich Gaert nicht Geart....

Gutschy
12-06-2004, 23:46
Hi Gaert,;)

ah ja, bei mir auf der Arbeit läuft ein XAMPP, da werden wohl Global_Register von vorneherein auf on stehen. Auf meinem Lamp zuhause sind die natürlich auf off. Aber gut zu wissen das diese Einstellung auch solche Effekte hat. Ich hab jetzt nur von irgendwelchen Sicherheitaspekten in diesem Bezug gewußt.
Ich hab aber immer noch nicht verstanden warum $kunde=$HTTP_GET_VARS['kunde']; mir alle Daten aus dem String übergibt, obwohl nur 'kunde' übergeben wurde.

Gaert
13-06-2004, 00:17
Hallo Gutschy,

die Sicherheitsprobleme entstehen ja deshalb, weil sämtliche Variablen, die du über die URL oder per POST übergibst sich bei "register_globals = on" direkt im normalen PHP Namensraum befinden und du sie nicht mehr aus den Arrays holen musst.


Ich hab aber immer noch nicht verstanden warum $kunde=$HTTP_GET_VARS['kunde']; mir alle Daten aus dem String übergibt, obwohl nur 'kunde' übergeben wurde.

Und ich habe immer noch nicht verstanden, was du mir damit sagen willst... er gibt dir mit Sicherheit nur den Inhalt für die Variable Kunde zurück, ansonsten ist die Syntax der URL falsch... abgesehen davon solltest du wirklich $_GET verwenden.
--> http://www.php.net/reserved.variables

msi
13-06-2004, 18:48
Original geschrieben von Gutschy

Wisst ihr Leute, es ist wichtig seinen Humor zu behalten



Also da wird diese Variable per GET übergeben:

<a href=\"details.php?kunde=$row[3]\">

kann ich auch ganz normal auslesen. Z.B. so: 10360

nur sobald ich eine zweite Variable mit auf dem Weg geben möchte

<a href=\"details.php?kunde=$row[3]'&'spalteA =$spalteA\">

wird der Variablen Wert nur noch so ausgegeben: 10360\'
an den Wert von SpalteA komme ich gar nicht erst ran.
Ich les die Werte halt ganz normal aus.

$kunde=$HTTP_GET_VARS['kunde'];
$spalteA=$HTTP_GET_VARS['spalteA'];

Hoffe ihr habt noch Bock mir daraus zu helfen.

:D
Hallo,
der Fehler ist einfach, dass die zwei ' vor und nach dem & rausgehören, also so:
...kunde=$row[3]&spalteA=$spalteA....
und nicht
...kunde=$row[3]'&'spalteA=$spalteA....
deshalb wurde auch bei kunde noch ein ' am ende angehängt und die zweite variable (spalteA) hieß dann 'spalteA.

Gutschy
13-06-2004, 20:12
Meine Frage bezog sich mehr auf die Aussage von Claudine,



quote:
Original geschrieben von Gutschy

$kunde=$HTTP_GET_VARS['kunde'];
$spalteA=$HTTP_GET_VARS['spalteA'];



Wieso speicherst du den Wert immer doppelt?

echo $HTTP_GET_VARS['kunde'];

liefert dir doch was Du willst.

Warum ich die Werte doppelt speichere? Na ja, ich brauche halt beide Werte, weil sie zu verschiedenen Abfragen gehören und dann ging es ebend los das die REGISTER_GLOBALS auf on stehen. Was ja wieder hieß das die Werte sowieso zu verfügung standen. Also die Frage warum ich alle Variablen mit nur einem GET zu verfügung hatte, hatte halt den Denkfehler, das ich halt noch nicht realisiert hatte was REGISTER_GLOBALS auf on noch alles bedeutet. ....Alles klar...:D

Is aber auch egal. Danke für die Mühe beim Erklären:)

@msi,

besten Dank für den Tipp, aber bei der Fragestellung hatt das Board noch einige Zeichen verschluckt, eigentlich sah der Wert so aus: 10360'/
Und das wurde wunderbar durch die Schreibweise die Gaert vergeschlagen hat, aufgelößt.