Avatar billede mathiash Nybegynder
11. juli 2003 - 11:53 Der er 28 kommentarer og
1 løsning

Login problemer 100 p.

Hej.

Jeg er næsten færdig med sitet: www.matisen.dk
Men jeg har et problem :-(
Man logger ind, det går fint nok man bliver logget ind som den rigtige, men hvis man bevæger sig lidt rundt på siden, lige meget hvor. Så laver den alle sessions´ne om så man bliver logget ind som den bruger der sidst er oprettet. :-(

//Mathias

P.S. Skriv hvis jeg skal give lidt kode :0)
Avatar billede repox Seniormester
11. juli 2003 - 12:11 #1
prøv bare lige at smide koden for den del hvor du logger ind og får sessionen....
Avatar billede weirdprofessor Nybegynder
11. juli 2003 - 12:18 #2
har ik noget med svaret at gøre.. men er det muligt at ændre topbaren dvs den med den gule overskrift "Matisen" til at gøre den lige så bred som resten af siden - den er et par pixels for lille.. ellers er designet ganske fint, måske er menuen lidt for bred though..
Avatar billede gizp Nybegynder
11. juli 2003 - 12:32 #3
Der er jo ikke mulighed for at oprette ny bruger!!
Avatar billede mathiash Nybegynder
11. juli 2003 - 13:45 #4
login.php:
<?php
session_start();
if(isset($_REQUEST['ok'])) {

$root = $_SERVER['DOCUMENT_ROOT'];
require("$root/conn.php");

$kodeord = $_POST["kodeord"];
$brugernavn = $_POST["brugernavn"];

$resultat = mysql_query("select brugernavn, kodeord, status from brugersystem where kodeord='$kodeord' AND brugernavn='$brugernavn'") or die(mysql_error());

if(mysql_num_rows($resultat) != 0) {
    $raekke = mysql_fetch_array($resultat);

    $_SESSION['brugernavn'] =  $raekke['brugernavn'];
    $_SESSION['kodeord'] = $raekke['kodeord'];
    $_SESSION['status'] = $raekke['status'];
   
    if ($_POST["husk"] == "Ja") {
    setCookie("matisenlogin", "$raekke[brugernavn]:$raekke[kodeord]:$raekke[status]", time()+60*60*24*365*2);
    }

    header("Location: $_SERVER['DOCUMENT_ROOT']/index.php");
    mysql_close($conn);
} else {
require("$root/top.php");
echo "<p>Du har indtastet forkert brugernavn eller password.</p>";
require("$root/bund.php");
}
}
?>

//Mathias
Avatar billede mathiash Nybegynder
11. juli 2003 - 13:45 #5
gizp -> Jo under "Brugere" i venstre side det øverste punkt :0)
Avatar billede googolplex Novice
11. juli 2003 - 13:55 #6
Jeg kan ikke logge ind med den bruger jeg opretter og kan faktisk slet ikke se om jeg bliver oprettet ?
Avatar billede mathiash Nybegynder
11. juli 2003 - 14:34 #7
:-(
Den skifter automatisk bruger.
Det gør den også med mig. :-(
Avatar billede mathiash Nybegynder
11. juli 2003 - 14:35 #8
Nogle idér?
Kan det være pga. mine cookies? (Er første gang jeg laver autologin)
Avatar billede mathiash Nybegynder
11. juli 2003 - 15:48 #9
200 points ?!?

Bare skriv hvis i vil have mere kode.

//Mathias
Avatar billede gizp Nybegynder
11. juli 2003 - 16:13 #10
Ved godt hvor... men den opretter mig ikke!
Avatar billede googolplex Novice
11. juli 2003 - 16:30 #11
Samme problem her...
Avatar billede googolplex Novice
11. juli 2003 - 16:31 #12
Har du prøvet at fjerne dit autologin og se om det virker bagefter, så kan du jo se om det er derfor ?
Avatar billede mathiash Nybegynder
11. juli 2003 - 16:38 #13
Det er fordi at:
Brugernavn: Skal være bogstaver
Kodeord: Skal være tal

googolplex -> Prøver :0)
Avatar billede mathiash Nybegynder
11. juli 2003 - 16:41 #14
Nope, det hjalp desværre ikke :0(
Avatar billede mathiash Nybegynder
11. juli 2003 - 16:44 #15
Jeg bruger:
if (session_is_registered("brugernavn")) {
<!-- Siden her... --!>
} else {
require("ingenadgang.php");
}

Når jeg skal se om brugeren har adgang, skal der bruges noget andet ?

//Mathias
Avatar billede mathiash Nybegynder
11. juli 2003 - 16:45 #16
Ups, mener:

<?php
if (session_is_registered("brugernavn")) {
?>
<!-- Siden her... -->
<?php
} else {
require("ingenadgang.php");
}
?>

//Mathias
Avatar billede mathiash Nybegynder
11. juli 2003 - 16:51 #17
Kan det være fordi at der muligvis er session_start(); 2 gange ?
Avatar billede googolplex Novice
11. juli 2003 - 17:03 #18
Du skal ikke bruge session_start 2 gange, bare en enkelt :)

Hvis du bruger en nyere version af PHP, bør du heller ikke bruge 'session_is_registered', i stedet:

if (isset($_SESSION['brugernavn'])) { blah blah  }
Avatar billede googolplex Novice
11. juli 2003 - 17:09 #19
Prøv lige at bytte din 'mysql_fetch_array()' ud med 'mysql_fetch_assoc()', jeg løste et problem på den måde, fatter ikke hvorfor, men det hjalp for mig :)
Avatar billede mathiash Nybegynder
11. juli 2003 - 17:25 #20
Jeg for bare fejl: Parse error: parse error, unexpected T_STRING in /home/web/web4154/login.php on line 16

