Avatar billede RasmusTheR Seniormester
20. september 2014 - 19:35 Der er 10 kommentarer og
1 løsning

Hjælp med login, Genindlæs login side.

Jeg er ved at lave et login system til min side.

Når man skal logge ind åbnes der en lightbox hvor man indtaster bruger og kode. De bliver tjekket i Ajax. I man ajax fil har jeg nedenstående script.

Hvis password og bruger passer sammen skriver den "* Du er nu logget ind."
Hvordan får jeg den i stedet til at genindlæse siden, så den kan blive tilpasset i forhold til sessions variablerne?



if( empty($brugernavn) || empty($password) )
            echo "Username and Password Mandatory - from PHP";
        else
        {
        $sql = "SELECT * FROM bruger WHERE(
                brugernavn='$brugernavn'
                AND
                password='$password')";


        $res = mysql_query($sql);
        $row = mysql_fetch_array($res);

        if( $row[0] > 0 ) {
        $_SESSION['id']=$row['id'];
        $_SESSION['fornavn']=$row['fornavn'];
        $_SESSION['mellemnavn']=$row['mellemnavn'];
        $_SESSION['efternavn']=$row['efternavn'];
        $_SESSION['koen']=$row['koen'];
        $_SESSION['status']=$row['status'];
        echo "* Du er nu logget ind.";}
        else
        echo "* Brugernavn eller kodeord blev ikke genkendt!";
          }
Avatar billede keysersoze Guru
20. september 2014 - 20:04 #1
Hvis du benytter ajax er det hér og ikke serverside du skal sørge for reload - du kan benytte location.reload();
Avatar billede RasmusTheR Seniormester
20. september 2014 - 21:26 #2
Jeg har nedenstående script på hovedsiden: Kan det ændres så man reloader siden hvis bruger og kode passer sammen?

Er helt ny i PHP og Jquery :-/

      $("button#submit").click( function() {

          if( $("#brugernavn").val() == "" || $("#brugernavn").val() == "" )
            $("div#login_answer").html("Indtast både brugernavn samt password");
          else
            $.post( $("#form_login").attr("action"),
                $("#form_login :input").serializeArray(),
                function(data) {
                  $("div#login_answer").html(data);
                });

            $("#form_login").submit( function() {
                  return false;   
            });
    });

Scriptet er fundet her:
http://technotip.com/2320/login-form-jquery-php-ajax/
Avatar billede keysersoze Guru
20. september 2014 - 22:30 #3
send en boolean fremfor en tekststreng tilbage - er den true er login gået godt og du viderestiller, ellers ikke.
Avatar billede RasmusTheR Seniormester
20. september 2014 - 23:21 #4
Kan du give et eksempel på hvordan jeg sender en boolean i stedet?
Avatar billede keysersoze Guru
21. september 2014 - 00:18 #5
jeg arbejder ikke med php - men mon ikke det bare er

echo true;

og hvis du har behov for flere returværdier så arbejd med tal i stedet

echo "1";
Avatar billede Slater Ekspert
21. september 2014 - 09:02 #6
Booleans kan ikke udskrives som tekst og dermed returneres som AJAX-svar, så brug 1 og 0.
Avatar billede RasmusTheR Seniormester
21. september 2014 - 20:21 #7
Jeg har sat denne linje ind i mit AJAX script

echo "1";

Men hvordan tilretter jeg mit nedenstående script så det reloader siden når der bliver returneret "1"?

Har forsøgt men kan ikke få noget til at virke :-(

    $("button#submit").click( function() {

          if( $("#brugernavn").val() == "" || $("#brugernavn").val() == "" )
            $("div#login_answer").html("Indtast både brugernavn samt password");
          else
            $.post( $("#form_login").attr("action"),
                $("#form_login :input").serializeArray(),
                function(data) {
                  $("div#login_answer").html(data);
                });

            $("#form_login").submit( function() {
                  return false; 
            });
    });
Avatar billede keysersoze Guru
23. september 2014 - 09:22 #8
hvad har du forsøgt - det gør det nok lettere for os at se hvor de går galt.
Avatar billede RasmusTheR Seniormester
23. september 2014 - 21:45 #9
Jeg har forsøgt at indsætte if sætning:
if data = 1 {
$("div#login_answer").html(data);
}
i nedenstående script, Men nu får jeg en blank side hvor der kun står "1"


      $("button#submit").click( function() {

          if( $("#brugernavn").val() == "" || $("#brugernavn").val() == "" )
            $("div#login_answer").html("Indtast både brugernavn samt password");
          else
            $.post( $("#form_login").attr("action"),
                $("#form_login :input").serializeArray(),
                function(data) {
                  //$("div#login_answer").html(data);
                      if data = 1 {
                          $("div#login_answer").html(data);
                    }
                 
                });

            $("#form_login").submit( function() {
                  return false;   
            });
    });
Avatar billede keysersoze Guru
23. september 2014 - 22:34 #10
Når nu der er et if-statement i koden i forvejen burde du næsten kunne aflure nogle tricks derfra i stedet for at forsøge at opfinde en ny syntaks - du skal nok nærmere skrive

if (data == 1) {

eller hvis returværdien er en string så

if (data == '1') {
Avatar billede RasmusTheR Seniormester
29. september 2014 - 21:30 #11
Super, tak for hjælpen :-)
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

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