Avatar billede Morten Professor
29. juni 2012 - 20:17 Der er 27 kommentarer og
1 løsning

Fra database til Session

Hej her inde :o)

Jeg har et problem, som jeg håber der er en der kan hjælpe mig med.
Jeg forsøger at huske nogle data fra min database i MySQL til min session. Men den vil bare ikke huske dem.
Jeg får den skrevet til min session, men når jeg så forsøger at læse dem igen, melder den at den ikke kan åbne den.

Håber der er en der kan hjælpe mig.

Med venlig hilsen
Morten Møller
Avatar billede erikjacobsen Ekspert
29. juni 2012 - 21:29 #1
Ja, hvordan gør du?
Avatar billede Morten Professor
30. juni 2012 - 07:46 #2
Hej :o)

Her er Kode til at hente det igen.

<?php
session_start();
$result = OpenSession();
if (!$result[0]) echo "Kunne ikke aabne session.";
else
{
list($vare, $varenr, $antal, $pris, $id) = $result[1];
echo "Retrieving session variables:<pre>";
echo "vare: $vare\n";
echo "varenr: $varenr\n";
echo "antal: $antal\n";
echo "pris: $pris\n";
echo "id: $id\n";   
}
function OpenSession()
{
if (!@session_start()) return array(FALSE);
if (isset($_SESSION['vare'])) return array(FALSE);
       
$vars = array();
$vars[] = $_SESSION['vare'];
$vars[] = $_SESSION['varenr'];
$vars[] = $_SESSION['antal'];
$vars[] = $_SESSION['pris'];
$vars[] = $_SESSION['id'];
return array(TRUE, $vars);
    }
?>

Med venlig hilsen
Morten Møller
Avatar billede Morten Professor
30. juni 2012 - 07:49 #3
/*Henter brugeres vare*/
    $vare = $row_rsVare_Salg['vare'];
    $varenr = $row_rsVare_Salg['varenr'];
    $antal = $row_rsVare_Salg['antal'];
    $pris = $row_rsVare_Salg['pris'];
    $id = $row_rsVare_Salg['id'];
    $result = CreateSession($vare, $varenr, $antal, $pris, $id);
    if (!$result) echo "Kunne ikke oprette session";
    else
    {
        echo 'session oprettet.<br /><pre>';
        echo 'Tester: $_SESSION[\'vare\'] = ' . $_SESSION['vare'];
    }
    function CreateSession($vare, $varenr, $antal, $pris, $id)
    {
        if (!session_start()) return FALSE;
        $_SESSION['vare'] = $vare;
        $_SESSION['varenr'] = $varenr;
        $_SESSION['antal'] = $antal;
        $_SESSION['pris'] = $pris;
        $_SESSION['id'] = $id;
        $_SESSION['ipnum'] = getenv("REMOTE_ADDR");
        $_SESSION['agent'] = getenv("HTTP_USER_AGENT");
        return TRUE;
    }
Avatar billede erikjacobsen Ekspert
30. juni 2012 - 13:50 #4
Kunne det være den der

  if (isset($_SESSION['vare']))...

der skal vendes om - dvs. negeres?
Avatar billede Morten Professor
30. juni 2012 - 16:41 #5
Hej

Jeg har prøvet med:

function OpenSession()
{
        if (!@session_start()) return array(FALSE);
        if ($_SESSION['vare']) return array(TRUE);
       
        $vars = array();
        $vars[] = $_SESSION['vare'];
        $vars[] = $_SESSION['varenr'];
        $vars[] = $_SESSION['antal'];
        $vars[] = $_SESSION['pris'];
        $vars[] = $_SESSION['id'];
        return array(TRUE, $vars);
    }
Men så viser den ikke det der står i databasen.
Viser dog de
echo "vare: $vare\n";
echo "varenr: $varenr\n";
echo "antal: $antal\n";
echo "pris: $pris\n";
echo "id: $id\n";
Bare uden det der står i databasen.
Avatar billede erikjacobsen Ekspert
30. juni 2012 - 17:56 #6
Det jeg siger, er at

  if ($_SESSION['vare']) return array(TRUE);

(og den med isset) vil returnere et tomt array, hvis der står noget i $_SESSION['vare']. Men det er ikke hvad du vil? Måske

  if (!isset($_SESSION['vare'])) return array(TRUE);
Avatar billede Morten Professor
01. juli 2012 - 07:55 #7
Ja det er det jeg vil have den til, men prøvede uden isset men viste stadig ikke nogle af de data jeg havde.
Hvad gør jeg mon forkert?
Avatar billede Morten Professor
01. juli 2012 - 07:56 #8
Og med true
Avatar billede erikjacobsen Ekspert
01. juli 2012 - 10:34 #9
Igen: Hvilken kode er det du prøver, der ikke virker? Den fra #6? Noget andet?
Avatar billede Morten Professor
01. juli 2012 - 16:00 #10
Jeg prøvede det fra #6 der kom så noget frem, bare uden det jeg havde gemt session.
Kun punkterne altså vare: varenr: osv.
Avatar billede erikjacobsen Ekspert
01. juli 2012 - 19:31 #11
Må vi se den kode, der ikke virker?
Avatar billede Morten Professor
01. juli 2012 - 21:25 #12
Det er den i #2
Avatar billede erikjacobsen Ekspert
01. juli 2012 - 22:11 #13
Men det virker jo ikke. Men så synes jeg du skal kigge på #6.
Avatar billede Morten Professor
01. juli 2012 - 22:26 #14
Nej nemlig jeg har prøvet det i #6
Der kunne jeg få det frem, bare uden min data.
Kun det der vare: osv.
Avatar billede erikjacobsen Ekspert
01. juli 2012 - 22:30 #15
Er du sikker på at der skal TRUE i linien fra #6?
Avatar billede Morten Professor
02. juli 2012 - 09:38 #16
Jeg prøvede uden isset. Når jeg siger true,
for som du siger. så vil den bare komme med en tom array.
Så ville der komme noget frem, bare ikke det jeg forsøger at få ind i min session.