Ny kode:
<?php
session_start();
if(isset($_REQUEST['ok'])) {

$root = $_SERVER['DOCUMENT_ROOT'];
require("$root/conn.php");

$kodeord = $_POST["kodeord"];
$brugernavn = $_POST["brugernavn"];

$resultat = mysql_query("select brugernavn, kodeord, status from brugersystem where kodeord='$kodeord' AND brugernavn='$brugernavn'") or die(mysql_error());

if(mysql_num_rows($resultat) != 0) {
    $raekke = 'mysql_fetch_assoc($resultat);

    $_SESSION['brugernavn'] =  $raekke['brugernavn']; //Linie 16
    $_SESSION['kodeord'] = $raekke['kodeord'];
    $_SESSION['status'] = $raekke['status'];

    header("Location: $_SERVER['DOCUMENT_ROOT']/index.php");
    mysql_close($conn);
} else {
require("$root/top.php");
echo "<p>Du har indtastet forkert brugernavn eller password.</p>";
require("$root/bund.php");
}
}
?>
Avatar billede sukos Juniormester
11. juli 2003 - 19:24 #21
Du har en ' ved mysql_fetch_assoc

Den måde du sætter en session på, "er standard". Men for at være sikker på at hente den rigtigt igen, skal du bruge:

if(isset($_SESSION["brugernavn"])) {
...........

Som du spørger efer session lige nu, skal du sætte den så'n:

$brugernavn = $raekke['brugernavn'];
session_register("brugernavn");

med andre ord, du blander måden at sætte og spørge om sessions

Og det vil gå galt!
Avatar billede ahv Nybegynder
11. juli 2003 - 22:59 #22
Jeg har rettet lidt i din kode ->
1 -> Ændret sesison variablen brugernavn til username, har før været udefor at flere variabler med samme navn kan lave lort i det, så vi prøver lige at omdøbe den til username.
2 -> Jeg har slettet session variablen kodeord, hvad skal du bruged en til? Ingen grund til at registrer flere sesisons end nødvendigt.
3 -> Du manglede lige nogle ordenlige indrykninger hist og her.
4 -> Andre små rettelser ;o)

Hvad du måske kunne overveje at rette er ->
1 -> Nøjes med at registrer en session, denne kan så indeholde brugerens ID, udfra dette id kan du jo hive alle de oplysninger ud af databasen du lyster.
2 -> Man kan altid rette et eller andet ;o)

Når men her er mit forslag, meld tilbage hvor vidt det spiller ->

