Avatar billede rix Novice
08. februar 2010 - 17:10 Der er 21 kommentarer og
1 løsning

SESSION

hejsa jeg er i gang med at lave noget til en loginsystem og der skal jeh bruge noget med SESSION men kender ikke særlig meget til det har prøvet at finde det inde i guides men synes ikke jeg kan finde noget der er vel ikke nogen er kender nogen gode hjemmesider har kiggede inde i det der php hejmme side men synes ikke den er for mig
Avatar billede maniactor Nybegynder
08. februar 2010 - 17:27 #1
Der er lidt inde på udvikleren.dk: http://www.udvikleren.dk/PHP/Article.aspx/87/

Derudover kan du finde masser af tutorials på Google: http://www.google.dk/search?q=php+sessions+tutorial
Avatar billede stigma Nybegynder
08. februar 2010 - 20:58 #2
Du skal tænke på sessions som en global variable, som du kan tilgå på enhver af dine sider.

mht et login script, kunne det bygges op som dette:

session_start();

if (($username == "admin") && ($password = "password")) {
  $_SESSION['loggedin'] = true;
}

Så den overstående session er sat, kan du faktisk hente den på alle dine undersider (Du skal self. huske at bruge session_start();)

Men så på dine andre undersider skal du faktisk bare have følgende:

if (!$_SESSION['loggedin']) {
  header("location:login.php");
}

Så hvis din "loggedin" session ikke er sat, så vil den automatisk smide brugeren tilbage til siden, hvor vedkomne bliver bedt om at logge ind igen..
Avatar billede rix Novice
08. februar 2010 - 23:16 #3
jeg ville gerne have at den viser brugens login navn men jeg kan bare ikke få den til det den kan med fornavn og efternavn men login gider den ikke hvad skal man gøre
Avatar billede rix Novice
09. februar 2010 - 00:26 #4
jeg må vel uddybe det :D kommer jeg lige i tanke om
i min database er der en der heder members og der er de her føglene i
member_id
firstname
lastname
login
pasword
jeg har sat SESSION til at gemme member_id (eller hvordan man nu siger det men i ved hvad jeg mener :D)
jeg kan med firstname og lastname ved at skrive <?php echo $_SESSION['SESS_FIRST_NAME'];?>  men hvordan kan man få den til at vise hvad man har ag login ??
Avatar billede rix Novice
09. februar 2010 - 01:21 #5
fandt en udvej :D lavde fornavn om til brugernavn og password om til fornavn da det passede mere men hvis i ville komme med en ide til hvad der kan være galt må i godt komme med den
den sidste jeg ville gerne gøre så medllemmerne kan skifte brugernavn og kodeord men hvordan gøre man det
Avatar billede stigma Nybegynder
09. februar 2010 - 08:30 #6
Når brugeren er logget ind, kan man gemme hans ID i en session, så man kan finde frem til vedkomnes række i databasen.. Men så gør du faktisk lidt ligesom når du logger ind, bare i stedet for SELECT i din query, skal du bruge UPDATE... Håber det kan bruges, kan ikke lige uddybe mig meget mere, da jeg er i skole :=)
Avatar billede repox Seniormester
09. februar 2010 - 09:04 #7
#0
Jeg vil - selvom det ikke anses for at være pænt - gerne promovere en artikel jeg selv har skrevet om sessions.
Den er meget grundlæggende, men det lader til at det er noget som du kan bruge til at hjælpe med forståelsen.
Du kan finde den her: http://err0r.dk/articles/read/sessions_for_begyndere

Et simpelt eksempel, som forudsætter at du har brugt en HTML form til sende brugernavn og kodeord med (baseret på din oprindelige brugertabel) kan du se her: http://codepad.org/skpE5OhB

I eksemplet er det ikke forudsat at du krypterer eller hasher dine kodeord, men det er naturligvis anbefalelsesværdigt.

#6
Det forstod jeg ikke en bjælde af? Hvad skal en UPDATE statement kunne gavne i den her forbindelse?
Avatar billede stigma Nybegynder
09. februar 2010 - 09:16 #8
#7 Som jeg læser hans spørgsmål, så vil han gerne have at brugerne kan ændre deres kodeord og brugernavn, og så vidt jeg husker så bruger man da update for at ændre i data i en tabel..
Avatar billede repox Seniormester
09. februar 2010 - 09:21 #9
#8
Nå, for pokker - min fejl, det havde jeg lige overset...
Avatar billede stigma Nybegynder
09. februar 2010 - 09:25 #10
#9 Det sker jo for selv den bedste :p
Avatar billede rix Novice
09. februar 2010 - 14:22 #11
tak for de gode råd men jeg har min sennsison til at se sådan ud den burde da og så kunne finde frem til brugerns login navn
<?php
    //Start session
    session_start();

    //Check whether the session variable SESS_MEMBER_ID is present or not
    if(!isset($_SESSION['SESS_MEMBER_ID']) || (trim($_SESSION['SESS_MEMBER_ID']) == '')) {
        header("location: access-denied.php");
        exit();
    }
