Avatar billede Leoking Nybegynder
15. juni 2011 - 11:13 Der er 20 kommentarer og
1 løsning

Php database brugerlogin.

Min login skriver at felterne ikke er udfyldt. Selvom de er 100% udfyldt.

Min kode er her:

<?php

//forbindelsen til databasen.

$conn = mysqli_connect("localhost","root","","elev05") or die (mysqli_error($conn));
mysqli_select_db($conn,$users);



//Hvis login-formen er submit går koden her igang.

if (isset($_POST['login'])) {
    $mail = addslashes(htmlspecialchars($_POST['mail']));
    $password = addslashes(htmlspecialchars($_POST['password']));
    if (!empty($mail) && !empty($password)) {
   
$sql = 'SELECT * from users where mail = "'.$mail.'" and password = "'.$password.'"';
       
        $query = mysqli_query($conn, $sql);
       
        $nums = mysqli_num_rows($query);
   
        if ($nums >= 1) {
       
            $result = mysqli_fetch_array($query);
           
            $_SESSION['mail']     = $result['mail'];
            $_SESSION['password']     = $result['password'];
           
            return true;
           
           
              // Hvis login er godkend laver den en cookie
$_POST['mail'] = stripslashes($_POST['mail']);

$hour = time() + 3600;

setcookie(ID_my_site, $_POST['mail'], $hour);

setcookie(Key_my_site, $_POST['password'], $hour);   

              //Videre stiller dem til brugersidens
            header("Location: brugerside.php");
           
           
       
        } else {
       
            $_SESSION['mail'] = "";
            $_SESSION['password'] = "";
           
            return false;
        };
    } else {
   
        echo "Alle felter skal udfyldes!"; }

}

?>
Avatar billede soduno Novice
15. juni 2011 - 11:17 #1
$_POST['login'] refererer til en submit knap?
Avatar billede majbom Novice
15. juni 2011 - 11:38 #2
-> #1 - meget tyder på det i hvert fald

-> #0 - den knap du trykker på når du logger ind, har den  et navn? (den skal hedde 'login')
Avatar billede Leoking Nybegynder
15. juni 2011 - 12:38 #3
<form name="login" method="post" action="check.php">
<fieldset>
<legend>Bruger Login</legend>
Brugernavn:<br>
    <input type="text" value="Indtast email" name="mail " /><br>
Adgangskode:<br>
    <input type="password" value="Adgangskode" name="password" /><br>
    <input type="submit" name="login" value="Log ind" />
    </fieldset>
</form>
Avatar billede Leoking Nybegynder
15. juni 2011 - 12:38 #4
Det hedder den allerede :)
Avatar billede majbom Novice
15. juni 2011 - 12:43 #5
prøv lige at fjern mellemrummet i name her:

<input type="text" value="Indtast email" name="mail " />
Avatar billede majbom Novice
15. juni 2011 - 12:43 #6
(efter mail)
15. juni 2011 - 12:43 #7
Jeg har svært ved at gennemskue syntaksen din kode.  Du har i en blok (mellem to krøllede paranteser) først return true; og derefter kode til at danne cookie.  Koden efter return vil (for mig at se) ikke blive nået, så selv om du får koden til at genkende, at du har udfyldt felterne, vil der stadig være problemer.  Jeg forstår heller ikke, at du direkte efter en krøllet parantes har simikolon, altså };

Så jeg foreslår at du gør to ting:  Lad os se koden for den formular hvor du indfylder login data, og få syntaksen i den viste kode i orden.
15. juni 2011 - 12:45 #8
Indlæg #3, 4, 5, og 6 så jeg ikke før jeg sendte mit.  Lad mig lige kikke på dem.
15. juni 2011 - 12:47 #9
Jeg ser et potentielt problem i din login kode, formen og submit knappen har samme navn, nemlig login.  Prøv om det hjælper med at forandre et af de navne.
Avatar billede Leoking Nybegynder
15. juni 2011 - 12:57 #10
nu ser koden sådan ud :