<?php
session_start();
if (isset($_REQUEST['ok'])) {

$root = $_SERVER['DOCUMENT_ROOT'];
require("$root/conn.php");

$resultat = mysql_query("select brugernavn, kodeord, status from brugersystem where kodeord='$_POST[kodeord]' AND brugernavn='$_POST[brugernavn]'") or die(mysql_error());

if(mysql_num_rows($resultat) != 0) {
    $raekke = mysql_fetch_array($resultat);
    $_SESSION['username'] =  $raekke['brugernavn'];
    $_SESSION['status'] = $raekke['status'];
    if ($_POST["husk"] == "Ja") {
        setCookie("matisenlogin", "$raekke[brugernavn]:$raekke[kodeord]:$raekke[status]", time()+60*60*24*365*2);
    }
    header("Location: $root/index.php");
    mysql_close($conn);
    } else {
        require("$root/top.php");
        echo "<p>Du har indtastet forkert brugernavn eller password.</p>";
        require("$root/bund.php");
    }
}
?>
Avatar billede mathiash Nybegynder
12. juli 2003 - 11:37 #23
Ahv -> Jeps! nu fungerer det! Jubii!
Avatar billede googolplex Novice
12. juli 2003 - 12:46 #24
mathiash: Kan du ikke lige smide hele koden (login, logout osv.), jeg kunne godt tænke mig at se det, mit eget autologin driller nemlig lidt :(
Avatar billede mathiash Nybegynder
12. juli 2003 - 16:20 #25
ok :0)
Avatar billede googolplex Novice
12. juli 2003 - 16:22 #26
Jeg har fået mit eget til at virke, men vil meget gerne se dit alligevel :-)
Avatar billede mathiash Nybegynder
12. juli 2003 - 16:23 #27
Login.php:
<?php
session_start();
if (isset($_REQUEST['ok'])) {

$root = $_SERVER['DOCUMENT_ROOT'];
require("$root/conn.php");

$resultat = mysql_query("select brugernavn, kodeord, status from brugersystem where kodeord='$_POST[kodeord]' AND brugernavn='$_POST[brugernavn]'") or die(mysql_error());

if(mysql_num_rows($resultat) != 0) {
    $raekke = mysql_fetch_array($resultat);
    $_SESSION['username'] =  $raekke['brugernavn'];
    $_SESSION['status'] = $raekke['status'];
    if ($_POST["husk"] == "Ja") {
        setCookie("matisenlogin", "$raekke[brugernavn]:$raekke[kodeord]:$raekke[status]", time()+60*60*24*365*2);
    }
    header("Location: index.php");
    mysql_close($conn);
    } else {
        require("$root/top.php");
        echo "<p>Du har indtastet forkert brugernavn eller password.</p>";
        require("$root/bund.php");
    }
}
?>

logud.php:
<?php
session_start();
setCookie("matisenlogin", "$_SESSION[brugernavn]:$_SESSION[kodeord]:$_SESSION[status]", time()-60*60*24*365*2);
session_destroy();
header("location:/index.php");
?>

Kode til at logge ind:
<?php
echo "<form action=\"$_SERVER['DOCUMENT_ROOT']/login.php\" method=\"post\">";
?>
<h4>Login</h4>
<p>
Brugernavn:<br><input type="text" name="brugernavn" id="textf"><br>
Kodeord:<br><input type="text" name="kodeord" id="textf"><br>
Husk mig <a href="#" onclick="self.window.open('/spm.php?spm=huskm','popup','height=100,width=300,resizable=no,status=no,toolbar=no,menubar=no,location=no')"><b>*</b></a>:<br><input type="checkbox" name="husk" value="Ja"><br>
<input type="submit" name="ok" id="submit" value="Login">
</p>
</form>

//Mathias
Avatar billede googolplex Novice
12. juli 2003 - 16:26 #28
Takker :)

Det mærkelige er bare, at jeg ikke kan få...

setcookie("navn", "$vaerdi", time()-60*60*24*365*2);

...til at virke, det virker kun hos mig når jeg bruger:

setcookie("navn");
Avatar billede mathiash Nybegynder
12. juli 2003 - 16:27 #29
Underligt :-(
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