Probleme nach Register_Globals off

Hallo,

mein Provider hat vor einiger Zeit die „Register_Globals“ auf off gesetzt. Jetzt habe ich leider ein wenig Probleme mit der Programmierung.

Es soll einfach nur in eine Datei geschrieben werden, welcher von 5 Radiobuttens ausgewählt wurde. Hier mein (nicht funktionierender) versuch:

 mit Humor

 mit Spannung

 mit Action

 mit Tragik

 mit Gefühlen

sein sollte.

(Bitte erst etwas auswählen, dann „Entscheidung fällen“
und dann weiter klicken)
Weiter >>

if ($send) {
// Hier wird das File geschrieben
$fp = fopen(‚daten/daten.txt‘, ‚a‘);
fputs($_GET[‚fp‘],„RadioB1: $RadioB1“."\n");
fclose($_GET[‚fp‘]);
}
?>

Gruß,
Jonny

mein Provider hat vor einiger Zeit die „Register_Globals“ auf
off gesetzt. Jetzt habe ich leider ein wenig Probleme mit der
Programmierung.

Hi Jonny,

Register_Globals = off
hat nichts mit deinem Problem zu tun!
Der code kann so nicht funktionieren - wenn er das jemals hat, wäre ich doch sehr verwundert.

Hier erstellst du einen Filepointer (fp)

if ($send) {
// Hier wird das File geschrieben
$fp = fopen(‚daten/daten.txt‘, ‚a‘);

Du benutzt ihn aber nicht, sondern übergibst der Methode fputs, die einen fp erwartet, das was in $_GET[‚fp‘] drin steckt - also nichts!

fputs($_GET[‚fp‘],„RadioB1: $RadioB1“."\n");

und anschließend willst du den nicht vorhandenen fp schließen.

fclose($_GET[‚fp‘]);

Es müsste wohl eher so aussehen:
fputs($fp,„RadioB1: $RadioB1“."\n");
fclose($fp);

Gruß, Stephan

Noch ein Nachtrag zu GET und POST
Du benutzt in deinem Formular POST zum Versenden

Dann solltest du die Werte auch aus POST auslesen:
$wertvonRadioButton = $_POST[‚RadioB1‘];

Gruß, Stephan

<?php if (isset($_POST['RadioB1'])) {
$RadioB1 = $\_POST['RadioB1']; } if (isset($\_POST['RadioB2'])) { $RadioB2 = $\_POST['RadioB2']; } . . . ?\> >  mit Humor > > >  mit Spannung > > >  mit Action > > >  mit Tragik > > >  mit Gefühlen > > > > > > > sein sollte. > > > > > (Bitte erst etwas auswählen, dann "Entscheidung > fällen" > und dann weiter klicken) > **[Weiter \>\>](stroy4.php)** > > > > > > > > > if ($send) { > // Hier wird das File geschrieben > $fp = fopen('daten/daten.txt', 'a'); > fputs($\_GET['fp'],"RadioB1: $RadioB1"."\n"); > fclose($\_GET['fp']); > } > ?\> > > > Gruß, > Jonny Thomas Punkt.

Hi,
ergänzend noch folgendes:

action=" echo $_GET[‚PHP_SELF‘]; ?>">

ist völliger Unsinn. Diese Servervariable steht in $_SERVER zur Verfügung.
Und übrigens: Wenn Dein Provider short_open_tags deaktiviert, hast Du das nächste Problem. Schreibe besser schon jetzt

Moin,

Du benutzt ihn aber nicht, sondern übergibst der Methode
fputs, die einen fp erwartet, das was in $_GET[‚fp‘] drin
steckt - also nichts!

Das Problem ist, dass der OP „register_globals“ nicht verstanden hat und meint, er könne keine Variablen in der Form $foo mehr schreiben, sondern müsse alles mit $_GET[„foo“] schreiben. Das merkt man auch schön in der action des Formulars. Er hat einfach alle Variablen ersetzt. Das geht natürlich in die Hose.

Liebe Grüße,
-Efchen

Das Problem ist, dass der OP „register_globals“ nicht
verstanden hat und meint, er könne keine Variablen in der Form
$foo mehr schreiben, sondern müsse alles mit $_GET[„foo“]
schreiben. Das merkt man auch schön in der action des
Formulars. Er hat einfach alle Variablen ersetzt.

Ganz genau so war es. Liegt schlicht und einfach an meiner mangelnden Erfahrung und dem noch über weite Strecken fehlendem Verstädnis.

Habe das Problem kurzfristig überbrückt in dem ich noch folgendes in den Code mit aufgenommen habe:

foreach($_REQUEST as $key=>$value){$$key = $value;}

Mittlerweile habe ich den Code dann aber entsprechend der neuen Rahmenbedigungen umgeschrieben.

Gruß und Dank,
Jonny