Avatar billede mc.lucifer Praktikant
15. august 2005 - 20:47 Der er 31 kommentarer og
1 løsning

PHP og sessioner

Jeg sidder og læser mig lidt frem til sessioner og det driller bare stort, hvis der er nogle der lige gider kigge lidt med over min skulder

// Login
If (isset($Login))
{
/* Validate of user */
$database = mysql_connect("localhost", "user", "password");
mysql_select_db("ithint", $database);
$user = mysql_query("select * from userlogin where Username = '$Username' and Password = '$Password'");
$userarray = mysql_fetch_assoc($user);
$usercount = mysql_num_rows($user);
If ($usercount >= 1)
{
$row = 1;
do {
If ($Username == $userarray['Username'] and $Password == $userarray['Password'])
{
echo $Username;
session_register("sessionUsername");
session_register("sessionPassword");
function load_user_data(){
global $sessionUsername, $sessionPassword;
$sessionUsername = $Username;
$sessoinPassword = $Password;
}
load_user_data();
}
else
{echo "Du er ikke logget ind";}
}
while ($row <= $Usercount);
$row++
;}
else
{};}
//Login Slut

Det der sker er at jeg ikke ved hvordan jeg skal chekke at min bruger er logget ind, samtidig med vil jeg jo gerne kunne følge lidt med, Jeg har kigget lidt i de filer der ligger i sessions på c:\php\sessiondata
de for fint nok variabel navnet Username og password men de står bare tomme,

Hvad gør jeg galt ?

MC
Avatar billede mc.lucifer Praktikant
15. august 2005 - 20:50 #1
Hvis i skal vide lidt om sidens opbygning kan jeg vel bedst forklare det med at jeg har siden index.php med forskellige andre sider under, Dog er disse "Andre filer " bare phpfiler som includes i index.php, samt noget text fra en database der også trækkes ind,
Dvs Index.php loades HVER gang der navigeres rundt på siden

MC
Avatar billede mc.lucifer Praktikant
15. august 2005 - 20:54 #2
Nu har jeg fået sessionfilen til at indeholde noget

Username|s:10:"MC.Lucifer";Password|s:4:"testpassword";

Men når jeg igen trykker på et link, altså navigere rundt på siden så mister jeg igen at jeg er logget ind.

MC
Avatar billede Slettet bruger
15. august 2005 - 21:18 #3
Hvordan tjekker du om en bruger er logget ind ?
Avatar billede mc.lucifer Praktikant
15. august 2005 - 21:20 #4
I Ifset login,

Men jeg ved ikke hvad jeg har gjort men umiddelbart ser det ud til at fungere nu, men jeg er slet ikke sikker, så jeg vil gerne lade spørgsmålet være åben lidt endnu,

MC
Avatar billede jakobdo Ekspert
15. august 2005 - 21:21 #5
Du bruger de gamle sessions.
Prøv $_SESSION['variabel']
og ikke session_register()
I toppen skal du lave session_start();
Og når du så har tjekket din db for om brugeren findes, laver du:
$_SESSION['brugernavn'] = $row['brugernavn']; //Hentet fra DB.
//evt også denne:
$_SESSION['loggetInd'] = true;
Så kan du teste om brugeren er logget ind, ved at teste om $_SESSION['loggetInd'] == true
Avatar billede jakobdo Ekspert
15. august 2005 - 21:26 #6
Som jeg ser linien:
if (isset($Login))
Så tester den om man klikker på knappen login i din login form.
Kan vi evt også se din login-form? (altså koden dertil)
Avatar billede mc.lucifer Praktikant
15. august 2005 - 21:29 #7
Ja...

