Re: Apache + PHP + IMAP-Support
Günther Zinsberger <suse.t@nbg.glasfasertechnik.at> wrote ..
ja, damit funktioniert der IMAP- oder POP3-Zugriff. NUR habe ich jetzt das Problem, daß ich keine Parameter mehr übergeben kann (aus Forms, mit GET- oder POST-Methode). Habe ich da jetzt ein Konfigurationsproblem, bisher hatte ich dieses Problem noch nie?
Die neu installierten Pakete: mod_php4-core-4.2.3-10 mod_php4-4.2.3-10 pdflib-3.03-30
Danke im voraus Günther
Hallo Günter, du musst in der /etc/php.ini register_globals = Off auf on stellen, dann läuft alles wieder. PHP 4 ChangeLog Version 4.2.0 22-Apr-2002 ATTENTION!! register_globals defaults to 'off' now !!! .. MfG Michael Steffen
Moin, Michael Steffem:
du musst in der /etc/php.ini
register_globals = Off
auf on stellen, dann läuft alles wieder.
Möööööööööööööök. Die Antwort ist falsch. :-) Die PHP-Entwickler haben das bewusst abgestellt, weil es mögliche Sicherheitslöcher öffnet. Deine Lösung funktioniert, ist aber nicht im Sinn der Sache. Beispiel: <?php if ($passwort=="geheim") { $login=1; } else { echo "Du kommst hier nicht rein!"; } if ($login==1) { # mache # geheime # Sachen } "Gedacht" ist dieses Programm so, daß man mit www.url.foo?passwort=geheim reinkommt, ansonsten aber abgewiesen wird. In diesem Fall wurde aber vergessen, $login zu initialisieren, und man kommt ganz einfach rein mit www.url.foo?login=1 Egal, welches Passwort eingestellt wurde! Daher wurde bei PHP ab Version die "globalisierung" von Variablen abgeschafft. Außerdem wurden sie an eine Quelle gebunden. Das heisst: Im obigen Beispiel weisst du überhaupt nicht, wo "$passwort" überhaupt herkommt - es könnte ein Cookie sein, es könnte per get oder post übergeben worden sein,... Stell dir einfach vor, du übergibst deine Variablen per post, und der User mischt in die URL noch ein paar per get rein. Wenn du jetzt deine Projekte noch überblickst - gratuliere. Ich nicht. :-) Daher verwendet man jetzt Arrays und definiert explizit daraus. Im obigen Beispiel: §passwort=$_GET['passwort']; Es gibt mehrere Arrays: _GET, _POST, _COOKIE,... Das macht Programme zwar nicht bombensicher, aber sicher_er_. Korrekt ist, daß das obige Beispiel nicht sauber programmiert ist, aber es ist nur ein Beispiel, in der Realität sollte sowas in Form eines Fehlers nunmal auftreten. Da ich aber heute "netter-Kerl-Tag" habe, will ich gerne eingestehen, daß es relativ mühselig ist, jetzt alle Programme umzuschreiben, die man so braucht - zumal man wohlmöglich in einer alten php-Version entwickelt und dann auf einen Server mit neuerer Version uploadet. Ja, wohlmöglich hat man gar nicht das Recht, auf diesem Gerät "mal eben" die php.ini zu ändern. Daher verwende ich derzeit beiliegenden Code. In der ersten Zeile deines php-Scriptes machst du ein include("php_varfix.php"); , woraufhin dein Script die Werte immer kennt, egal ob neues oder altes php. Hast du den Kram dann auf dem Server liegen, kannst du zentral in dieser Datei ändern, wie die Variablen aufschlagen sollen. Und wenn der Umstellungsrummel dann irgendwann vorbei ist: Snip, alten code einmalig deconnecten. Gruß Ratti P.S.: Es gibt auch eine Suse-Programmieren-Liste, eine PHP-Liste und die PHP-Releasenotes. Aber ich habe ja heute "netter-Kerl-Tag". :-))) P.P.S.: Ich impliziere, daß dieses Script als "php_varfix.php" abgespeichert wird. :-) <? /////////////////////////////////////////////////////////////////////////////// // php4-1-0_varfix.php January 09, 2001 // by Tom Harrison (thetomharrison@hotmail.com) // // According the the PHP Changelog, the version 4.1.0 release of PHP contains // a drastic change in the way form, cookie and server values are made // available. Instead of the old way // (file.php?myvar=foobar yielding $myvar = "foobar"), such values are only // assigned to associative arrays ($_GET, $_POST, $_COOKIE, $_SERVER // and $_ENV). This has the effect of not only deprecating the $HTTP_*_VARS // arrays and $fieldname = "fieldvalue" variables, but also // voiding hundreds, if not thousands of existing web applications. As of // 4.1.1, the $HTTP_*_VARS variables still exist, but the // $fieldname = "fieldvalue" variables are completely gone. // // In an effort to preserve backwards compatability, this script cycles through // these new structures and creates variables out of the field values. This // means if you include this script at the top of your own scripts and run them // on php 4.1.0, $yourformvalue or $yourcookievalue will contain the value // you're expecting instead of nothing (as is the case if you ran your script // without some kind of fix like this). // // The entire situation can be avoided by enabling register_globals. In 4.1.0, // register_globals is deprecated but still on by default. In 4.1.1 however, it // is off by default. This snippet is intended for those who don't have control // over php's settings (such as virtually hosted sites) and need a quick fix // while they transition their scripts to this arguably more secure method // of making data available. // // For more information, see http://www.php.net/ChangeLog-4.php /////////////////////////////////////////////////////////////////////////////// if (isset($_REQUEST)) { while(list($varname, $varvalue) = each($_REQUEST)) { $$varname = $varvalue; } } if (isset($_SERVER)) { while (list($varname, $varvalue) = each($_ENV)) { $$varname = $varvalue; } while (list($varname, $varvalue) = each($_SERVER)) { $$varname = $varvalue; } } /* There is no use yet for this function, but is included in anticipation of the possibility of the $HTTP_*_VARS being fully deprecated. function create_HTTP_VARS($type) { $temp = array(); switch(strtoupper($type)) { case 'POST': $temp2 = &$_POST; break; case 'GET': $temp2 = &$_GET; break; case 'COOKIE': $temp2 = &$_COOKIE; break; case 'SERVER': $temp2 = &$_SERVER; break; case 'ENV': $temp2 = &$_ENV; break; default: return 0; } while (list($varname, $varvalue) = each($temp2)) { $temp[$varname] = $varvalue; } return ($temp); } if (!isset($HTTP_POST_VARS)) { $HTTP_POST_VARS = create_HTTP_VARS('POST'); $HTTP_GET_VARS = create_HTTP_VARS('GET'); $HTTP_COOKIE_VARS = create_HTTP_VARS('COOKIE'); $HTTP_SERVER_VARS = create_HTTP_VARS('SERVER'); $HTTP_ENV_VARS = create_HTTP_VARS('ENV'); } */ ?> -- http://www.gesindel.de - Fontlinge - Die Fontverwaltung fuer Linux Fontmanagement for Linux
* On Mon, 30 Sep 2002 at 19:26 +0200, Michael Steffem wrote:
G?nther Zinsberger <suse.t@nbg.glasfasertechnik.at> wrote ..
ja, damit funktioniert der IMAP- oder POP3-Zugriff. NUR habe ich jetzt das Problem, da? ich keine Parameter mehr ?bergeben kann (aus Forms, mit GET- oder POST-Methode). Habe ich da jetzt ein Konfigurationsproblem, bisher hatte ich dieses Problem noch nie? [...] du musst in der /etc/php.ini
register_globals = Off
auf on stellen, dann l?uft alles wieder.
PHP 4 ChangeLog Version 4.2.0 22-Apr-2002 ATTENTION!! register_globals defaults to 'off' now !!!
Das hat auch einen guten Grund - nur mal so nebenbei. <http://www.php.net/release_4_1_0.php> sagt näheres. -- Adalbert GPG welcome, request public key: mailto:adalbert+key@lopez.at
From: "Michael Steffem" <mail-list-suse@m-st.net>
Günther Zinsberger <suse.t@nbg.glasfasertechnik.at> wrote ..
ja, damit funktioniert der IMAP- oder POP3-Zugriff. NUR habe ich jetzt das Problem, daß ich keine Parameter mehr übergeben kann (aus Forms, mit GET- oder POST-Methode). Habe ich da jetzt ein Konfigurationsproblem, bisher hatte ich dieses Problem noch nie?
Die neu installierten Pakete: mod_php4-core-4.2.3-10 mod_php4-4.2.3-10 pdflib-3.03-30
Danke im voraus Günther
Hallo Günter, du musst in der /etc/php.ini
register_globals = Off
auf on stellen, dann läuft alles wieder.
PHP 4 ChangeLog Version 4.2.0 22-Apr-2002 ATTENTION!! register_globals defaults to 'off' now !!!
Danke Michael, das war genau das was ich gesucht habe. Auf die Sicherheitsbedenken gehe ich im nächsten Schritt ein. Danke, Günther
participants (4)
-
Adalbert Michelic
-
Günther Zinsberger
-
Joerg Rossdeutscher
-
Michael Steffem