Avatar billede n_j_b Nybegynder
18. juli 2010 - 13:45 Der er 6 kommentarer og
1 løsning

PHP/AJAX - Redirect problem ved login.

Jeg har problem med at lave en redirect funktion med nedenstående. Jeg vil gerne have at, hvis brugeren er logget ind, så bliver brugeren automatisk redirected til anden url.
Jeg har prøvet at sætte

<meta http-equiv=\"refresh\" content=\"0;URL=http://www.url.dk.dk\">
og
header('Location: http://www.url.dk/');

ind efter "if($count==1){" i login_call.php. Den sender rigtigt nok "Du er logget ind" tilbage, men intet redirect.

Hvad gør jeg forkert?

__________________________________________________

function Login() {
        var brugernavn = $("input[name=brugernavn]").val();
        var adgangskode = $("input[name=adgangskode]").val();
        var type_login = $("input[name=type_login]").val();
        if( brugernavn == false || adgangskode == false ) {
        $("#login_div").html("Indtast brugernavn og adgangskode!");
        } else {
            $.ajax({
               
                type: "POST",
                url: "login_call.php",
                data: "brugernavn=" + brugernavn + "&adgangskode=" + adgangskode + "&type_login=" + type_login,
                timeout: 5000,
                error: function() { alert("Fejl"); },
                beforeSend: function() { $("#login_div").html("<img src='ajax-loader2.gif' style='margin:2px;' />"); },
                success: function( data ) { $("#login_div").html(data); }
                               
                        })
                            }
                        }

    Brugernavn:
    <input type="text" id="brugernavn" name="brugernavn" />
    Adgangskode:
    <input type="password" name="adgangskode" id="adgangskode" />
    <input type="hidden" name="type_login" id="type_login" value="login" />
    <input type="button" value="Log ind" class="button_login" onclick="Login()" />
    <div id="login_div"></div>
_____________________________________________________________________________
Login_call.php

Mysql query... Hvis $count er lig med 1, så er man logget ind.

if($count==1){
echo"Du er logget ind";
$_SESSION['bruger']=$b;
}
else {
echo "Ukorrekte adgangsoplysninger!";
}
Avatar billede wanze Nybegynder
18. juli 2010 - 14:29 #1
Du bliver nødt til at komme med nogle flere oplysninger. Hvilken fejl får du? Hvis du sender tekst ud før du laver din header(), så burde du få en fejl om, at headerinformationerne allerede er blevet sendt.

header() er helt klart den bedste løsning, men dit html-redirect burde også fungere. Er du sikker på, at det redirect bliver skrevet ud i koden det rigtige sted? Derudover det efterhånden mange år siden jeg har brugt html-redirect, så jeg husker ikke, om det overhovedet er muligt at få den til at redirecte 0 sekunder efter, at siden er indlæst.
Avatar billede n_j_b Nybegynder
18. juli 2010 - 15:26 #2
Jeg får faktisk ikke vist nogen engentlige fejl så som, at headerinformationerne allerede er blevet sendt.
Når jeg kommunikerer gennem min AJAX funktion til PHP-filen, så får jeg vist informationer fra login_call.php rigtigt nok inde i <div id="login_div"></div>. Men det ser ud til, at den kun vil give ren tekst tilbage i div'en.

Jeg har i øvrigt nogle andre sider, hvor jeg benytter redirect efter 0 secunder og der virker det.
Avatar billede wanze Nybegynder
18. juli 2010 - 16:06 #3
Hvis du får fil1 henter data fra fil2 gennem AJAX, og fil2 er sat til at redirecte til fil3, så vil fil1 jo blot hente data fra fil3 - du kan naturligvis ikke få fil1 til at redirecte til fil3 på den måde.

En anden løsning kunne være at bruge window.location = "http://..."[/font].
Avatar billede n_j_b Nybegynder
18. juli 2010 - 16:46 #4
Jeg pøver ikke på, at få fil2 til redirecte til fil3. Jeg prøver hive information fra fil2 over til fil1, sådan at når fil1 modtager info fra fil2, så vil det jo være fil1 der redirecter til fil3. Hvis det er fil2 der redirecter til, fil3 så er det jo også fint nok for den viser jo kun redirect-funktionen, hvis betingelserne er opfyldt for godkendt login. Den henter jo alle andre informationer fra fil2 uden at redirecte, da betingelserne for godkendt login ikke vil være opfyldt.

Hvis det ikke kan lade sig gøre, kan du så fortælle mig hvordan jeg skal integrerer window.location = "http:// på min side.
Avatar billede wanze Nybegynder
18. juli 2010 - 17:53 #5
Nej, netop. Det er ikke det du prøver på, men det er det du gør.

Du kan vel lave noget med, at du får AJAX'en til at læse indholdet, og reagere derefter. Det er vel noget a la:
if (data == "Redirect") window.location = "http://...."[/pre]
		
Avatar billede n_j_b Nybegynder
18. juli 2010 - 19:00 #6
Tusind tak! Det var lige det jeg manglede. Det fortjener du nogen point for..
Avatar billede wanze Nybegynder
18. juli 2010 - 19:24 #7
Selv tak! :)
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