Avatar billede mr-xmas Nybegynder
02. oktober 2005 - 20:39 Der er 32 kommentarer og
1 løsning

login funger ikke helt

Hejsa
jeg har et login system som jeg vel mene der burde virke men det gør det ikke når jeg logger ind så bliver Brugernavn og password boxen der selv om der skulle komme det med log af og blabla koden er:

<?php
include("dbconnect.php");
if (isset($_COOKIE['xmas_brugernavn']) && isset($_COOKIE['xmas_password']))
{
    $brugernavn = ($_COOKIE['xmas_brugernavn']);
    $password  = ($_COOKIE['xmas_password']);
    $result = mysql_query("select id, brugernavn, password from xmassenger where brugernavn LIKE '".$brugernavn."' AND password LIKE '".$password."' LIMIT 1") or die (mysql_error());
    if(mysql_num_rows($query)==0)
    {
        echo "Brugeren findes ikke";
        exit();
    }
    $row = mysql_fetch_assoc($result);
    $_SESSION['brugernavn'] = $row['brugernavn'];
    $_SESSION['password']  = $row['password'];
    $_SESSION['id']        = $row['id'];
}

if(!isset($_SESSION['brugernavn']))
{
    echo "<form action='?side=login-ok.php' method='post'>
    <p><span class='style4'><b>Brugernavn:</b><br>
    </span>
    <input name='brugernavn' size='17'>
    <br>
    <span class='style4'><b>Password:</b><br>
    </span>    <span class='style4'>
    <input type='password' name='password' size='17'>
    </span><br>
    <br>
<input name='auto' type='checkbox' value='yes'><br>
    <input type='submit' name='login' value='Login'>
    </a>
    </p>
    </form>";
}
else
{
    include("dbconnect.php");
    $result = mysql_query("SELECT * FROM xmassenger WHERE id = '".$_SESSION[id]."' LIMIT 1") or die (mysql_error());
    if(mysql_num_rows($result)>0)
    {
        $row = mysql_fetch_assoc($result);
        ?>
Bla bla bla text her :)
        <br>
        <a href="?side=logud.php">Log af</a>
        <br>
        <?php
    }
    $q = mysql_query("SELECT * FROM xonline WHERE `brugernavn` = '".$_SESSION['brugernavn']."' LIMIT 1");
    if(mysql_num_rows($q) == 0)
    {
        mysql_query("INSERT INTO xonline (tid, brugernavn) VALUES (NOW(),'".$_SESSION['brugernavn']."')");
    }
    else
    {
        mysql_query("UPDATE xonline SET `tid` = NOW() WHERE `brugernavn` = '".$_SESSION['brugernavn']."'");
    }
     
    mysql_query("DELETE FROM xonline WHERE date_add(tid,interval 10 MINUTE) < NOW()");
}
?>
Avatar billede nielle Nybegynder
02. oktober 2005 - 20:53 #1
Du tjekker aldrig på hvad der kommer fra formen, og derfor logger du selvfølgelig heller ikke på. PÅrv med dette:

if (isset($_COOKIE['xmas_brugernavn']) && isset($_COOKIE['xmas_password']))
{
    $brugernavn = ($_COOKIE['xmas_brugernavn']);
    $password  = ($_COOKIE['xmas_password']);

    $result = mysql_query("SELECT id, brugernavn, password FROM xmassenger WHERE brugernavn = '" . $brugernavn . "' AND password = '" . $password . "' LIMIT 1") or die (mysql_error());
    if (mysql_num_rows($query) == 0)
    {
        echo "Brugeren findes ikke";
        exit();
    }

    $row = mysql_fetch_assoc($result);
    $_SESSION['brugernavn'] = $row['brugernavn'];
    $_SESSION['password']  = $row['password'];
    $_SESSION['id']        = $row['id'];
}
elseif (isset($_POST["login"]))
{
    $brugernavn = ($_POST['xmas_brugernavn']);
    $password  = ($_POST['xmas_password']);

    $result = mysql_query("SELECT id, brugernavn, password FROM xmassenger WHERE brugernavn = '" . $brugernavn . "' AND password = '" . $password . "' LIMIT 1") or die (mysql_error());
    if (mysql_num_rows($query) == 0)
    {
        echo "Brugeren findes ikke";
        exit();
    }

    $row = mysql_fetch_assoc($result);
    $_SESSION['brugernavn'] = $row['brugernavn'];
    $_SESSION['password']  = $row['password'];
    $_SESSION['id']        = $row['id'];
}
Avatar billede mr-xmas Nybegynder
02. oktober 2005 - 20:59 #2
så nu skriver den Brugeren findes ikke når jeg prøver at logge ind
Avatar billede nielle Nybegynder
02. oktober 2005 - 21:18 #3
Prøv lige med nogle degun-udskrifter:

