Avatar billede madszeneli Nybegynder
24. marts 2011 - 21:38 Der er 9 kommentarer og
1 løsning

Problemer med sessions

Hej med jer,

Jeg skrev engang for nogle år siden en kode, som jeg lærte igennem en guide. Nu, flere år senere, vil jeg gerne lege lidt med det igen. Men, så fungere koden selvfølgelig ikke.



En del af min check_login.php ser således ud:

$connect = mysql_pconnect("xxxx","xxxx","xxxx")or die("Fejl 3 " . mysql_error());
    $db = mysql_select_db("xxxx");
    $sql_ud = mysql_query("SELECT * FROM `brugere` WHERE email = '$email' AND adgangskode = '$adgangskode'")or die("Fejl 2 " . mysql_error());
    $tjek = mysql_num_rows($sql_ud);
    if($tjek > 0){
    $hent_sql = mysql_fetch_array($sql_ud);
    $_SESSION['ID'] = $hent_sql['ID'];
    $_SESSION['dato'] = $hent_sql['dato'];
    $_SESSION['fornavn'] = $hent_sql['fornavn'];
    $_SESSION['efternavn'] = $hent_sql['efternavn'];
    $_SESSION['email'] = $hent_sql['email'];
    $_SESSION['adgangskode'] = $hent_sql['adgangskode'];
    $_SESSION['status'] = $hent_sql['status'];



Og dette stykke kode har jeg på den private side, som man kun skal se, hvis man er logget ind:

<?php


if(!isSet($_SESSION['email']))
{
header("Location: http://xxxxx.xxxxx.dk");
exit;
}
?>



Jeg logger ind, men bliver kastet tilbage til forsiden, fordi at den ikke loader sessions. Er der en som kan se, hvad der er gået helt galt, for jeg kan ikke? ;-(

På forhånd tak.
Avatar billede repox Seniormester
24. marts 2011 - 22:13 #1
Du mangler session_start() på dine sider...

http://php.net/session_start
Avatar billede morten12345678 Nybegynder
25. marts 2011 - 00:49 #2
Du skal skriver

session_start();

aller øverst på alle de sider som bruger sessions for at aktivere sessions på serveren. Ellers bruges de ikke og når du så forsøger at gemme data i dem forbliver de tomme.
Avatar billede repox Seniormester
25. marts 2011 - 07:32 #3
#2
hvorfor kopierer du bare min løsning?
Avatar billede The_Buzz Novice
25. marts 2011 - 07:38 #4
Fordi du ikke lavede det som et svar repox - vil jeg tro :) Nogle samler points som gale - personligt aner jeg ikke hvad jeg skal bruge dem til - og det må da være endnu mere svært for dem med mange points :)
Avatar billede repox Seniormester
25. marts 2011 - 08:26 #5
Pointene er ikke det som er vigtigt for mig; men jeg værdsætter da at blive krediteret for en korrekt løsning hvorfor et accepteret svar for mig tæller højere...
Så det kan godt pisse mig lidt af hvis nogen blot kopierer min løsning, men endnu mere når de så også får belønningen for min løsning.

Med hensyn til anvendelse af pointene, så tror jeg bestemt ikke formålet var at der sad brugere og hamstrede point - men det er svært at undgå, da det for nogen er et status-symbol at have flere point, men for andre er problemet at når man dygtiggjort sig når man et punkt, hvor man ikke selv spørger mere, hvorfor pointene ikke kan andet end hamstres.

hvem ved - måske kan man bruge pointene til noget udover at stille spørgsmål en dag...
Avatar billede madszeneli Nybegynder
25. marts 2011 - 08:55 #6
Kan du ikke give et svar Repox, så får du selvfølgelig pointene, i og med at du som den første løste mit problem.

Så kan jeg måske oprette en ny tråd, hvor du Morten12345678 kan hjælpe mig, hvis du altså vil... For jeg forstår ingenting :-)



Koden:

14. $connect = mysql_pconnect("xxxxx","xxxxx","xxxxx")or die("Fejl 3 " . mysql_error());
15. $db = mysql_select_db("xxxxx");
16. $bruger_id = $_GET['ID'];
17. $q = mysql_query("SELECT * FROM `brugere` WHERE ID = $bruger_id");
18. $r = mysql_fetch_array($q);
19.
20. include("private.php?id=".$hent_sql['ID']);



Problemet:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/xxxxxx.dk/private.php on line 18

Warning: include(private.php?id=) [function.include]: failed to open stream: No such file or directory in /var/www/xxxxxx.dk/private.php on line 20

Warning: include() [function.include]: Failed opening 'private.php?id=' for inclusion (include_path='.:/usr/share/php:/usr/share/pear') in /var/www/xxxxxx.dk/private.php on line 20



Jeg har jo brugt koden før, hvor det har eksisteret. Det er måske tre år siden, hvis ikke mere. Hvad er der sket i mellemtiden, som giver dette problem? :D
Avatar billede repox Seniormester
25. marts 2011 - 09:19 #7
Du fik et svar her.

Men for lige at kommentere på dit spørgsmål i #6, så vil jeg antage at din SQL sætning fejler, men det kan du finde ud af ved at skrive echo mysql_error() mellem linie 17 og 18.

Det du gør på linie 20 er ikke muligt.
Avatar billede madszeneli Nybegynder
25. marts 2011 - 09:27 #8
Hmm, okay. Men det er fordi at jeg logger ind via en ajax formular, og der kan jeg jo ikke bruge <? .$hent_sql['ID']);  ?>, så ville prøve at inkludere den.

Hvad findes der så af muligheder? :-(

Accepterer hermed dit svar.
Avatar billede repox Seniormester
25. marts 2011 - 09:42 #9
Når du henter en PHP fil ind med include(), så er de variabler du har oprettet i din fil også eksisterende i den fil du inkluderer.
Avatar billede olebole Juniormester
25. marts 2011 - 17:25 #10
<ole>

Hvad angår fejl ved Ajax, så kan du enten alert'e XHR-objektets rå responseText - eller du kan skrive en log på serveren:

<?php
$fp = fopen("log.txt", "w");
fwrite($fp, "En streng");
fclose($fp);
?>

/mvh
</bole>
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