Hallo Liste, eigentlich müsste ich mich damit an eine php-Liste wenden, ich wollte mich aber nicht extra deswegen in eine eintragen! Also: unten stehendes Script (oder ähnliche aus dem Internet) funktionieren nicht auf meinem Compi. Bei diesem Script erhalte ich immer die Meldung, dass das Passwort falsch ist. Demnach müsste in der Überprüfung der ersten Bedingung ein Fehler sein - bloß welcher? Für Tipps sehr dankbar PeeGee <body> <h3>Bitte geben Sie Ihr Passwort ein!</h3> <form action="index.php" method=post> <input type="text" name="pw"> <input type="submit" value="Senden"> </form> <?php if (isset($_POST["pw"])) { if ($pw=="test") { ?> <h3>Das Passwort ist richtig! Es gibt aber noch keine neuen Infos!</h3></p> <?php } else { ?> <h3>Falsches Passwort! Wechseln Sie bitte auf eine andere Seite!</h3></p> <?php } } ?> </body>
* On Wed, 02 Jul 2003 at 18:15 +0200, Peter Geerds wrote:
Also: unten stehendes Script (oder ähnliche aus dem Internet) funktionieren nicht auf meinem Compi. Bei diesem Script erhalte ich immer die Meldung, dass das Passwort falsch ist. Demnach müsste in der Überprüfung der ersten Bedingung ein Fehler sein - bloß welcher? [...] <input type="text" name="pw"> [...] if (isset($_POST["pw"])) {
Okay, gut so.
if ($pw=="test")
Wo kommt dieses merwürdige $pw her? Ich kann keine Stelle erkennen, an der es gesetzt wird. Das gehört so: if ($_POST["pw"]=="test") Abgesehen davon ist die Abfrage isset(...) an dieser Stelle sowieso sinnbefreit, da wenn nicht gesetzt, sicher nicht "test" rauskommt, sondern maximal ein leerer String. Da hat wohl einer versucht, ein Skript auf sicher zu trimmen und keine Ahnung gehabt, was er da macht. /apm -- GPG welcome, request public key: mailto:adalbert+key@lopez.at
Am 02.07.2003 um 20:13 Uhr schrieb Adalbert Michelic:
* On Wed, 02 Jul 2003 at 18:15 +0200, Peter Geerds wrote:
Also: unten stehendes Script (oder ähnliche aus dem Internet) funktionieren nicht auf meinem Compi. Bei diesem [...] if (isset($_POST["pw"])) {
Okay, gut so.
if ($pw=="test")
Wo kommt dieses merwürdige $pw her? Ich kann keine Stelle erkennen, an der es gesetzt wird. Das gehört so: if ($_POST["pw"]=="test")
Hallo Adalbert, danke! Ich hab dieses 'isset' herausgenommen, deine Zeile eingefügt und Klammern neu gesetzt: jetzt geht's! Gruß PeeGee
Hallo Adalbert, hallo Leute, Am Mittwoch, 2. Juli 2003 20:13 schrieb Adalbert Michelic: [...]
Abgesehen davon ist die Abfrage isset(...) an dieser Stelle sowieso sinnbefreit, da wenn nicht gesetzt, sicher nicht "test" rauskommt, sondern maximal ein leerer String. Da hat wohl einer versucht, ein Skript auf sicher zu trimmen und keine Ahnung gehabt, was er da macht.
[ ] Du betreibst PHP mit error_reporting = E_ALL [x] Ich schon ;-) cb@tux:~> echo '<?php echo $test ?>' | php # gekürzt um HTTP-Header & co Notice: Undefined variable: test in - on line 1 Bei der üblichen Einstellung error_reporting = E_ALL & ~E_NOTICE werden solche Dinge nicht bemängelt. Das hat IMHO den Nachteil, dass - Fipptehler in Variablennamen zu schwer zu findenden Fehlern führen - "unsauberer" Code trotzdem ohne Warnungen läuft (auch solcher von mir, ich hab mein PHP nämlich auch erst vor kurzem strenger geschaltet...) - mögliche Sicherheitslücken (via register_globals), die nicht initialisierte Variablen ausnutzen, unentdeckt bleiben - ... Fazit: Genauso wie man in Perl "strict" und "warnings" benutzt, sollte man in PHP nicht E_NOTICE von error_reporting ausschließen ;-) Gruß Christian Boltz PS: Wie man Parameter aus $_GET "sauber" importiert, ohne jedesmal isset() usw. zu benötigen, hab ich vor ein paar Tagen geschrieben. Hier nochmal die benötigte Funktion: (Details siehe Listenarchiv ;-) function safeget ($param) { # import URL params from $_GET # If the wanted param was not given, there will be no error message # (E_NOTICE level). In this case, this function will return an empty # string. $retval=""; if (isset($_GET["$param"])) $retval=$_GET["$param"]; # # compatibility code for PHP 4.0 (and older) # global $$param; # if ( ! isset($_GET) && isset($$param)) $retval=$$param; return $retval; } # end safeget() # Anwendungsbeispiel: $lang = safeget('lang'); # statt $lang = $_GET['lang'] -- Gibt es ein Buch über das maßvolle Verwenden von Fußnoten? Wenn ja, dann bin ich bereit, Dir ein Exemplar zu schicken. [Thorsten Haude zu David Haller in sl-etikette]
* On Wed, 02 Jul 2003 at 23:10 +0200, Christian Boltz wrote:
Am Mittwoch, 2. Juli 2003 20:13 schrieb Adalbert Michelic: [...]
Abgesehen davon ist die Abfrage isset(...) an dieser Stelle sowieso sinnbefreit, da wenn nicht gesetzt, sicher nicht "test" rauskommt, sondern maximal ein leerer String. Da hat wohl einer versucht, ein Skript auf sicher zu trimmen und keine Ahnung gehabt, was er da macht.
[x] Du betreibst PHP mit error_reporting = E_ALL [x] Ich schon ;-)
cb@tux:~> echo '<?php echo $test ?>' | php # gekürzt um HTTP-Header & co Notice: Undefined variable: test in - on line 1
Bei der üblichen Einstellung error_reporting = E_ALL & ~E_NOTICE werden solche Dinge nicht bemängelt. Das hat IMHO den Nachteil, dass - Fipptehler in Variablennamen zu schwer zu findenden Fehlern führen - "unsauberer" Code trotzdem ohne Warnungen läuft (auch solcher von mir, ich hab mein PHP nämlich auch erst vor kurzem strenger geschaltet...) - mögliche Sicherheitslücken (via register_globals), die nicht initialisierte Variablen ausnutzen, unentdeckt bleiben - ...
Fazit: Genauso wie man in Perl "strict" und "warnings" benutzt, sollte man in PHP nicht E_NOTICE von error_reporting ausschließen ;-)
Schön. Und was habe ich für einen Vorteil davon, abzufragen, ob Variable A gesetzt, wenn ich mich für Variable B interessiere? /apm -- GPG welcome, request public key: mailto:adalbert+key@lopez.at
Hallo Adalbert, hallo Leute, Am Donnerstag, 3. Juli 2003 08:30 schrieb Adalbert Michelic:
* On Wed, 02 Jul 2003 at 23:10 +0200, Christian Boltz wrote:
Am Mittwoch, 2. Juli 2003 20:13 schrieb Adalbert Michelic: [...]
Abgesehen davon ist die Abfrage isset(...) an dieser Stelle sowieso sinnbefreit, da wenn nicht gesetzt, sicher nicht "test" rauskommt, sondern maximal ein leerer String. [...]
[x] Du betreibst PHP mit error_reporting = E_ALL ^ Du also auch? ;-)
cb@tux:~> echo '<?php echo $test ?>' | php # gekürzt [...] Notice: Undefined variable: test in - on line 1
Bei der üblichen Einstellung error_reporting = E_ALL & ~E_NOTICE werden solche Dinge nicht bemängelt. Das hat IMHO den Nachteil, dass - Fipptehler in Variablennamen zu schwer zu findenden Fehlern führen [...] Genauso wie man in Perl "strict" und "warnings" benutzt, sollte man in PHP nicht E_NOTICE von error_reporting ausschließen ;-)
Schön. Und was habe ich für einen Vorteil davon, abzufragen, ob Variable A gesetzt, wenn ich mich für Variable B interessiere?
Direkt wohl keinen, das war ein Fehler im Code (wurde wohl bei der Umstellung des Codes auf "register_globals = off" übersehen). Mit der strengen Einstellung bei error_reporting wird allerdings die Fehlersuche einfacher ;-) Ich komme nochmal auf den ursprünglichen Code zurück: | if (isset($_POST["pw"])) { | if ($pw=="test") | # [...] ... hätte bei mir mit Sicherheit ein "Undefined variable: pw" verursacht, was die Fehlersuche doch erheblich vereinfacht *g* Gruß Christian Boltz --
Ist das sone Art wie cat sigdatei | grep suchstring? Oh nein - nicht schon wieder! Hilfeeee, Doktor! Ich sehe schon wieder so einen unnötigen cat ;-) [> Michael Raab und Jan Trippler in suse-linux]
* On Thu, 03 Jul 2003 at 23:01 +0200, Christian Boltz wrote:
Am Donnerstag, 3. Juli 2003 08:30 schrieb Adalbert Michelic:
* On Wed, 02 Jul 2003 at 23:10 +0200, Christian Boltz wrote:
Am Mittwoch, 2. Juli 2003 20:13 schrieb Adalbert Michelic: [...]
Abgesehen davon ist die Abfrage isset(...) an dieser Stelle sowieso sinnbefreit, da wenn nicht gesetzt, sicher nicht "test" rauskommt, sondern maximal ein leerer String. [...]
[x] Du betreibst PHP mit error_reporting = E_ALL ^ Du also auch? ;-)
Ja, deswegen hab ich ja angekreuzt :-)
cb@tux:~> echo '<?php echo $test ?>' | php # gekürzt [...] Notice: Undefined variable: test in - on line 1
Bei der üblichen Einstellung error_reporting = E_ALL & ~E_NOTICE werden solche Dinge nicht bemängelt. Das hat IMHO den Nachteil, dass - Fipptehler in Variablennamen zu schwer zu findenden Fehlern führen [...] Genauso wie man in Perl "strict" und "warnings" benutzt, sollte man in PHP nicht E_NOTICE von error_reporting ausschließen ;-)
Schön. Und was habe ich für einen Vorteil davon, abzufragen, ob Variable A gesetzt, wenn ich mich für Variable B interessiere?
Direkt wohl keinen, das war ein Fehler im Code (wurde wohl bei der Umstellung des Codes auf "register_globals = off" übersehen). Mit der strengen Einstellung bei error_reporting wird allerdings die Fehlersuche einfacher ;-)
Okay, ich habs da oben flhsca formuliert: Ich gung davon aus, daß Peter die entsprechende Fehlermeldung eh nicht kriegt, und daß es _deswegen_ 'ghupft wia gsprunga' is, ob da jetzt ge-isset-tet wird, oder nicht. Normal ists schon von Vorteil, ja. Aber da verwende ich auch so was ähnliches wie Du safeget o.ä. getauft hast; blos ist das noch mit ein wenig Logging ausgebaut (schreibt mir den Aufrufer, den Referer und den Variablennamen in einen File raus).
Ich komme nochmal auf den ursprünglichen Code zurück:
| if (isset($_POST["pw"])) { | if ($pw=="test") | # [...]
... hätte bei mir mit Sicherheit ein "Undefined variable: pw" verursacht, was die Fehlersuche doch erheblich vereinfacht *g*
Ja, das schon. /apm -- GPG welcome, request public key: mailto:adalbert+key@lopez.at
Hi Peter, On Wednesday 02 July 2003 18:15, Peter Geerds wrote:
if (isset($_POST["pw"])) {
Schreib mal: if (!empty($¯POST["pw"]))
if ($pw=="test")
Und hier:
if ($_POST["pw"] == "test")
Für den Rest solltest Du vielleicht besser auf eine PHP Mailingliste
nachfragen oder das Handbuch lesen ;-)
Liebe Grüße,
Andreas
--
Andreas Otto
Schreib mal if ($_POST["pw"]=="test") dann sollte es funktionieren. Frank -----Ursprüngliche Nachricht----- Von: Peter Geerds [mailto:Peter.Geerds@t-online.de] Gesendet: Mittwoch, 2. Juli 2003 18:16 An: suse-linux@suse.com Betreff: php-script: Passwort-Abfrage Hallo Liste, eigentlich müsste ich mich damit an eine php-Liste wenden, ich wollte mich aber nicht extra deswegen in eine eintragen! Also: unten stehendes Script (oder ähnliche aus dem Internet) funktionieren nicht auf meinem Compi. Bei diesem Script erhalte ich immer die Meldung, dass das Passwort falsch ist. Demnach müsste in der Überprüfung der ersten Bedingung ein Fehler sein - bloß welcher? Für Tipps sehr dankbar PeeGee <body> <h3>Bitte geben Sie Ihr Passwort ein!</h3> <form action="index.php" method=post> <input type="text" name="pw"> <input type="submit" value="Senden"> </form> <?php if (isset($_POST["pw"])) { if ($pw=="test") { ?> <h3>Das Passwort ist richtig! Es gibt aber noch keine neuen Infos!</h3></p> <?php } else { ?> <h3>Falsches Passwort! Wechseln Sie bitte auf eine andere Seite!</h3></p> <?php } } ?> </body> -- Um die Liste abzubestellen, schicken Sie eine Mail an: suse-linux-unsubscribe@suse.com Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: suse-linux-help@suse.com
participants (5)
-
Adalbert Michelic
-
Andreas Otto
-
Christian Boltz
-
Frank Palvölgyi
-
Peter.Geerds@t-online.de