?>
den gemmer da member_id hvor ens login navn også er i sammen med firstname og lastname de to sidste kunne den finde ud af at vise men login kan den ikke
Avatar billede repox Seniormester
09. februar 2010 - 14:30 #12
Du bliver nød til at vise hvordan du gemmer dine session variabler; det eneste du viser os er hvordan du kontrollerer om brugeren er logget ind.
Avatar billede rix Novice
09. februar 2010 - 16:07 #13
hmm skal prøve at komme med de sider som kontrollere det
hmm det må jo være denne her (håber jeg)
<?php
    //Start session
    session_start();
   
    //Include database connection details
    require_once('config.php');
   
    //Array to store validation errors
    $errmsg_arr = array();
   
    //Validation error flag
    $errflag = false;
   
    //Connect to mysql server
    $link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
    if(!$link) {
        die('Failed to connect to server: ' . mysql_error());
    }
   
    //Select database
    $db = mysql_select_db(DB_DATABASE);
    if(!$db) {
        die("BATTELKAMP er ned Prøv igen om 5 minuter hvis den ikke kommer frem skal du gå ind i forumet og skrive det der så ser jeg på det");
    }
   
    //Function to sanitize values received from the form. Prevents SQL injection
    function clean($str) {
        $str = @trim($str);
        if(get_magic_quotes_gpc()) {
            $str = stripslashes($str);
        }
        return mysql_real_escape_string($str);
    }
   
    //Sanitize the POST values
    $login = clean($_POST['login']);
    $password = clean($_POST['password']);
   
    //Input Validations
    if($login == '') {
        $errmsg_arr[] = 'brugernavn mangler';
        $errflag = true;
    }
    if($password == '') {
        $errmsg_arr[] = 'Password mangler';
        $errflag = true;
    }
   
    //If there are input validations, redirect back to the login form
    if($errflag) {
        $_SESSION['ERRMSG_ARR'] = $errmsg_arr;
        session_write_close();
        header("location: login-form.php");
        exit();
    }
   
    //Create query
    $qry="SELECT * FROM members WHERE login='$login' AND passwd='".md5($_POST['password'])."'";
    $result=mysql_query($qry);
   
    //Check whether the query was successful or not
    if($result) {
        if(mysql_num_rows($result) == 1) {
            //Login Successful
            session_regenerate_id();
            $member = mysql_fetch_assoc($result);
            $_SESSION['SESS_MEMBER_ID'] = $member['member_id'];
            $_SESSION['SESS_FIRST_NAME'] = $member['firstname'];
            $_SESSION['SESS_LAST_NAME'] = $member['lastname'];
            session_write_close();
            header("location: member-index.php");
            exit();
        }else {
            //Login failed
            header("location: login-failed.php");
            exit();
        }
    }else {
        die("Query failed");
    }
?>
Avatar billede rix Novice
09. februar 2010 - 19:28 #14
fandt ud af det så det til sidst da jeg holdte 1 times pause og der sad jeg hold kæft en idiot(komertare frabedes) jeg er nede ved $_SESSION['SESS_LAST_NAME'] = $member['lastname'];
lavde jeg en
$_SESSION['SESS_LOGIN_LOGIN'] = $member['login'];
den eller sidste spøgsmål kan i ikke komme med eks. hvordan man kan rette i sin egen profil???
Avatar billede stigma Nybegynder
10. februar 2010 - 01:18 #15
Jamen, hvis du har alle de nødvendige data gemt i dine sessions, kan du jo bare lave en en form, som sender de nye data afsted, og laver en query som lignende:

$memberId = $_SESSION['SESS_MEMBER_ID'];

