Avatar billede googolplex Novice
09. juli 2003 - 00:04 Der er 9 kommentarer og
2 løsninger

Foreach() og lidt session - hjælp

Jeg har et todimensionelt array, hvor array[0] indeholder en lang række oplysninger der skal ligges over i nogle sessions. I øjeblikket ser set således ud:

$_SESSION['brugernavn'] = $array[0]['brugernavn'];
$_SESSION['adgangsniveau'] = $array[0]['adgangsniveau'];
$_SESSION['navn'] = $array[0]['navn'];
$_SESSION['efternavn'] = $array[0]['efternavn'];

Osv!

Jeg har prøvet at lave det lidt nemmere med foreach på følgende måde (der ikke funker):

foreach($array[0] as $noegle => $vaerdi) {
    $_SESSION[$noegle] = $vaerdi;
}

Hvad gør jeg forkert ?
Avatar billede Slettet bruger
09. juli 2003 - 00:13 #1
Din foreach er rigtig nok.
Avatar billede bearhugx Nybegynder
09. juli 2003 - 00:14 #2
prøv evt.
  $_SESSION[ "".$noegle ] = $vaerdi;
Avatar billede ahv Nybegynder
09. juli 2003 - 00:14 #3
Dette virker fint ->

<?php
session_start();

$array['0']['fornavn'] = "Alexander";
$array['0']['efternavn'] = "Viborg";
$array['0']['Alder'] = "17";

foreach ($array['0'] as $name => $value) {
    $_SESSION[$name] = $value;
}
?>
Avatar billede googolplex Novice
09. juli 2003 - 00:15 #4
Hvorfor funker det så ikke ?

Det eneste jeg har gjort, er at bytte det øverste ud med min foreach, og så overfører den ikke mine $_SESSIONs mere :(
Avatar billede Slettet bruger
09. juli 2003 - 00:17 #5
bearhugx: Vrøvl.
Avatar billede googolplex Novice
09. juli 2003 - 00:22 #6
Her er hele min kode:

Første del:

session_start();
if ($_POST['logout']) {
    session_unset();
    session_destroy();
} else if ($_POST['login'] && $_POST['brugernavn'] != " Brugernavn" && $_POST['kodeord']) {
    $brugernavn = $_POST['brugernavn'];
    $kodeord = md5($_POST['kodeord']);
    aabn_forbindelse();
    $sql = "SELECT * FROM brugere WHERE BINARY brugernavn = \"$brugernavn\" AND kodeord = \"$kodeord\"";
    $array = sql_spoerg_og_faa_svar($sql);
    luk_forbindelse();
    if($array > 0) { // HER SKAL MIN FOREACH VÆRE I STEDET !!!
        $_SESSION['brugernavn'] = $array[0]['brugernavn'];
        $_SESSION['adgangsniveau'] = $array[0]['adgangsniveau'];
    } else {
        header("Location: http://www.ladefoged-roenne.dk/index.php?side=fejl&type=login&menu=6521-3");
    }
}

Anden del (i min login boks):

if (isset($_SESSION['adgangsniveau'])) {
    echo "Du er inde :P";
} else {
    // En login form
}

Med foreach overfører de mine sessions en gang, men så ikke mere.
Avatar billede googolplex Novice
09. juli 2003 - 01:09 #7
Er der slet ikke nogen der har et bud, jeg synes godt nok det er weird :(

Det er som om mine SESSIONS bliver slettet når jeg bruger foreach()...
Avatar billede ahv Nybegynder
09. juli 2003 - 01:23 #8
if ($_POST['logout']) {
    session_unset();
    session_destroy();
} else if ($_POST['login'] && $_POST['brugernavn'] != " Brugernavn" && $_POST['kodeord']) {
    $brugernavn = $_POST['brugernavn'];
    $kodeord = md5($_POST['kodeord']);
    aabn_forbindelse();
    $sql = "SELECT * FROM brugere WHERE BINARY brugernavn = \"$brugernavn\" AND kodeord = \"$kodeord\"";
    $array = sql_spoerg_og_faa_svar($sql);
    luk_forbindelse();
    if (count($array['0']) != 0) {
        foreach ($array['0'] as $name => $value) {
            $_SESSION[$name] = $value;
        }
    } else {
        header("Location: http://www.ladefoged-roenne.dk/index.php?side=fejl&type=login&menu=6521-3");
    }
}
Avatar billede googolplex Novice
09. juli 2003 - 10:40 #9
Ingen forskel :(
Avatar billede googolplex Novice
09. juli 2003 - 14:09 #10
Så er problemet løst, ikke noget at side til, at I ikke kunne hjælpe, 'fejlen' lå i den funktion (sql_spoerg_og_faa_svar()) jeg brugte til at trække ud af databasen:

function sql_spoerg_og_faa_svar($query) {

    $resultat = mysql_query($query);

    if (!$resultat) {
        udskriv_fejl("Kunne ikke udføre: <b>$query</b>");
    }

    while ($raekke = mysql_fetch_array($resultat)) {
        $resultat_array[] = $raekke;
    }
   
    return $resultat_array;
}

Da jeg skiftede mysql_fetch_array() ud med mysql_fetch_assoc() virkede det hele :)

MEN er der en der kan forklare mig, hvorfor mine SESSIONS alligevel blev overført EN gang ?! Det fatter jeg simpelthen ikke :(

Kan man løse problemet selvom man bruger mysql_fetch_array() ? Det er jo det samme som både mysql_fetch_assoc() & mysql_fetch_row() så jeg fatter ikke, det ikke virker med den !!

Nå, ahv og  mercur8, smid et svar, så får I point for ulejligheden :)

Men en forklaring på overstående vil jeg sætte pris på, for det går over mit hoved !
Avatar billede googolplex Novice
09. juli 2003 - 22:02 #11
lukketid
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