if (isset($_COOKIE['xmas_brugernavn']) && isset($_COOKIE['xmas_password']))
{
    $brugernavn = $_COOKIE['xmas_brugernavn'];
    $password  = $_COOKIE['xmas_password'];

    $sql = "SELECT id, brugernavn, password FROM xmassenger WHERE brugernavn = '" . $brugernavn . "' AND password = '" . $password . "' LIMIT 1";
    echo "DEBUG: " . $sql . "<br>";

    $result = mysql_query() or die (mysql_error());
    if (mysql_num_rows($query) == 0)
    {
        echo "Brugeren findes ikke";
        exit();
    }

    $row = mysql_fetch_assoc($result);
    $_SESSION['brugernavn'] = $row['brugernavn'];
    $_SESSION['password']  = $row['password'];
    $_SESSION['id']        = $row['id'];
}
elseif (isset($_POST["login"]))
{
    $brugernavn = $_POST['xmas_brugernavn'];
    $password  = $_POST['xmas_password'];

    $sql = "SELECT id, brugernavn, password FROM xmassenger WHERE brugernavn = '" . $brugernavn . "' AND password = '" . $password . "' LIMIT 1";
    echo "DEBUG: " . $sql . "<br>";

    $result = mysql_query($sql) or die (mysql_error());
    if (mysql_num_rows($query) == 0)
    {
        echo "Brugeren findes ikke";
        exit();
    }

    $row = mysql_fetch_assoc($result);
    $_SESSION['brugernavn'] = $row['brugernavn'];
    $_SESSION['password']  = $row['password'];
    $_SESSION['id']        = $row['id'];
}
Avatar billede mr-xmas Nybegynder
02. oktober 2005 - 21:21 #4
nu skriver den DEBUG: SELECT id, brugernavn, password FROM xmassenger WHERE brugernavn = '' AND password = '' LIMIT 1
Brugeren findes ikke :(
Avatar billede nielle Nybegynder
02. oktober 2005 - 21:25 #5
Prøv lige denne variant og fortæl hvad den skriver:

if (isset($_COOKIE['xmas_brugernavn']) && isset($_COOKIE['xmas_password']))
{
    $brugernavn = $_COOKIE['xmas_brugernavn'];
    $password  = $_COOKIE['xmas_password'];

    $sql = "SELECT id, brugernavn, password FROM xmassenger WHERE brugernavn = '" . $brugernavn . "' AND password = '" . $password . "' LIMIT 1";
    echo "DEBUG #1: " . $sql . "<br>";

    $result = mysql_query() or die (mysql_error());
    if (mysql_num_rows($query) == 0)
    {
        echo "Brugeren findes ikke";
        exit();
    }

    $row = mysql_fetch_assoc($result);
    $_SESSION['brugernavn'] = $row['brugernavn'];
    $_SESSION['password']  = $row['password'];
    $_SESSION['id']        = $row['id'];
}
elseif (isset($_POST["login"]))
{
    $brugernavn = $_POST['xmas_brugernavn'];
    $password  = $_POST['xmas_password'];

    $sql = "SELECT id, brugernavn, password FROM xmassenger WHERE brugernavn = '" . $brugernavn . "' AND password = '" . $password . "' LIMIT 1";
    echo "DEBUG #2: " . $sql . "<br>";

    $result = mysql_query($sql) or die (mysql_error());
    if (mysql_num_rows($query) == 0)
    {
        echo "Brugeren findes ikke";
        exit();
    }

    $row = mysql_fetch_assoc($result);
    $_SESSION['brugernavn'] = $row['brugernavn'];
    $_SESSION['password']  = $row['password'];
    $_SESSION['id']        = $row['id'];
}
Avatar billede mr-xmas Nybegynder
02. oktober 2005 - 21:29 #6
så skriver den
DEBUG #2: SELECT id, brugernavn, password FROM xmassenger WHERE brugernavn = '' AND password = '' LIMIT 1
Brugeren findes ikke
Avatar billede nielle Nybegynder
02. oktober 2005 - 21:31 #7
Min fejl. Ret lige disse to linjer:

elseif (isset($_POST["login"]))
{
    $brugernavn = $_POST['xmas_brugernavn'];
    $password  = $_POST['xmas_password'];

- til:

elseif (isset($_POST["login"]))
{
    $brugernavn = $_POST['brugernavn'];
    $password  = $_POST['password'];
Avatar billede mr-xmas Nybegynder
02. oktober 2005 - 21:33 #8
den skriver
DEBUG #2: SELECT id, brugernavn, password FROM xmassenger WHERE brugernavn = 'Mr-Xmas' AND password = 'svenne' LIMIT 1
Brugeren findes ikke
Avatar billede nielle Nybegynder
02. oktober 2005 - 21:35 #9
Har du kigget efter i databasen om der eksistere en bruger med de oplysninger?
Avatar billede mr-xmas Nybegynder
02. oktober 2005 - 21:38 #10
ja for det er min ejen bruger
Avatar billede nielle Nybegynder
02. oktober 2005 - 21:43 #11
Databasen fortæller imidlertid at den ikke kan finde nogen bruger med præcis de to oplysninger. Kan det tænkes at du er kommet til at tilføje et mellemrums-tegn før eller efter en af oplysningerne? Den slags fejl er meget svære at finde.
Avatar billede nielle Nybegynder
02. oktober 2005 - 21:45 #12
Der er i hvert fald en fejl i koden. Begge sætningerne med:

if (mysql_num_rows($query) == 0)

- slak rettes til:

if (mysql_num_rows($result) == 0)
Avatar billede mr-xmas Nybegynder
02. oktober 2005 - 21:49 #13
DEBUG #2: SELECT id, brugernavn, password FROM xmassenger WHERE brugernavn = 'Mr-Xmas' AND password = 'svenne' LIMIT 1
Access denied for user: 'domæne.dk@localhost' (Using password: NO)
Avatar billede nielle Nybegynder
02. oktober 2005 - 21:51 #14
Det lyder jo unægtelig som om at du ikke har lov til at komme på databasen?!
Avatar billede mr-xmas Nybegynder
02. oktober 2005 - 21:52 #15
når ups to sek :) har glemt en ting :)
Avatar billede mr-xmas Nybegynder
02. oktober 2005 - 21:55 #16
hm næ det var ikke mig der havde lavet noget om :S den skriver det stadig
Avatar billede nielle Nybegynder
02. oktober 2005 - 21:56 #17
Det er i hvert fald ikke kodens skyld...
Avatar billede nielle Nybegynder
02. oktober 2005 - 21:57 #18
Hvordan ser din kode ud lige i øjeblikket?
Avatar billede mr-xmas Nybegynder
02. oktober 2005 - 21:59 #19
tror det er mit webhotel for nu kan jge ikke engang logge på min ftp
Avatar billede nielle Nybegynder
02. oktober 2005 - 22:00 #20
Det lyder rimeligt sandsynligt :^S
Avatar billede mr-xmas Nybegynder
02. oktober 2005 - 22:11 #21
så nu virker det selv om den stadig skriver debugt ting der men så når jeg går en side vidre så logger den ud igen
:(
Avatar billede nielle Nybegynder
02. oktober 2005 - 22:14 #22
Debug udskrifetn skal du selvfølgelig slette igen.

På de nye sider skal du altis starte med en session_start:

http://dk2.php.net/session_start

- ellers læser den ikke sessionen ind.
Avatar billede mr-xmas Nybegynder
02. oktober 2005 - 22:17 #23
når ja for sa*** har glemt at sætte det oppe foroven :)
Avatar billede mr-xmas Nybegynder
02. oktober 2005 - 22:20 #24
du smækker lige et svar op og så siger jeg mange tak :)
Avatar billede nielle Nybegynder
02. oktober 2005 - 22:21 #25
Svar :^)
Avatar billede mr-xmas Nybegynder
02. oktober 2005 - 22:23 #26
så har det sikkert os virket helt fra starten bare jeg havde sat det i starten :)
Avatar billede nielle Nybegynder
02. oktober 2005 - 22:26 #27
Det tror jeg nu faktisk ikke. Dels havde du den fejl jeg angav i 02/10-2005 21:45:15 og dels så er der ikke noget sted i koden hvor du tager imod inpur fra den submittede form.

Og tak for point :^)
Avatar billede mr-xmas Nybegynder
02. oktober 2005 - 22:29 #28
hvordan kan jeg lave så alle de navne som står i xonline kommer til at stå ind her jeg har prøve sådan her men den skal ikke skrive logud anden til sidst hvordan kan det laves

    include("dbconnect.php");
    $result = mysql_query("SELECT * FROM xonline WHERE id = '".$_SESSION[id]."' LIMIT 1") or die (mysql_error());
    if(mysql_num_rows($result)>0)
    {
        $row = mysql_fetch_assoc($result);
        ?>
Online:<br>
<?php echo("<a href=skriv.php&id=$brugernavn>$brugernavn</a>"); ?>   
        <br>
        <a href="?side=logud.php">Logud</a>
        <br>
Avatar billede nielle Nybegynder
02. oktober 2005 - 22:35 #29
Prøv lige at formulere den sætning en gang til. ;^)
Avatar billede mr-xmas Nybegynder
02. oktober 2005 - 22:39 #30
altså jeg skal have den til at hente alle brugernavne fra tabelen xonline :) så de står i en række ned :)
og logud skal kun stå der en gang helt for neden :)
Avatar billede nielle Nybegynder
02. oktober 2005 - 22:48 #31
<?
include("dbconnect.php");
$result = mysql_query("SELECT * FROM xonline ORDER BY id ASC") or die (mysql_error());

echo "Online:<br>";
while ($row = mysql_fetch_assoc($result))
{
    echo("<a href='skriv.php&id=" . $row["id"] . "'>" . $row["brugernavn"] . "</a><br>");
}
?>
Avatar billede mr-xmas Nybegynder
02. oktober 2005 - 22:50 #32
jamen jeg siger endnu engang tak for det virker sku os :)
Avatar billede nielle Nybegynder
02. oktober 2005 - 22:52 #33
:^)
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