Problem mit variablen Variablen

Alles, was PHP betrifft, kann hier besprochen werden.

Problem mit variablen Variablen

Postby daboo » 16. January 2006 11:19

hi,

auf unserem alten apache hatte ich nen script geschrieben, das variable variablen benutzt. es war ein apache 2 mit php4 und es lief bestens.
auf dem neuen mit apache2 und php5.0.4 gibts keine werte mehr in $$blabla.
ist es ein konfigurationsfehler?
ideen?

gruß
daboo
daboo
 
Posts: 8
Joined: 06. January 2006 12:11

Postby Hanspeter Thöni » 16. January 2006 12:23

Ein bisschen vage, deine Beschreibung.
Was für eine Variable willst du ansprechen (lokal/global/get/post/cookie/etc)?

Ist das script ev. für 'register_globals=on' geschrieben?. Da heute register_globals=off die normale einstellung ist, könnte das das Problem sein.
Gruss Hanspeter
User avatar
Hanspeter Thöni
 
Posts: 233
Joined: 17. August 2004 10:29
Location: Schweiz

Postby daboo » 16. January 2006 12:29

ja sorry sind echt wenig infos.... jetzt wo du es sagst ;)

also ich habe ein formular mit vielen checkboxen, alle namen durchnumeriert und die anzahl ist unterschiedlich.
nach dem post versuche ich in einer for-schleife mit $$i auf die einzelnen variablen zuzugreifen, aber keine hat einen wert.
register_globals ist on.
daboo
 
Posts: 8
Joined: 06. January 2006 12:11

Postby daboo » 16. January 2006 12:39

hmm ok hatte das gleiche noch woanders gepostet, hier nochmal code-schnipsel zwar stark gekürzt, aber es sollte erkennbar sein was ich vorhabe:

Code: Select all
            $result=mysql_query("select * from meintabelle");
            $i=0;
            while ($row=mysql_fetch_array($result))
            {
                     print"<tr>
                        <td class=\"s1\">".$row['name'].": </td>
                        <td class=\"s1\"><input type=\"checkbox\" name=\"".$i."\" value=\"1\">
                        </td>
                      </tr>";
                      $i++;
            }



dann die verarbeitung nachm post:
Code: Select all
                for ($j=0; $j<=$anzahl; $j++)
            {
                            echo $$j;
            }
daboo
 
Posts: 8
Joined: 06. January 2006 12:11

Postby Hanspeter Thöni » 16. January 2006 12:48

daboo wrote: for ($j=0; $j<=$anzahl; $j++)
{
echo $$j;
}


Um den Fehler einzugrenzen würde ich zuerst mal die Post-Variablen anzeigen lassen:
Code: Select all
print_r($_POST);

Damit kannst du sicherstellen, dass die gewünschten Variablen grundsätzlich mal vorhanden sind.

Dann würde ich drigend empfehlen deine Codes für register_globals=off zu schreiben.
Code: Select all
                for ($j=0; $j<=$anzahl; $j++)
            {
                            echo $_POST[$j];
            }
Last edited by Hanspeter Thöni on 16. January 2006 12:51, edited 1 time in total.
Gruss Hanspeter
User avatar
Hanspeter Thöni
 
Posts: 233
Joined: 17. August 2004 10:29
Location: Schweiz

Postby Wiedmann » 16. January 2006 12:49

Im PHP-Manual (Bereich FAQ) oder auf der HP von php-faq kannst du nachlesen wie man Checkboxen in PHP verarbeitet.
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby daboo » 16. January 2006 13:12

register_globals is bei uns nur off, weil wir alle etwas bequem sind und die sicherheit nur eine untergeordnete rolle spielt, weils ein reiner intranet-server ist ;)

ich danke schonmal für die ideen, werd nochmal testen und mich melden
daboo
 
Posts: 8
Joined: 06. January 2006 12:11

Postby daboo » 16. January 2006 14:55

hmm also werte werden ganz sicher übergaben, nur bekomme ich aus $$ keine daten...

print_r($_POST); gibt mir unter anderem das hier:
Code: Select all
Array
(
    [name] => Mustermann
    [vorname] => max
    [0] => 1
    [1] => 1
    [2] => 1
    [3] => 1
    [4] => 1
    [5] => 1
    [i] => 23
    [id] => 138
)
daboo
 
Posts: 8
Joined: 06. January 2006 12:11

Postby daboo » 16. January 2006 15:09

nochmals danke für eure hilfe!

es läuft nun wieder, habe nen ähnliches verfahren gefunden, das klappt.
scheinbar hat es ihn gestört durch die for-schleife so konstruktionen wie $1 $2 usw enstanden.... setze nun im formular nochn a davor, also $a1 $a2 usw, dann frisst ers wieder...

und mit so einem fehler kann man sich lange aufhalten.... nenene und das nur weil der alte server das geschluckt hatte ;)

gruß
daboo
daboo
 
Posts: 8
Joined: 06. January 2006 12:11


Return to PHP

Who is online

Users browsing this forum: No registered users and 1 guest