Avatar billede oldnick Nybegynder
01. november 2006 - 16:57 Der er 10 kommentarer og
1 løsning

Tjek af login med mysql

Hej Eksperter

Jeg har fundet det her login, men mangler det script hvor jeg tjekker på de "hemmelige" sider.

Det må være noget I hurtigt kan hjælpe med ;)
Gerne noget enkelt!

Tak :)


Her er mit script, det virker:

<?php
session_start();
if(isset($_POST['login'])){
    $brugernavn = $_POST['brugernavn'];
    $kodeord    = $_POST['kodeord'];
 
    mysql_connect('localhost','user','pass');
    mysql_select_db('user');
 
    $sql = "SELECT brugernavn,id
            FROM login
            WHERE brugernavn='$brugernavn'
            AND kodeord='$kodeord'";
     
    $result=mysql_query($sql);
    $brugerData=mysql_fetch_assoc($result);
    if($brugerData==FALSE){
    $error = "yes";
    }else {
        $_SESSION['loginId']=$brugerData['id'];
        header('Location:main.php');
    }
 
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Login</title>
<link href="../css/style.css" rel="stylesheet" type="text/css" />
</head>

<body>
<form name="login" action="<?php echo $_SERVER['PHP_SELF']?>" method="POST">
        <label>Brugernavn:</label>
        <input class="textinput" type="text" name="brugernavn"
        <?php
if ($error == "yes"){
        echo 'value="Forkert brugernavn eller kodeord!"';
}
?>>
        <label>Kodeord:</label>
        <input class="textinput"type="password" name="kodeord">
        <input class="submit" type="submit" name="login" value="" />
    </form>
Avatar billede udvikler Nybegynder
01. november 2006 - 18:13 #1
<?php
session_start();

$id = $_SESSION['loginId'];
$query = mysql_query("SELECT * FROM login WHERE id = '$id'") or die(mysql_error());
$row = mysql_num_rows($query);

if ($row < 1) {
    //ikke adgang
}else{
    //adgang
}
?>
Avatar billede oldnick Nybegynder
01. november 2006 - 19:02 #2
Kan det passe at der mangler en connection til databasen??
Hvis jeg går direkte ind på min test side har jeg adgang selv om jeg ikke har logget ind..?

Skal det ikke ligge før alt andet?


<?php
session_start();

mysql_connect('localhost','user','pass');
mysql_select_db('user');

$id = $_SESSION['loginId'];
$query = mysql_query("SELECT * FROM login WHERE id = '$id'") or die(mysql_error());
$row = mysql_num_rows($query);

if ($row < 1) {
    echo "ikke adgang";
}else{
    echo "adgang";
}
?>
Avatar billede udvikler Nybegynder
01. november 2006 - 19:38 #3
Ja selvfølgelig mangler der der :-)

Hmm, prøv at udskrive sessionen og se hvad den indeholder både når du er logget ind og når du ikke er. Skriv så til mig herinde hvad du spyttede ud.

Bagefter kan du prøve at vende den om (det virker underligt nok nogle gange)

altså sådan her:

if ($row > 0) {
    echo "adgang";
}else{
    echo "ikke adgang";
}
Avatar billede udvikler Nybegynder
01. november 2006 - 19:39 #4
Stavefejl: "hvad du spyttede ud" skulle have været "hvad den spyttede ud"
Avatar billede oldnick Nybegynder
01. november 2006 - 19:52 #5
Den virker sku, men det er bare fordi jeg har sat det hele oven over html start taget. Kan du evt. skrive hvordan en temp side med html tags og det hele skal se ud? Forstår du hvad jeg mener??
Avatar billede udvikler Nybegynder
01. november 2006 - 19:54 #6
Nej, jeg forstår ikke helt hvad du mener, men jeg vil da gerne prøve at hjælpe.
Avatar billede oldnick Nybegynder
01. november 2006 - 20:01 #7
Ok, jeg har selv prøvet:

Min hemmelige side ser sådan her ud:

<?php require "secure.inc.php";?>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Untitled Document</title>
<link href="../css/style.css" rel="stylesheet" type="text/css" />
</head>

<body>
<h1>Adminstration</h1>
</body>
</html>


Og min secure.inc.php:

<?php
session_start();

mysql_connect('localhost','u','p');
mysql_select_db('u');

$id = $_SESSION['loginId'];
$query = mysql_query("SELECT * FROM login WHERE id = '$id'") or die(mysql_error());
$row = mysql_num_rows($query);

if ($row < 1) {
    echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>:::IKKE ADGANG:::</title>
<link href="../css/style.css" rel="stylesheet" type="text/css" />
</head>

<body>
<h1>Du har ikke adgang til denne side...</h1>
</body>
</html>';
    exit;
}else{
    echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">';
}
?>

Er det helt f..ked eller ?? Det virker ihvt.

Og tak for hjælpen, det var kort og præsist, det er sådan et svar man kan bruge :)
Avatar billede udvikler Nybegynder
01. november 2006 - 20:06 #8
Aah på den måde, ja der skal ændres lidt, det er dog kun småfejl:

<?php require "secure.inc.php";?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Untitled Document</title>
<link href="../css/style.css" rel="stylesheet" type="text/css" />
</head>

<body>
<h1>Adminstration</h1>
</body>
</html>


Og min secure.inc.php:

<?php
session_start();

mysql_connect('localhost','u','p');
mysql_select_db('u');

$id = $_SESSION['loginId'];
$query = mysql_query("SELECT * FROM login WHERE id = '$id'") or die(mysql_error());
$row = mysql_num_rows($query);

if ($row < 1) {
    echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>:::IKKE ADGANG:::</title>
<link href="../css/style.css" rel="stylesheet" type="text/css" />
</head>

<body>
<h1>Du har ikke adgang til denne side...</h1>
</body>
</html>';
    exit;
}else{
    echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>:::ADGANG:::</title>
<link href="../css/style.css" rel="stylesheet" type="text/css" />
</head>

<body>
<h1>Velkommen til siden...</h1>
</body>
</html>';
}
?>
Avatar billede oldnick Nybegynder
01. november 2006 - 20:17 #9
Ok, jeg synes koden bliver lidt mærkelig når jeg gør det på din måde??
Den spytter dobbelt html tag:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>:::ADGANG:::</title>
<link href="../css/style.css" rel="stylesheet" type="text/css" />
</head>

<body>
<h1>Velkommen til siden...</h1>
</body>
</html><html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Untitled Document</title>

<link href="../css/style.css" rel="stylesheet" type="text/css" />
</head>

<body>
<h1>Adminstration</h1>
</body>
</html>
Avatar billede udvikler Nybegynder
01. november 2006 - 20:27 #10
Aah, det er min fejl, misforstod koden, nu er jeg med.

Efter at have forstået den ser jeg intet galt i din kode. Den er perfekt opbygget. ;-)
Avatar billede oldnick Nybegynder
01. november 2006 - 23:40 #11
Ok, 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