Avatar billede reffo Nybegynder
27. juli 2005 - 13:19 Der er 16 kommentarer og
1 løsning

Redirection limit for this url exceeded

Hejhej eksperter.

Jeg sidder og roder med mit eget lille CMS, og skal have lavet password beskyttelse. Jeg lavede først med .htaccess, men da man ikke kan gemme mange infos om brugeren og ændre i dem lige så let med mysql og sessions blev det skrottet. Nu har jeg så sat databasen op og krypteret passwords og det hele, og det fungerer fint.

Nu er problemet så at jeg i hver eneste fil under det directory der før bare var beskyttet automatisk af .htaccess skal have et

IF(!$_SESSION[userid]) { HEADER("Location: login.php"); EXIT;}

og nu kan jeg ikke loade siden for den som overskriften siger

Redirection limit for this url exceeded. Unable to load the requested page. This may be caused by cookies that are blocked.

Hvad i alnissens navn gør man så? Kan man ikke beskytte filerne (lyder usandsynligt) eller skal man bare gøre det på en anden smartere måde?
Avatar billede coderdk Praktikant
27. juli 2005 - 13:25 #1
Prøv med:

if ( empty( $_SESSION['userid'] ) && basename( $_SERVER['SCRIPT_NAME'] ) != 'login.php' )
{
  header("Location: login.php");
  exit;
}
Avatar billede coderdk Praktikant
27. juli 2005 - 13:26 #2
Forklaring: Den beskyttelse skal jo ikke være på login.php - Så bliver den jo bare ved med at redirecte til sig selv...
Avatar billede reffo Nybegynder
27. juli 2005 - 13:27 #3
Den er ikke på login.php der redirecter den til index.php hvis $_SESSION[userid] findes
Avatar billede coderdk Praktikant
27. juli 2005 - 13:29 #4
Hvordan ser redirect koden så ud i login.php? For den bliver ved med at redirecte ;)
Avatar billede reffo Nybegynder
27. juli 2005 - 13:29 #5
Jeg har en index fil der så henter undersiderne ved hjælp af variabler, og den er password beskyttet, men undersiderne skal ikke kunne hentes bare ved at skrive stien på dem. Derfor skal alle filerne (undtagen login.php) have
Avatar billede reffo Nybegynder
27. juli 2005 - 13:29 #6
Ups...

...have

IF(!$_SESSION[userid]) { HEADER("Location: login.php"); EXIT;}

indskrevet.
Avatar billede reffo Nybegynder
27. juli 2005 - 13:30 #7
Sådan ser den ud i login.php.

IF (isset($_SESSION[userid]))

            {

        HEADER("Location: index.php");
        EXIT;

            }
Avatar billede coderdk Praktikant
27. juli 2005 - 13:33 #8
Prøv lige med:

if ( !empty( $_SESSION['userid'] ) )
{
    header( "Location: index.php" );
    exit;
}

Hvis det ikke virker så prøv lige:

if ( !empty( $_SESSION['userid'] ) )
{
    echo "Vil redirekte. SESSION:<pre>"; var_dump( $_SESSION ); echo "</pre>";
    exit;
}


Og samme princip i den anden
Avatar billede coderdk Praktikant
27. juli 2005 - 13:34 #9
Og har du overvejet i stedet for at redirekte til login.php bare at require den?

if ( empty( $_SESSION['userid'] )
{
  require( 'login.php' );
  exit;
}
Avatar billede reffo Nybegynder
27. juli 2005 - 13:35 #10
Ja, men så kommer resten af indholdet jo med, for vil ikke lave en ELSE over resten af indholdet...
Avatar billede reffo Nybegynder
27. juli 2005 - 13:36 #11
Efter Fejl beskeden at dømme er der jo for mange redirections, så tror ikke det hjælper bare at omskrive det.

Dine to forslag duede desværre ikke...
Avatar billede reffo Nybegynder
27. juli 2005 - 14:07 #12
Ingen der kender en løsning?
Avatar billede coderdk Praktikant
27. juli 2005 - 14:14 #13
Hvad skrev den så ud? Hvad var indholdet af sessionen? Du skal ikke indkapsle det i en else, den skal bare være øverst - Den tager ikke resten af indholdet med når der er en exit...
Avatar billede reffo Nybegynder
27. juli 2005 - 14:23 #14
Nårh jeg require den kan den slet ikke åbne mappen med bliver bare på den side jeg er på, om det så er google eller min egen...
Avatar billede reffo Nybegynder
27. juli 2005 - 15:55 #15
Hurra, fik det til at du med din require... Smider du et svar? Tak for hjælpen.
Avatar billede coderdk Praktikant
27. juli 2005 - 15:56 #16
Ah fedt :)
Avatar billede reffo Nybegynder
27. juli 2005 - 16:01 #17
Jepper, det er super lækkert :D Tak for hjælpen. Altid godt med noget input ude fra når hovedet brænder sammen :P
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester