Avatar billede supersquirrel Nybegynder
15. november 2007 - 19:07 Der er 7 kommentarer og
1 løsning

Dobbelt login - hvorfor?

Jo altså,
Nu har jeg efter noget tid lagt mærke til at jeg hver gang skal logge ind 2 gange inden min session bliver sat, og jeg vil sige at det er pga. følgene login/tidskode.

så hvis en havde tid til lige at kigge igennem og måske komme en idé til forbedringer? :)

Her er mit login.php:
if($_GET[action] == "login"){
    if($_POST[brugernavn] != "" && $_POST[kodeord] != ""){
        $newpass = md5($_POST[kodeord]);
        $sql = mysql_query("SELECT * FROM ym_community WHERE brugernavn='$_POST[brugernavn]' AND adgangskode='$newpass' LIMIT 1") or die("Fejl: " . mysql_error());
        if(mysql_num_rows($sql) == 1){
            while($brugerLogin = mysql_fetch_assoc($sql)){
                $_SESSION[brugernavn] = $brugerLogin[brugernavn];         
                ?>
            <table border="0" cellspacing="0" cellpadding="0" width="446" style="border:1px solid #000000; margin-bottom:5px">
                <tr>
                    <td align="center" height="35"><font color="green"><b>Du er blevet logget ind med succes!:)</b></font></td>
                </tr>
            </table>
                <?
                $time = explode(" ",microtime());
                $array1 = $time[0];
                $array2 = $time[1];
             
                    mysql_query("UPDATE ym_community SET time_date='$array2' WHERE ip LIKE '$ip'") or die("Fejl: " . mysql_error());
                    mysql_query("UPDATE ym_community SET site_status='online' WHERE ip LIKE '$ip'") or die("Fejl: " . mysql_error());
                    mysql_query("UPDATE ym_community SET last_login='$lastLogin' WHERE brugernavn='$_POST[brugernavn]'") or die("Fejl: " . mysql_error());             

                print "<script>document.location.href='index.php'</script>";
        }}else{
            print "Forkert brugernavn eller kodeord";
    }}else{
        print "Du skal udfylde alle felter :))";
}}


Oooog, her er det der opdaterer timetingen i header.php:
$ip = $_SERVER[REMOTE_ADDR];
$time = explode(" ",microtime());
$array1 = $time[0];
$array2 = $time[1];
$r = mysql_fetch_row( mysql_query("SELECT * FROM ym_community WHERE ip LIKE '$ip' AND site_status='online'"));
mysql_query("UPDATE ym_community SET site_status='offline' WHERE time_date < $array2 - 400") or die("Fejl: " . mysql_error());
mysql_query("UPDATE ym_community SET time_date='$array2' WHERE ip='$ip'") or die("Fejl: " . mysql_error());
$sql = mysql_query("SELECT * FROM ym_community where ip='$ip'") or die("Fejl: " . mysql_error());
while($onlineTjek = mysql_fetch_assoc($sql)){
    if($onlineTjek[site_status] == "offline"){
        session_destroy();
    }
}
Avatar billede supersquirrel Nybegynder
15. november 2007 - 20:00 #1
Anyone? :D
Avatar billede jakobdo Ekspert
15. november 2007 - 21:20 #2
Hvad med at smide din timing med ind i koden herefter:

if(mysql_num_rows($sql) == 1){

Og du bør rette:
while($brugerLogin = mysql_fetch_assoc($sql)){

til bare:

$brugerLogin = mysql_fetch_assoc($sql);

Du ved du kun har en række, så er der ingen grund til at lave while();
Avatar billede supersquirrel Nybegynder
20. november 2007 - 21:28 #3
Hovsa,
Beklager min sene besvarelse.

Dit forslag virker desværre ikke
Avatar billede jakobdo Ekspert
21. november 2007 - 17:59 #4
Prøv at udskriv din $time og se om du evt. selv kan finde hvor den fejler.
Avatar billede supersquirrel Nybegynder
22. november 2007 - 21:24 #5
Jeg tror faktisk ikke at det har noget med min time at gøre.
Når jeg prøver at fjerne hele time koden, så bliver sessionen stadig ikke sat
Avatar billede supersquirrel Nybegynder
22. november 2007 - 21:37 #6
Huha!

Jeg har fundet ud af at det _ikke_ er mit login der fejler, men derimod et stump kode i min header:
<?php
session_start();
include("db.php");
$ip = $_SERVER[REMOTE_ADDR];
$time = explode(" ",microtime());
$array1 = $time[0];
$array2 = $time[1];
$r = mysql_fetch_row( mysql_query("SELECT * FROM ym_community WHERE ip LIKE '$ip' AND site_status='online'"));
mysql_query("UPDATE ym_community SET site_status='offline' WHERE time_date < $array2 - 400") or die("Fejl: " . mysql_error());
mysql_query("UPDATE ym_community SET time_date='$array2' WHERE ip='$ip'") or die("Fejl: " . mysql_error());
$sql = mysql_query("SELECT * FROM ym_community where ip='$ip'") or die("Fejl: " . mysql_error());
while($onlineTjek = mysql_fetch_assoc($sql)){
    if($onlineTjek[site_status] == "offline"){
        session_destroy();
    }
}
?>

Der er sikkert en meget bedre måde, som man kan opstille det på. Så hvis en ville hjælpe mig med at gøre det rigtigt, så ville jeg være taknemmelig :D
Avatar billede supersquirrel Nybegynder
22. november 2007 - 22:50 #7
Nå da..
Jeg tror jeg fik det ordnet:
<?php
session_start();
include("db.php");
$ip = $_SERVER[REMOTE_ADDR];
$time = explode(" ",microtime());
$array1 = $time[0];
$array2 = $time[1];
mysql_query("UPDATE ym_community SET time_date='$array2' WHERE ip='$ip'") or die("Fejl: " . mysql_error());
$sql = mysql_query("SELECT * FROM ym_community where ip='$ip'") or die("Fejl: " . mysql_error());
while($onlineTjek = mysql_fetch_assoc($sql)){
    if($onlineTjek[time_date] < $array2 - 400){
    mysql_query("UPDATE ym_community SET site_status='offline' WHERE time_date < $array2 - 400") or die("Fejl: " . mysql_error());
        session_destroy();
    }
}
?>

- Skriver lige når det er gennemtestet helt
Avatar billede supersquirrel Nybegynder
22. december 2007 - 01:35 #8
Det kom desværre aldrig til at virke..
Så lukker.
Ellers mange 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
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