<!-- Quick Login Start -->
<?If (!Isset($Username)){echo"
<form action=\"$Host\" method=\"post\">
<table cellspacing=\"0\" cellpadding=\"2\" border=\"0\">
<tr>
    <td Class=\"Menuhead\"><b>Quick Login</b></td>
</tr>
<tr>
    <td Class=\"Menu\">Brugernavn</td>
</tr>
<tr>
    <td Class=\"Menu\"><input class=\"Soegfeldt\" type=\"text\" name=\"Username\" value=\"\"></td>
</tr>
<tr>
    <td Class=\"Menu\">Password</td>
</tr>
<tr>
    <td Class=\"Menu\"><input class=\"Soegfeldt\" type=\"text\" name=\"Password\" value=\"\"></td>
</tr>
<tr>
    <td Class=\"Menu\"><input class=\"Submit\" type=\"submit\" name=\"Login\" value=\"Login\"></td>
</tr>
<tr>
    <td Class=\"Menuhead\">&nbsp;</td>
</tr>
</table>
</form>";}?>
    <!-- Quick Login Slut -->
Avatar billede jakobdo Ekspert
15. august 2005 - 21:34 #8
Jeg ville nok lave din side på denne måde:

// Login
if (isset($_POST['Username']) && $_POST['Username'] != "" && isset($_POST['Password']) && $_POST['Password'] != "")
{
    /* Validate of user */
    $database = mysql_connect("localhost", "user", "password");
    mysql_select_db("ithint", $database);
    $username = mysql_escape_string($_POST['Username']);
    $password = mysql_escape_string($_POST['Password']);
    $user = mysql_query("SELECT * FROM userlogin WHERE username LIKE '$Username' AND password LIKE '$Password' LIMIT 1");
    if (mysql_num_rows($user) > 0)
    {
        while($row = mysql_fetch_assoc($user)
        {
            echo $Username;
            $_SESSION['sessionUsername'] = $username;
            $_SESSION['sessionLoggedIn'] = true;
        }
    else
    {
        echo "Du er ikke logget ind";
    }
}
//Login Slut
Avatar billede mc.lucifer Praktikant
15. august 2005 - 21:34 #9
Nu har jeg ændret den til at bruge "De nye session variabler som jakobo sagde

Men nu virker det ikke igen.


// Login
If (isset($Login))
{
/* Validate of user */
$database = mysql_connect("localhost", "user", "password");
mysql_select_db("ithint", $database);
$user = mysql_query("select * from userlogin where Username = '$_SESSION[Username]' and Password = '$_SESSION[Password]'");
$userarray = mysql_fetch_assoc($user);
$usercount = mysql_num_rows($user);
If ($usercount >= 1)
{
$row = 1;
do {
If ($_SESSION['Username'] == $userarray['Username'] and $_SESSION['Password'] == $userarray['Password'])
{
echo $Username;
$_SESSION("Username");
$_SESSION("Password");
function load_user_data(){
global $sessionUsername, $sessionPassword;
$Username = $Username;
$Password = $Password;
}
load_user_data();
}
else
{echo "Du er ikke logget ind";}
}
while ($row <= $Usercount);
$row++
;}
else
{};}
//Login Slut
Avatar billede jakobdo Ekspert
15. august 2005 - 21:34 #10
PS: husk session_start(); i toppen af din kode...
altså:
<?
session_start();
og så resten af din php kode...
Kig også på siden: http://www.php.net/session_start
Avatar billede mc.lucifer Praktikant
15. august 2005 - 21:53 #11
Jeg har session_start(); med i toppen

Jakobdo jeg har prøvet at paste dit script ind i dokumentet men den brokker sig over en pharser error i linie 22

Linie 22 er:

21.  while($row = mysql_fetch_assoc($user)
22.        {
23.            echo $Username;
Avatar billede jakobdo Ekspert
15. august 2005 - 21:54 #12
Hov: while($row = mysql_fetch_assoc($user))
Avatar billede mc.lucifer Praktikant
15. august 2005 - 21:56 #13
fejl i linie 27

26    }
27    else
28    {
Avatar billede jakobdo Ekspert
15. august 2005 - 22:00 #14
Tilføj en } på linie 26.
Avatar billede mc.lucifer Praktikant
15. august 2005 - 22:15 #15
www.romdata.dk/hint

Username test
password test

det er som om den ikke logger brugeren ind når han klikker videre på siden

MC
Avatar billede jakobdo Ekspert
15. august 2005 - 22:32 #16
Jeg år info test/test oppe i venstre hjørne...
Og login boksen forsvinder.
Avatar billede mc.lucifer Praktikant
15. august 2005 - 23:18 #17
Ja men hvad så hvis du trykker på linkene i menuboxene så forsvinder login informationerne igen og loginboxen kommer igen

MC
Avatar billede jakobdo Ekspert
16. august 2005 - 08:47 #18
Hvordan tjekker du om en bruger er logget ind?
Du må lave et tjek eller lign i toppen på dine sider?
Avatar billede mc.lucifer Praktikant
16. august 2005 - 09:00 #19
Hmmmm Nææææ det gør jeg egentlig ikke, Jeg echo´er username, men kan godt se at det virker fedt når den jo sættes af formen

MC
Avatar billede jakobdo Ekspert
16. august 2005 - 09:07 #20
I toppen af hver side kan du lave tjekket:
<?
session_start();
if($_SESSION['sessionLoggedIn'])
echo "Du er logget ind";
else
{
echo "Du er ikke logget ind";
exit();
}
Avatar billede mc.lucifer Praktikant
16. august 2005 - 09:10 #21
www.romdata.dk/hint

user test
password test

ser det så ud til at virker eller hvad ???

MC
Avatar billede jakobdo Ekspert
16. august 2005 - 10:01 #22
Det er svært at fejlsøge.
Kan jeg evt se alt din kode?
Du bliver ikke logget korrekt ind ihf.
Avatar billede mc.lucifer Praktikant
16. august 2005 - 10:23 #23
<?
Session_start();
if($_SESSION['sessionLoggedIn'])
echo "Du er logget ind";
else
{
echo "Du er ikke logget ind";
}
//Globale Var Start
If (isset($Site))
{$Site = $Site;}
Else
{$Site = 1;}

// Login
if (isset($_POST['Username']) && $_POST['Username'] != "" && isset($_POST['Password']) && $_POST['Password'] != "")
{
    /* Validate of user */
    $database = mysql_connect("localhost", "user", "password");
    mysql_select_db("ithint", $database);
    $username = mysql_escape_string($_POST['Username']);
    $password = mysql_escape_string($_POST['Password']);
    $user = mysql_query("SELECT * FROM userlogin WHERE username LIKE '$Username' AND password LIKE '$Password' LIMIT 1");
    if (mysql_num_rows($user) > 0)
    {
        while($row = mysql_fetch_assoc($user))
        {
            echo $Username;
            $_SESSION['sessionUsername'] = $username;
            $_SESSION['sessionLoggedIn'] = true;
        }}
    else
    {
        echo "Du er ikke logget ind";
    }
}
//Login Slut


$Host = "http://www.romdata.dk/hint/index.php";
$Tid = date("G:i");
$Dato = date("Y.m.d");
$Tidhash = date("G:i:s");
$Unik = sha1(md5($Tidhash));
//Globale Var Slut

// Opret Bruger Start
If (isset($Opretbruger))
{
If (isset($Addusername))
{$database = mysql_connect("localhost","user","password") or die(mysql_error());
mysql_select_db("ithint", $database) or die(mysql_error());
mysql_query("Insert into userlogin (Username, Password, Email, Unik, Status, Aktiveret) values
('$Addusername','$Addpassword1','$Email','$UnikMD5','$1','$0')"
) or die(mysql_error());


mail ("$Email", "Du er netop blevet oprette på IT-Hinta.dk !","Hej $Addusername\n\n
Du er blevet oprettet som bruger på IT-Hints.dk, Du kan læse dine login informationer forneden i denne mail\n\n
Du skal aktivere din konto på følgende link\n\n
$Host?Site=500&Unikcode=$UnikMD5 \n\n
Dette skal gøres inden du kan logge ind.\n\n
Vi ønsker dig velkommen som bruger på IT-hints.dk\n\n
Login Informationer\n
Du skal logge ind på siden\n
$Host \n
Dit brugernavn er \n
$Addusername \n\n
Dit Password er \n
$Addpassword1 \n\n\n

Med venlig hilsen \n\n
IT-Hints.dk
","From: IT-Hints.dk\n Reply-to: noreplay@it-hints.dk") ;}
Else
{$Errormessage = "Dine passwords stemmer ikke overens.";
$Site = 4;
$Errorcode = 1;
}
}
Else
{
}
//Opret Bruger Slut


//Addhint start
If (isset($Addhint))
{
If ($hintkat == 0)
{$Errormessage = "Du har ikke valgt en gyldigkategori.";}
else
{
$hinttext = nl2br($hinttextoriginal);
$database = mysql_connect("localhost", "user", "password");
mysql_select_db("ithint", $database);
$insertSQL = "insert into hints (Katid, Head, Hinttext, Owner, Dato, Tid, Vote)
              values ('$hintkat', '$Head', '$hinttext','$Username', '$Dato', '$Tid','0')";
mysql_query($insertSQL);
}
}

//Addhint Slut
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>
    <title>IT-Hint.dk : Hint der letter dig som IT Mand</title>
    <LINK rel="stylesheet" type="text/css" href="style.css">
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<?

?>
<?echo $Username;?>
<table align="center" cellspacing="0" cellpadding="0" border="0">
<tr>
    <td Class="Top">

    </td>
</tr>
<tr>
    <td Class="Midt">
    <!-- Banner -->
    <table align="center" cellspacing="2" cellpadding="2" border="0">
<tr>
    <td class="Kundebanner"><a href="http://www.hostex.dk?Site=22" target="_blank"><img src="images/banner.gif" width="468" height="60" alt="" border="0"></a></td>
</tr>
</table>

    <!-- Banner slut -->
    <!-- Mainframe Start -->
    <table align="left">
<tr>
    <td class="Mainframeleft">
    <!-- Menustart -->
<table cellspacing="0" cellpadding="2" border="0">
<tr>
    <td Class="Menuhead"><b>Menu</b></td>
</tr>
<tr>
    <td Class="Menu"><a href="<?echo "$Host?Site=5";?>" target="_self" class="Link">Kategorier</a></td>
</tr>
<tr>
    <td Class="Menu"><a href="<?echo "$Host?Site=6";?>" target="_self" class="Link">Tilføj nyt hint</a></td>
</tr>
<tr>
    <td Class="Menu">Login</td>
</tr>
<tr>
    <td Class="Menu"><a href="<?echo "$Host?Site=4";?>" target="_self" class="Link">Opret bruger</a> </td></td>
</tr>
<tr>
    <td Class="Menubund">&nbsp;</td>
</tr>
</table>

    <!-- Menu Slut -->
    <table cellspacing="1" cellpadding="1" border="0">
<tr>
    <td>&nbsp;</td>
</tr>
</table>

<!-- Quick Login Start -->
<?If (!Isset($_SESSION['sessionLoggedIn'])){echo"
<form action=\"$Host\" method=\"post\">
<table cellspacing=\"0\" cellpadding=\"2\" border=\"0\">
<tr>
    <td Class=\"Menuhead\"><b>Quick Login</b></td>
</tr>
<tr>
    <td Class=\"Menu\">Brugernavn</td>
</tr>
<tr>
    <td Class=\"Menu\"><input class=\"Soegfeldt\" type=\"text\" name=\"Username\" value=\"\"></td>
</tr>
<tr>
    <td Class=\"Menu\">Password</td>
</tr>
<tr>
    <td Class=\"Menu\"><input class=\"Soegfeldt\" type=\"text\" name=\"Password\" value=\"\"></td>
</tr>
<tr>
    <td Class=\"Menu\"><input class=\"Submit\" type=\"submit\" name=\"Login\" value=\"Login\"></td>
</tr>
<tr>
    <td Class=\"Menuhead\">&nbsp;</td>
</tr>
</table>
</form>";}?>
    <!-- Quick Login Slut -->
    <table cellspacing="1" cellpadding="1" border="0">
<tr>
    <td>&nbsp;</td>
</tr>
</table>
<!-- Søgefunktion Start -->

   

<table cellspacing="0" cellpadding="2" border="0">
<tr>
    <td Class="Menuhead"><b>Søg</b></td>
</tr>
<tr>
    <td Class="Menu"><input class="Soegfeldt" type="text" name="Soeg" value="Søg"></td>
</tr>
<tr>
    <td Class="Menu"><input class="Submit" type="submit" name="Search" value="Søg"></td>
</tr>
<tr>
    <td Class="Menuhead">&nbsp;</td>
</tr>
</table><table cellspacing="1" cellpadding="1" border="0">
<tr>
    <td>&nbsp;</td>
</tr>
</table>
<!-- Lille Kunderbanner start -->
<table cellspacing="0" cellpadding="2" border="0">
<tr>
    <td Class="Menuhead"><b>Sponcer</b></td>
</tr>
<tr>
    <td Class="Menu"><a href="http://www.sologsommer.dk" target="_blank"><img src="images/sologsommer.gif" width="118" height="50" alt="" border="0"></a></td>
</tr>
<tr>
    <td Class="Menuhead">&nbsp;</td>
</tr>
</table>
<!-- Lille Kundebanner slut -->

<!-- Søgefunktion Slut -->
    </td>
    <td Class="Mainframeright" >
    <!-- Textcontainer Start -->
    <table cellspacing="0" cellpadding="2">
<tr>
    <td class="textcontainertop">
    <table cellspacing="0" cellpadding="0" border="0">
<tr>
    <td class="textcontainertop1"><b><?= $Errormessage;?></b></td></td>
    <td class="textcontainertop2">Klokken er: <?=$Tid;?>. Idag den <?=$Dato;?>.</td>
</tr>
</table>
</td>
</tr>
<tr>
    <td class="textcontainermain">
    <?
    IF ($Site == 4)
    {Include "createuser.php";}
    elseif ($Site == 5)
    {Include "kategori.php";}
    elseif ($Site == 10)
    {Include "showhint.php";}
    elseif ($Site == 6)
    {Include "newhint.php";}
    else{
$database = mysql_connect("localhost", "user", "password");
mysql_select_db("ithint", $database);
$product = mysql_query("select * from sitetext where Id = '$Site'");
$result= mysql_fetch_assoc($product);
eval("?>". ($result['text']));
echo $str;}
?>
    </td>
</tr>
<tr>
    <td class="textcontainerbund">Alt brug af hint fra denne side sker på eget ansvar, Udbyderen af denne side frasiger sig ethvert ansvar.</td>
</tr>
</table>
<table cellspacing="1" cellpadding="1" border="0">
<tr>
    <td>&nbsp;</td>
</tr>
</table>
    <!-- Textcontainer Slut -->
    </td>
</tr>
</table>

    <!-- Mainframe slut -->   
    </td>
</tr>
<tr>
    <td Class="Bund">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Copyright. 2005 All rights reserved.</td>
</tr>
</table>


</body>
</html>
Avatar billede jakobdo Ekspert
16. august 2005 - 10:29 #24
Prøv at ret:
if($_SESSION['sessionLoggedIn'])
til:
if(isset($_SESSION['sessionLoggedIn']))
Avatar billede mc.lucifer Praktikant
16. august 2005 - 11:00 #25
Det er så rettet

MC
Avatar billede jakobdo Ekspert
16. august 2005 - 11:15 #26
Nu fucker den da helt.
Den siger jeg er logget ind, uden at have rørt noget.
Avatar billede mc.lucifer Praktikant
16. august 2005 - 11:24 #27
hos mig ser det nu mere rigtigt ud, Den fjerner ikke login før efter man er logget ind, dog virker det som om den ikke tager min CSS fil med men det er en detalje

MC
Avatar billede mc.lucifer Praktikant
16. august 2005 - 11:25 #28
Nej det er rigtigt den siger at man ikke er logget ind når man er det, men et tryk på et link i menu gør at den ændre status

MC
Avatar billede jakobdo Ekspert
16. august 2005 - 11:39 #29
Weird!
Avatar billede mc.lucifer Praktikant
16. august 2005 - 14:48 #30
Hmmmm måske man skulle fjerne login informationerne og så forsøge sig på ny

MC
Avatar billede jakobdo Ekspert
16. august 2005 - 15:01 #31
Jeg vil gerne hjælpe dig.
Men prøv lige først.
Og husk at kigge lidt på $_SESSION[]
Avatar billede mc.lucifer Praktikant
29. januar 2006 - 20:43 #32
Jeg er igang med at lukke mine snart alt for mange åbne spørgsmål "Det er meget pinligt" så derfor om mit spørgsmål er aktuelt eller ej, så deler jeg point ud på de der har svaret, Er der nogle der føler sig snydt må i lige kontakte mig i spørgsmålet.
Undskylder mange gange for den til tider lange svar tid.

MC
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