Zugriffsbechränkung auf Seite
daniel
- php
hallo leute,
vielleicht könnt ihr mir ja helfen:
ich will bestimmte seiten mit einem passwort schützen.
auf diese seiten soll (natürlich) nur zugreifen können, wer auch angemeldet ist.
daher habe ich bei diesen seiten mit hilfe des des DW-Ultradev Zugriffsbeschränkungen gesetzt.
wenn ich nun aber direkt die url der zu-schützenden seite eingebe, erhalte ich folgende fehlermeldung:
Warning: Undefined variable: QUERY_STRING in E:\Sites\Cheerleader_dyn_test\Sites\member_login\log-in_success.php on line 16
Warning: Cannot add header information - headers already sent by (output started at E:\Sites\Cheerleader_dyn_test\Sites\member_login\log-in_success.php:16) in E:\Sites\Cheerleader_dyn_test\Sites\member_login\log-in_success.php on line 18
eigentlich sollte dann aber eine andere seite index.php angeziegt werden...
der php-code dazu sieht folgerndermaßen aus:
<?php
// *** Restrict Access To Page: Grant or deny access to this page
$KT_authorizedUsers=" ";
$KT_authFailedURL=" ../../index.php";
$KT_grantAccess=0;
session_start();
if (isset($HTTP_SESSION_VARS["KT_Username"])) {
if (true || !(isset($HTTP_SESSION_VARS["KT_UserAuthorization"])) || $HTTP_SESSION_VARS["KT_UserAuthorization"]=="" || strpos($KT_authorizedUsers, $HTTP_SESSION_VARS["KT_UserAuthorization"])) {
$KT_grantAccess = 1;
}
}
if (!$KT_grantAccess) {
$KT_qsChar = "?";
if (strpos($KT_authFailedURL, "?")) $KT_qsChar = "&";
$KT_referrer = $PHP_SELF;
if (strlen($QUERY_STRING) > 0) $KT_referrer .= "?" . $QUERY_STRING;
$KT_authFailedURL = $KT_authFailedURL . $KT_qsChar . "accessdenied=" . urlencode($KT_referrer);
header("Location: $KT_authFailedURL");
exit;
}
?>
kann mir vielleicht jemand auf die sprünge helfen, was da nicht stimmt? ich bin ehrlich gesagt nicht besonders fit, was php angeht, ist das erste mal, daß ich damit arbeite...
wahrscheinlich nur ne kleinigkeit oder so ;-))
vielen dank für eure hilfe !!!!
grüße ,
daniel
Hallo!
daher habe ich bei diesen seiten mit hilfe des des DW-Ultradev Zugriffsbeschränkungen gesetzt.
Software ist natürlich nur so gut wie der Anwemder.
Warning: Cannot add header information - headers already sent by (output started at E:\Sites\Cheerleader_dyn_test\Sites\member_login\log-in_success.php:16) in E:\Sites\Cheerleader_dyn_test\Sites\member_login\log-in_success.php on line 18
Es werden Zeichen vor der Headern gesendet.
http://www.koehntopp.de/php/errors.html#fehler-header
Dies mußt Du gleich in die erste Zeile schreiben. Die Nummerierung läßt Du natürlich weg.
1. <?php
2. // *** Restrict Access To Page: Grant or deny access to this page
3. $KT_authorizedUsers=" ";
4. $KT_authFailedURL=" ../../index.php";
5. $KT_grantAccess=0;
6. .
7. .
8. usw.
MfG, André Laugks
Moin
Es werden Zeichen vor der Headern gesendet.
http://www.koehntopp.de/php/errors.html#fehler-header
Ja, undzwar die Fehlermeldung die du in deinem Quote großzügig weggelassen hast.
daniel: In Zeile 16 wird die Variable undefinierte $QUERY_STRING verwendet. Da du PHP so eingestellt hasst, dass es auch Warnungen über undefinierte Variablen anmeckert (das ist im übrigen allgemein eine gute Idee, da man so leicht Sicherheitslücken in Form von nicht initialisierten Variablen auf die Spur kommt) gibt es eben diese Fehlermeldung aus.
Die sorgt natürlich dafür, dass das mit dem Header nichts mehr wird.
Allgemein sollte $QUERY_STRING eine von den vordefinierten Variablen sein und dürfte gar nicht undefiniert auftauchen. Als schnellen Fix kannst du Zeile 16 durch
if(isset($QUERY_STRING)) $KT_referrer .= "?" . $QUERY_STRING;
ersetzen. Das prüft ab, ob die Variable überhaupt definiert ist, bevor es sie benutzt.
Wahrscheinlich liegt dein Problem aber woanders. Es könnte sein, dass register_globals bei dir abgeschaltet ist, woduch dann solche Probleme kommen. Führ einfach mal phpinfo() aus und such nach der Einstellung von register_globals.
Wenn es tatsächlich ausgeschaltet ist, kannst du entweder deinen Hoster bitten es einzuschalten (was aber nicht unbedingt eine gute Idee ist, da das Abschalten allgemein zur Sicherheit beiträgt) oder musst dein Skript umschreiben.
--
Henryk Plötz
Grüße aus Berlin
Hallo!
Ja, undzwar die Fehlermeldung die du in deinem Quote großzügig weggelassen hast.
Da war ich aber ein böser Junge. Diese Frage habe ich nicht ganz genau gelesn. Ich gelobe Besserung.
;-)
MfG, André Laugks