tak for du bruger din tid, på at hjælpe mig.
Avatar billede erikjacobsen Ekspert
02. juli 2012 - 09:41 #17
Og hvad sker der så, hvis du bruger linien fra #6 og skriver FALSE i stedet for?
Avatar billede Morten Professor
02. juli 2012 - 15:47 #18
Så kommer den samme fejl som i starten. Med at den ikke kan finde nogen.
Avatar billede erikjacobsen Ekspert
03. juli 2012 - 12:00 #19
Jeg er nødt til at se den kode, der ikke virker.
Avatar billede Morten Professor
03. juli 2012 - 18:09 #20
#2 den virker ikke efter hensigten.
Avatar billede erikjacobsen Ekspert
03. juli 2012 - 18:13 #21
Jeg giver op.
Avatar billede Morten Professor
03. juli 2012 - 22:12 #22
Er der noget jeg misforstår?
Med hvilken del du skal bruge?
Det er fordi de koder jeg bruger til session delen, er det der står i #2 og #3.
Og det er der jeg ikke kan finde problemet. #3 skulle gerne oprette. Og #2 skulle gerne få de oplysninger frem.

Med venlig hilsen
Morten Møller
Avatar billede Temp_dk Nybegynder
07. juli 2012 - 09:41 #23
<?php
if(!isset($_SESSION))
{
    session_start();
}

$result = OpenSession();

list($vare, $varenr, $antal, $pris, $id) = $result[1];
echo "Retrieving session variables:<pre>";
echo "vare: $vare\n";
echo "varenr: $varenr\n";
echo "antal: $antal\n";
echo "pris: $pris\n";
echo "id: $id\n";   


// formoder at denne funktion ligger i en anden fil
function OpenSession()
{
  /* Ved denne metode opstår der ikke warnings med mere hvis session_start() har været kaldt
*/
  if(!isset($_SESSION))
  {
    session_start();
  }

  // Nedenstående vil returnere FALSE hvis $_SESSION['vare'] er sat
  // if (isset($_SESSION['vare'])) return array(FALSE);

  // Opret $vars hvis $_SESSSION['vare'] er sat   
  if(isset($_SESSIOn['vare'])
  {
      $vars = array();
      $vars[] = $_SESSION['vare'];
      $vars[] = $_SESSION['varenr'];
      $vars[] = $_SESSION['antal'];
      $vars[] = $_SESSION['pris'];
      $vars[] = $_SESSION['id'];

      return array(TRUE, $vars);
  }
  return false;
}
?>
Avatar billede Morten Professor
07. juli 2012 - 11:57 #24
Hej

function OpenSession() /vil det sige at den tror, den ligger et andet sted.
altså feks. på brugeres computer.
Avatar billede Temp_dk Nybegynder
07. juli 2012 - 17:06 #25
Nej

Når en bruger kalder dit script og der står session_start()
oprettes der er temp fil på 0 byte på serveren.

Heri gemmes blandt andet alle de nødvendige $_SESSIONS variabler der er gældende for den aktuelle session.

Opret et php script med navn phpinfo.php med følgende 3 linjer

<?php
  phpinfo()
?>

Gem det på din server og kald det.
Søg efter 'session.save_path' og du kan se i hvilken mappe den midlertidige fil bliver placeret.

Herefter opret php script
<?php
session_start();
echo session_id();;
?>

Nu vil du se at der er oprettet en fil i den mappe som du fandt ved hjælp af php_info.php og navnet er vis i browser, kan dog have fået et prefix = sess_.

Dette script vil gemme $_SESSION['vare'] i filen

<?php
session_start()
$_SESSION['vare'] = "Godt vejr i resten af ugen";
?>

husk at $_SESSION variabler udløber efter et vist tidsrum hvis bruger ikke har været aktiv.


læs mere om $_SESSION her
http://www.php.net/manual/en/book.session.php
Avatar billede Morten Professor
07. juli 2012 - 21:55 #26
Takker det må jeg lige prøve.

Med venlig hilsen
Morten Møller
Avatar billede Morten Professor
09. juli 2012 - 08:34 #27
Hej Temp_dk

Så virker det :o)
1000 tak for hjælpen.
Hvis du lige vil have dine point.
Kan du så skrive i "Svar"

Med venlig hilsen
Morten Møller
Avatar billede Temp_dk Nybegynder
10. juli 2012 - 19:25 #28
Det var rart at høre det virker

og samler ikke point
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
Computerworld tilbyder specialiserede kurser i database-management

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