mysql_query("UPDATE tabel
SET
  `mail` = '".$mail."',
  `password` = '".$newPassword."',
  `lastname` = '".$newLastname."',
  `firstname` = '".$newFirstname."'
WHERE
  `member_id` = '".$memberId."'") or die(mysql_error());

Sådan kunne det i hvert fald gøres, selvfølgelig husk at tjekke for MySQL injection, men så vidt jeg husker linkede rep0x til det i en tidligere post.

mvh Jeppe
Avatar billede rix Novice
10. februar 2010 - 04:13 #16
hej nu har jeg indsat den men har bøvl med den den siger
Tabellen 'battelkamp.tabel' eksisterer ikke
(gad vide hvodan den har lært dansk :D)
battelkamp er min database og tabbelen heder members men så vidt jeg kan se har det ikke noget med din eksempel at gøre eller hvad?? da jeg har sat de php koder ind som skal vise hvor tabellen er og sådan noget siger den ingen ting men så snart jeg semed den ind siger den det
Avatar billede rix Novice
10. februar 2010 - 04:24 #17
hej jeg har et problem
føst smed jeg nogle php koder ind de ser sådan'er her ud
<?php
        //Include database connection details
    require_once('config.php');
   
    //Array to store validation errors
    $errmsg_arr = array();
   
    //Validation error flag
    $errflag = false;
   
    //Connect to mysql server
    $link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
    if(!$link) {
        die('Failed to connect to server: ' . mysql_error());
    }
   
    //Select database
    $db = mysql_select_db(DB_DATABASE);
    if(!$db) {
        die("BATTELKAMP er ned Prøv igen om 5 minuter hvis den ikke kommer frem skal du gå ind i forumet og skrive det der så ser jeg på det");
    }

og prøvede det for at se om jeg har lavet en fejl eller to men den sagde ingen ting så gik jeg vidre og smed det ind som du har vist mig og prøvde det engang til men der sagde den
Tabellen 'battelkamp.tabel' eksisterer ikke
så kiggede jeg på det du har vist mig men synes ikke at jeg kan finde problemet i den efter jeg har kigget lidt rundt synes jeg ikke at jeg kan se hvor fejlen opstår
Avatar billede stigma Nybegynder
10. februar 2010 - 20:30 #18
Altså det jeg skrev skal du jo ikke kopiere jo.... Du skal indsætte navnet på din EGEN tabel, og dine EGNE felter, derfor det ikke virker..

mvh Jeppe
Avatar billede rix Novice
10. februar 2010 - 21:54 #19
det gjorde jeg som sådan set ikke kom bare til at lave en lille bitte fejl :D
Avatar billede rix Novice
11. februar 2010 - 02:17 #20
ahh jeg kan ikke få den til at virke bliver sindsyg har brugt en hel det jeg har gjort er at
1 puttet de koder ind så den kan snakke med min database
så har jeg ændret i den kode som du viste mig så den passer ind så har jeg gemt den som member.php (ja et eller andet skulle jeg navn give den
så gik jeg ind i min member-profil.php lavde så de kan indtaste deres
fornavn
efternavn
email
login navn
og sagde at den skal sende de oplysninger videre til min "member.php" mappe
det der sker er at den sletter fornavn og efternavn dog ikke login navn og email den sætter ikke noget ind her kan jeg vise hvad min sidste forsøg er og hvis i har en ide hvor det ligger henne ville jeg være glad for at høre (dog skal i huske jeg er nybegunder)
føst member-profil.php

<?php
    require_once('auth.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>
<link href="loginmodule.css" rel="stylesheet" type="text/css" />
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Login Form</title>

</head>
<body>
<a href="member-index.php">tilbage til startsiden</a> | <a href="logout.php">Logout</a>
<form id="loginForm" name="loginForm" method="post" action="member.php">
  <table width="300" border="0" align="center" cellpadding="2" cellspacing="0">
    <tr>
      <th>fornavn </th>
      <td><input name="fname" type="text" class="textfield" id="fname" /></td>
    </tr>
    <tr>
      <th>efternavn </th>
      <td><input name="lname" type="text" class="textfield" id="lname" /></td>
    </tr>
    <tr>
      <th>E-mail </th>
      <td><input name="email" type="text" class="textfield" id="email" /></td>
    </tr>
    <tr>
      <th width="124">Login</th>
      <td width="168"><input name="login" type="text" class="textfield" id="login"  /></td>
    </tr>
   
    <tr>
      <td>&nbsp;</td>
      <td><input type="submit" name="Submit" value="ændre" /></td>
    </tr>
   
  </table>
</form>
</body>
</html>
og så fra member.php

<?php
    //Include database connection details
    require_once('config.php');
   
    //Array to store validation errors
    $errmsg_arr = array();
   
    //Validation error flag
    $errflag = false;
   
    //Connect to mysql server
    $link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
    if(!$link) {
        die('Failed to connect to server: ' . mysql_error());
    }
   
    //Select database
    $db = mysql_select_db(DB_DATABASE);
    if(!$db) {
        die("Unable to select database");
    }
$memberId = $_SESSION['SESS_MEMBER_ID'];

mysql_query("UPDATE MEMBERS
SET
  `email` = '".$email."',
    `lastname` = '".$newLastname."',
  `firstname` = '".$newFirstname."'
WHERE
  `member_id` = '".$memberId. $newFirstname. $newLastname. $email."'") or die(mysql_error());

har i en ide?? jeg er løbet tør
Avatar billede rix Novice
11. februar 2010 - 18:00 #21
utoligt hvad man kan gøre når man er vågn nu virker den hvis du ville have de point kan du så lave en svar
Avatar billede rix Novice
30. marts 2010 - 06:56 #22
det ville du vist ujje
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