Variable Variable
Matze
- php
Hallo,
ich habe eine Variable Variable, deren Inhalt per POST übergeben wird.
Leider kann ich dabei nicht $$_POST[''] verwenden.
Nur $$vari[''] geht leider auch nicht, weil Register Globals auf Off gesetzt wurde.
Wie krieg ich den Inhalt also sonst in die Variable?
Danke!
Grüße, Matze
Hi,
ich habe eine Variable Variable, deren Inhalt per POST übergeben wird.
das ist ein kritischer Sicherheitsbug im Konzept.
Nur $$vari[''] geht leider auch nicht, weil Register Globals auf Off gesetzt wurde.
Damit wäre der Bug auch _noch_ kritischer gewesen.
Wie krieg ich den Inhalt also sonst in die Variable?
Überlege Dir ein sinnvolles Datenkonzept. Wann immer Du an "variable Variablen" denkst, weißt Du entwder *verdammt* genau, was Du tust (und würdest damit diese Frage nicht stellen müssen), oder folgst einem Hirngespinst.
Cheatah
Hallo,
Wie krieg ich den Inhalt also sonst in die Variable?
Überlege Dir ein sinnvolles Datenkonzept. Wann immer Du an "variable Variablen" denkst, weißt Du entwder *verdammt* genau, was Du tust (und würdest damit diese Frage nicht stellen müssen), oder folgst einem Hirngespinst.
Das Script läuft so ab:
if($_POST['dropbutton']){
$sql = mysql_query("SELECT * FROM shopcart WHERE user = '".session_id()."'");
while($row = mysql_fetch_array($sql)) {
$vari = $row['id']."_".$row['subid'];
if($$vari==1){
$query_sql="DELETE FROM shopcart WHERE id ='".$row['id']."' AND subid = '".$row['subid']."' AND user = '".session_id()."'";
mysql_query($query_sql);
}
}
$optimize = mysql_query("OPTIMIZE TABLE muhmediashopcart");
}
Im HTML-Formular wird eine Liste an Checkboxen ausgeben mit den Namen
"id_subid".
Wobei diese Namen dynamisch (aus der Tabelle gelesen )angepasst werden z.B. name="1_2" für id=1 und subid=2.
Wenn ich jetzt ein paar Checkboxen anklicke, weiß ich auf der nächsten Seite den Namen ja noch nicht.
Ich wusste nicht wie ich das ohne die variablen Variablen hingekriegt hätte.
Vielleicht hat jemand eine Idee?
Wie man an der Tabellenbezeichnung erkennen kann, handelt es sich um einen Warenkorb.
Danke!
Grüße, Matze
Hi,
Im HTML-Formular wird eine Liste an Checkboxen ausgeben mit den Namen
"id_subid".
Wobei diese Namen dynamisch (aus der Tabelle gelesen )angepasst werden z.B. name="1_2" für id=1 und subid=2.
Warum gibst du der Checkbox nicht den value "1_2" und einen festen Namen?
Wenn ich jetzt ein paar Checkboxen anklicke, weiß ich auf der nächsten Seite den Namen ja noch nicht.
Du kannst die Checkboxen dann in ein Array speichern (ich glaube das geht so: name="boxen[]") und schauen, welche Elemente es dort gibt.
mfG,
steckl
Hallo,
Du kannst die Checkboxen dann in ein Array speichern (ich glaube das geht so: name="boxen[]") und schauen, welche Elemente es dort gibt.
Stimmt, ein Array ging da ja auch. Danke!
Grüße, Matze
Hallo Gunnar,
Ist „Array“ nicht die Antwort auf jede Frage zu variablen Variablen?
Ich bin mir fast sicher, dass variable Variablen auch ihre Daseinsberechtigung haben.
Aber mal ganz ehrlich, wie steckl schon am Anfang meinte
"...wie der Name Variable schon sagt, immer variabel".
Diese Erfindung ist irgendwie paradox und ich habe viel zu lange gebraucht um die Funktionsweise zu verstehen.
Gut, letzteres ist mein persönliches Problem aber die Bezeichnung selbst verleitet zu Gedankengängen alá "Was ist wenn ich in die Vergangenheit reise und meinen Vater töte?"
Da ich das "Problem" ja nun gelöst habe, aber noch eine andere Frage:
"das ist ein kritischer Sicherheitsbug im Konzept"
Was wollte mir der Cheatah damit sagen?
Welchen Unfug kann man damit betreiben?
Danke!
Grüße, Matze
Hi,
Im HTML-Formular wird eine Liste an Checkboxen ausgeben mit den Namen
"id_subid".
Wobei diese Namen dynamisch (aus der Tabelle gelesen )angepasst werden z.B. name="1_2" für id=1 und subid=2.
wenn die Daten alle die selbe Funktion haben (was wohl der Fall ist, ansonsten könntest Du mit dem Schema "id_subid" kaum weit kommen), bietet es sich an (bzw. schreit förmlich danach), ihnen allen den selben Namen zu geben. Der Wert ist jeweils unterschiedlich.
Cheatah
Hi,
ich habe eine Variable Variable, deren Inhalt per POST übergeben wird.
Was verstehst du unter variable Variable?
Nach meiner Auffassung sind Variablen, wie der Name Variable schon sagt, immer variabel.
mfG,
steckl
Hi,
Was verstehst du unter variable Variable?
Danke, sowas hab ich noch nie gesehen. Schaut irgendwie so ähnlich aus, wie Referenzen in anderen Programmiersprachen, aber hab jetzt eigentlich keine Lust das wirklich zu verstehen.
Hast du die von dir verlinkte Seite mal selbst durchgelesen? In dem roten Kasten mit der Überschrift "WARNUNG" steht etwas zu deinem Thema. Könnte sein, dass dir das weiterhilft.
mfG,
steckl
Hallo,
Hast du die von dir verlinkte Seite mal selbst durchgelesen? In dem roten Kasten mit der Überschrift "WARNUNG" steht etwas zu deinem Thema. Könnte sein, dass dir das weiterhilft.
Ja natürlich und nein, das hilft mir nicht sehr weiter.
Ich habs mit den Referenzen versucht, aber entweder hab ich es nicht verstanden, oder es geht damit nicht.
Grüße, Matze
Hallo steckl!
Danke, sowas hab ich noch nie gesehen. Schaut irgendwie so ähnlich aus, wie Referenzen in anderen Programmiersprachen, aber hab jetzt eigentlich keine Lust das wirklich zu verstehen.
Sieht aus wie Symbolische Referenzen in Perl.
C:\perl
$a = "Hallo";
$$a = "Welt";
print "$a ${$a}\n";
print "$a $Hallo\n";
print "$a $$a\n";
^Z
Hallo Welt
Hallo Welt
Hallo Welt
Viele Grüße aus Frankfurt/Main,
Patrick
Hi,
Sieht aus wie Symbolische Referenzen in Perl.
Danke für die Info, aber ich kann mich nicht an einen Anwendungsfall erinnern, in dem mir sowas weitergeholfen hätte.
mfG,
steckl
Hallo steckl!
Danke für die Info, aber ich kann mich nicht an einen Anwendungsfall erinnern, in dem mir sowas weitergeholfen hätte.
Ich auch nicht... Nur, die Lektüre des Kapitels über Referenzen ist bei mir noch relativ frisch ;)
Mit dem Strict-Pragma geht da eh nichts, es sei denn man entschärft es durch:
no strict 'refs';
Viele Grüße aus Frankfurt/Main,
Patrick
Hi,
Mit dem Strict-Pragma geht da eh nichts, es sei denn man entschärft es
Ich finde nicht ganz zu unrecht.
Macht auf mich den Eindruck, wie die schlimmere Version von eval().
mfG,
steckl
Danke für die Info, aber ich kann mich nicht an einen Anwendungsfall erinnern, in dem mir sowas weitergeholfen hätte.
Naja, schon etwas angestaubt, aber ich verlinke es trotzdem mal:
http://www.unix.org.ua/orelly/perl/advprog/ch01_01.htm
http://www.unix.org.ua/orelly/perl/advprog/ch01_05.htm
Vielleicht hilft's.
Siechfred