Avatar billede hav0k Nybegynder
28. september 2005 - 22:05 Der er 4 kommentarer og
1 løsning

Fejl i mit login script?

<?
if(isset($_POST['login_submit'])) { //Tester om brugeren kommmer fra login form
    $postnick = $_POST['nick'];
    $postpw = $_POST['pw']; //For læservenligheden overføres post variablerne til normale variabler
    $password = md5($postpw);
       
    $query = mysql_query("SELECT id, nick, pw FROM users WHERE nick = '$postnick' AND pw = '$postpw'") or die(mysql_error());
   
    $number = mysql_num_rows($query); //Tæller antaller af resultater
    echo $number;
        if($number == 1) { //Hvis der kun er et resultat logged in
            while ($row = mysql_fetch_array ($query)) {
                $check = $row["pw"];
            }
            if (($password === md5($check)) {
            session_register("nick");
            session_register("pw");
            echo "<meta http-equiv=\"refresh\" content=\"0\";URL=\"index.php/?page=admin\">";
           
        }else{
            $loginstatus = "Forkert brugernavn/kodeord!";
        }
    }
}

if(!$_SESSION["nick"] && !$_SESSION["pw"]){
?>
Login page:<br><br>
<form method="post" action="?page=login" name="login">
Brugernavn!<br>
<input type="text" name="nick" size="30" maxlength="30"><br>
Adgangskode!<br>
<input type="password" name="pw" size="30" maxlength="30"><br>
<input type="hidden" name="login_submit" value="1">
<input type="submit" value="Log ind" name="submit"></form><br>
<?php echo $loginstatus;
}else{
    echo "Klik her for at <a href=\"page=login&action=logout\">logge ud!</a>";

if($action == "logout"){
    logout();
}
}
?>

Hvad har jeg gjort forkert..? der er bare en blank skærm når jeg kører scriptet..
Avatar billede jakobdo Ekspert
28. september 2005 - 22:14 #1
Prøv lige at ret: $loginstatus = "Forkert brugernavn/kodeord!";
til: echo "Forkert brugernavn/kodeord!";
Derudover vil jeg også anbefale dig at benytte $_SESSION og ikke session_register
Kig evt på: www.php.net/session_start
Avatar billede hav0k Nybegynder
28. september 2005 - 22:47 #2
Jeg har ændret lidt på scriptet.. Jeg kan nu logge ind, men ikke logge ud (den bliver ved med at stå og opdatere siden (uden at gå til index.php/?page=main) og fjerner IKKE sessions'ne: id, nick og pw - og indholdet bliver stadig ikke vist på admin siden.

Login.php:

<?
if(isset($_POST['login_submit'])) { //Tester om brugeren kommmer fra login form
echo $_POST['login_submit'];
    $postnick = $_POST['nick'];
    $postpw = $_POST['pw']; //For læservenligheden overføres post variablerne til normale variabler
    $postpw = md5($postpw);
       
    $query = mysql_query("SELECT id, nick, pw FROM users WHERE nick = '$postnick' AND pw = '$postpw'") or die(mysql_error()); //Spørger efter ID
   
    $login_number = mysql_num_rows($query); //Tæller antaller af resultater
    echo $login_number;
        if($login_number == 1) { //Hvis der kun er et resultat logged in
            while ($row = mysql_fetch_array ($query)) {
                $_SESSION["id"] = $row["id"];
                $_SESSION["nick"] = $row["nick"];
                $_SESSION["pw"] = $row["nick"];
            }
            echo "<meta http-equiv=\"refresh\" content=\"0\";URL=\"index.php/?page=admin\">";
           
        }else{
            $loginstatus = "Forkert brugernavn/kodeord!";
        }
}

if(!$_SESSION["id"] || !$_SESSION["nick"] || !$_SESSION["pw"]){
?>
Login page:<br><br>
<form method="post" action="?page=login" name="login">
Brugernavn!<br>
<input type="text" name="nick" size="30" maxlength="30"><br>
Adgangskode!<br>
<input type="password" name="pw" size="30" maxlength="30"><br>
<input type="hidden" name="login_submit" value="1">
<input type="submit" value="Log ind" name="submit"></form><br>
<?php echo $loginstatus;
}else{
    echo "Klik her for at <a href=\"?page=login&action=logout\">logge ud!</a>";

if($_GET["action"] == "logout"){
    echo "hej hej";
    logout();
    echo $_SESSION["id"];
    echo $_SESSION["nick"];
    echo $_SESSION["pw"];
}
}
?>


Admin.php:

$nick = $_SESSION["nick"];
$pw = $_SESSION["pw"];
$query = mysql_query "SELECT * FROM users WHERE nick = '$nick'";
while ($row = mysql_fetch_array ($query)) {
$check = $row["pw"];
}
if ($pw !== $check OR !$result) {
session_destroy();
echo "<meta http-equiv=\"refresh\" content=\"0\";URL=\"index.php?page=main\">";
exit;
}else{
echo "Velkommen til admin-området!";

}

og logout funktionen fra db.php:


    function logout(){
        session_unregister($_SESSION['id']);
        session_unregister($_SESSION['nick']);
        session_unregister($_SESSION['pw']);
        echo "<meta http-equiv=\"refresh\" content=\"0\";URL=\"index.php/?page=main\">";
    }
Avatar billede jakobdo Ekspert
29. september 2005 - 09:29 #3
Ret din function logout()
til:
function logout()
{
  session_start();

  $_SESSION = array();

  if (isset($_COOKIE[session_name()]))
  {
    setcookie(session_name(), '', time()-42000, '/');
  }

  session_destroy();
}
Avatar billede hav0k Nybegynder
02. oktober 2005 - 19:22 #4
Ligemeget.. der var huller overalt som jeg selv har lappet nu. Lukker
Avatar billede jakobdo Ekspert
03. oktober 2005 - 08:08 #5
Jeg takker for point!
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