<form method="post" name="loginform">
<fieldset>
<legend>Bruger Login</legend>
Brugernavn:<br>
    <input type="text" value="Indtast email" name="mail" /><br>
Adgangskode:<br>
    <input type="password" value="Adgangskode" name="password" /><br>
    <input type="submit" name="login" value="Log ind" />
    </fieldset>
</form>

// <?php

//forbindelsen til databasen.

$conn = mysqli_connect("medieskolerne.dk","elev05","8318df","elev05") or die (mysqli_error($conn));



//Hvis login-formen er submit går koden her igang.

if (isset($_POST['login'])) {
    $mail = addslashes(htmlspecialchars($_POST['mail']));
    $password = addslashes(htmlspecialchars($_POST['password']));
    if (!empty($mail) && !empty($password)) {
   
$sql = 'SELECT * from users where mail = "'.$mail.'" and password = "'.$password.'"';
       
        $query = mysqli_query($conn, $sql);
       
        $nums = mysqli_num_rows($query);
   
        if ($nums >= 1) {
       
            $result = mysqli_fetch_array($query);
           
            $_SESSION['mail']     = $result['mail'];
            $_SESSION['password']     = $result['password'];
           
            return true;

        } else {
       
            $_SESSION['mail'] = "";
            $_SESSION['password'] = "";
           
            return false;
        };
    } else {
   
        echo "Alle felter skal udfyldes!"; }

}

?>

Men hvor skal jeg ligge min header ind for den bliver videre stillet? ..

Den skriver ikke en fejl nu med "nul-stiller" login formen.
Avatar billede Leoking Nybegynder
15. juni 2011 - 13:00 #11
men men "nul-stiller" login formen. **
Avatar billede majbom Novice
15. juni 2011 - 13:15 #12
du roder også meget rundt i det.

du bruger addslashes og htmlspecialchars og samtidig bruger du mysqli.

når du alligevel er i gang med mysqli, bør du benytte dig af prepared statements, så er din login-formular også mere sikker og du kan droppe addslashes og htmlspecialchars.

det giver heller ikke meget mening at bruge return hvis ikke koden ligger i en funktion.

desuden bruger du ; efter } (i if-sætningerne) - det er også en fejl.

de steder hvor du har return skal du have en header på i stedet, som så kan sende brugeren tilbage eller videre...
Avatar billede Leoking Nybegynder
15. juni 2011 - 13:23 #13
Kan jeg få dig til at give et par eksempler på hvad du mener? ..

:) i forhold til koderne
Avatar billede majbom Novice
15. juni 2011 - 13:59 #14
jeg har ikke tid til at lave det for dig, men du kan jo kigge på prepared statements: http://php.net/manual/en/mysqli.prepare.php

fik du fat i det med header?
Avatar billede Leoking Nybegynder
15. juni 2011 - 15:49 #15
svar tak
Avatar billede majbom Novice
15. juni 2011 - 15:52 #16
svar selv tak :)
Avatar billede soduno Novice
15. juni 2011 - 16:56 #17
Ville lige fortælle dig at du har gjort dit login til mysql server synligt for alle os - Bare til info!
Avatar billede majbom Novice
15. juni 2011 - 18:29 #18
og alle oplysningerne til databasen - nok ikke så heldigt :)
Avatar billede soduno Novice
15. juni 2011 - 18:35 #19
Skal nok lade være med at gå ind på din PHPmyadmin selvom det er svært at lade være :P
Avatar billede Leoking Nybegynder
16. juni 2011 - 08:43 #20
Jaa det er sku en ret stor fail -.- .

Er taknemmelig for at du/I ikke går ind på den xD
Avatar billede majbom Novice
16. juni 2011 - 08:53 #21
jeg gør ikke, men måske andre gør...

jeg ville nok anmelde indlægget så en (ko)admin kan redigere lidt i det... (hvis det virker)
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
Computerworld tilbyder specialiserede kurser i database-management

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