Avatar billede skwizie Nybegynder
20. februar 2009 - 17:31 Der er 30 kommentarer

Session gemmer ikke

Jeg har et problem med at jeg ikke kan gemme i min session

Denne linje gemmer ikke noget:
$_SESSION['dataSend'] = "".$_POST["profileEmail"]."";

Mens denne fungere efter hensigten:
$_SESSION['dataSend'] = "TEST MED SESSION";

Hvad går der galt?
Avatar billede erikjacobsen Ekspert
20. februar 2009 - 17:41 #1
Der står ingenting i $_POST["profileEmail"]  ?
Avatar billede skwizie Nybegynder
20. februar 2009 - 17:43 #2
Jo, for hvis jeg laver en:

print $_POST["profileEmail"]

så kommer den rigtige værdi frem.
Avatar billede nemlig Professor
20. februar 2009 - 17:49 #3
Hvad sker der, hvis du skriver:

$_SESSION['dataSend'] = $_POST["profileEmail"];
Avatar billede skwizie Nybegynder
20. februar 2009 - 17:55 #4
Det er nøjagtig samme situation... Det virk MEGET mærkeligt for mig
Avatar billede skwizie Nybegynder
20. februar 2009 - 18:06 #5
Nogle forslag til hvad der kan være galt?
Avatar billede nemlig Professor
20. februar 2009 - 18:17 #6
Jeg går jo ud fra, at du har sat session_start(), da den anden sessionvariabel virker.

Kan du ikke sende den kode, der driller.
Avatar billede skwizie Nybegynder
20. februar 2009 - 18:24 #7
switch($siteRewrite[1]){

// Validerer og gemmer data
case "saveUserData":

$_SESSION['dataSend'] = $_POST["profileEmail"];

// Her er så noget kode som validere input fra formen, og sender brugeren tilbage hvis ikke inputtet overholder kravene!
break;

default:
print '
<form method="post" action="/opret-bruger/saveUserData/" name="register">
<input type="text" size="25" value="'.$_SESSION['dataSend'].'" name="profileEmail" id="formTxt">
</form>
';
}
Avatar billede skwizie Nybegynder
20. februar 2009 - 18:35 #8
Det virker mærkeligt at det ikke virker syntes jeg...
Avatar billede skwizie Nybegynder
20. februar 2009 - 18:51 #9
Og ja... har selvfølgelig sat session_start()
Avatar billede skwizie Nybegynder
20. februar 2009 - 18:56 #10
Det sjove er at jeg kan også sagtens sætte værdien af session til andre php funktioner... f.eks. date("Y")
Avatar billede skwizie Nybegynder
20. februar 2009 - 18:56 #11
Men den vil overhovedet ikke gemme værdien fra formen i sessionen!
Avatar billede nemlig Professor
20. februar 2009 - 19:00 #12
hmmm - det virker underligt.
Og du siger, at hvis du skriver:

print $_POST["profileEmail"];

fx lige efter

$_SESSION['dataSend'] = $_POST["profileEmail"];

så vises indholdet korrekt?
Avatar billede skwizie Nybegynder
20. februar 2009 - 19:01 #13
jeps, det vises helt korrekt!
Avatar billede nemlig Professor
20. februar 2009 - 19:06 #14
Og du siger, at det virker med andre Sessions-variabler, fx.

$_SESSION['dato'] = date("y");
Avatar billede skwizie Nybegynder
20. februar 2009 - 19:08 #15
Det virker hvis jef f.eks.:

$_SESSION['dataSend'] = date("Y");
Avatar billede nemlig Professor
20. februar 2009 - 19:14 #16
PAS - det forstår jeg ikke.
Jeg prøver gerne koden på min lokale server, hvis du gerne vil have et tjek på, om det virker andre steder.
Så skal du lige poste koden her eller smide i en mail på nemlig10@hotmail.com
Avatar billede erikjacobsen Ekspert
20. februar 2009 - 19:27 #17
Det virker som om du aflæser $_POST variablen, selv om man ikke fra en POST-action.
Avatar billede skwizie Nybegynder
20. februar 2009 - 20:01 #18
hmm... det forstår jeg ikke helt! Kan du prøve at uddybe eller komme med et forslag til løsning?
Avatar billede erikjacobsen Ekspert
20. februar 2009 - 20:08 #19
Løsning? Ikke ud fra dine stumper af kode, nej. Det er hjælp til selvhjælp.


Uddybning? Måske: Hvis du kommer ind på siden http://whatev.er/opret-bruger/saveUserData/ uden at komme fra din form, så ser det ud til at din sessionsvariabel nulstilles.

Men det er stadig et gæt, fordi vi kun ser en mikroskopisk del.
Avatar billede skwizie Nybegynder
20. februar 2009 - 20:26 #20
Som jeg har nævnt tidligere i dette indlæg:

<form method="post" action="/opret-bruger/saveUserData/" name="register">
<input type="text" size="25" value="'.$_SESSION['dataSend'].'" name="profileEmail" id="formTxt">
</form>

Så jeg kommer ind på siden fra en form, men kommer tilbage hertil når session er sat, og gerne skulle indeholde variabler...
Avatar billede nemlig Professor
20. februar 2009 - 20:38 #21
Hvis du ikke vil smide hele koden her, kan du så ikke lave noget kort og færdigt kode, som viser problemet.

Så er det meget nenmmere, at pege på problemet.
Avatar billede skwizie Nybegynder
20. februar 2009 - 20:46 #22
switch($siteRewrite[1]){

// Validerer og gemmer data
case "saveUserData":

unset($_SESSION["dataSend"]);

    $_SESSION['dataSend'] = array(
                            0 => $_POST["profileEmail"],
                            1 => $_POST["profileEmailCon"],
                            2 => $_POST["profilePassword"],
                            3 => $_POST["profilePasswordCon"],
                            4 => $_POST["profileName"],
                            5 => $_POST["profileLastName"],
                            6 => $_POST["profilePostcode"],
                            7 => $_POST["profileCityName"],
                            8 => $_POST["profileCountry"],
                            9 => $_POST["profileBDay"],
                            10 => $_POST["profileBMonth"],
                            11 => $_POST["profileBYear"],
                            12 => $_POST["profileSex"],
                            13 => $_POST["profileNewsletter"],
                            14 => $_POST["profileTerms"],
                            );

if(empty($_SESSION['dataSend'][0]) || empty($_SESSION['dataSend'][1]))
        error($error1, $_SERVER['HTTP_REFERER'], $errorType1); // Den sender brugeren tilbage til /opret-bruger/
}else{
// indsætter i DB
}
break;

default:
print '
<form method="post" action="/opret-bruger/saveUserData/" name="register">
<input type="text" size="25" value="'.$_SESSION['dataSend'].'" name="profileEmail" id="formTxt">
</form>
';
}
Avatar billede skwizie Nybegynder
20. februar 2009 - 20:46 #23
switch($siteRewrite[1]){

// Validerer og gemmer data
case "saveUserData":

unset($_SESSION["dataSend"]);

    $_SESSION['dataSend'] = array(
                            0 => $_POST["profileEmail"],
                            1 => $_POST["profileEmailCon"],
                            2 => $_POST["profilePassword"],
                            3 => $_POST["profilePasswordCon"],
                            4 => $_POST["profileName"],
                            5 => $_POST["profileLastName"],
                            6 => $_POST["profilePostcode"],
                            7 => $_POST["profileCityName"],
                            8 => $_POST["profileCountry"],
                            9 => $_POST["profileBDay"],
                            10 => $_POST["profileBMonth"],
                            11 => $_POST["profileBYear"],
                            12 => $_POST["profileSex"],
                            13 => $_POST["profileNewsletter"],
                            14 => $_POST["profileTerms"],
                            );

if(empty($_SESSION['dataSend'][0]) || empty($_SESSION['dataSend'][1]))
        error($error1, $_SERVER['HTTP_REFERER'], $errorType1); // Den sender brugeren tilbage til /opret-bruger/
}else{
// indsætter i DB
}
break;

default:
print '
<form method="post" action="/opret-bruger/saveUserData/" name="register">
<input type="text" size="25" value="'.$_SESSION['dataSend'].'" name="profileEmail" id="formTxt">
</form>
';
}
Avatar billede skwizie Nybegynder
20. februar 2009 - 20:48 #24
Grunden til jeg laver en unset af sessionen er at cleare den hvis der er ændret i nogle af input felterne, og man stadig ikke opfylder kravene. Så det hele tiden er de nyeste data den indeholder :)
Avatar billede erikjacobsen Ekspert
20. februar 2009 - 21:14 #25
Når du nu siger, den ikke gemmer noget i din session, er den så tom, eller består den af et array af tomme værdier?
Avatar billede erikjacobsen Ekspert
20. februar 2009 - 21:15 #26
Og når du skriver

<input type="text" size="25" value="'.$_SESSION['dataSend'].'" name="profileEmail" id="formTxt">

så tager du ikke hensyn til at $_SESSION['dataSend'] er et array? Ikke forstået.
Avatar billede skwizie Nybegynder
20. februar 2009 - 21:22 #27
Det skal selvfølgelig være:

<input type="text" size="25" value="'.$_SESSION['dataSend'][0].'" name="profileEmail" id="formTxt">

Og sessionen er bare tom
Avatar billede erikjacobsen Ekspert
20. februar 2009 - 21:27 #28
Ok. Kunne du så tænke dig at vise den kode, du rent faktisk kører, og som ikke virker. Gættekonkurrencer er sjove, men hvis du har tid nok, er det ok med mig.
Avatar billede skwizie Nybegynder
20. februar 2009 - 21:58 #29
Øhhh, den kode jeg viser er sådan set den jeg kører, men fair nok. Hvis du skal være sur og uhøflig, så undlad at indlede dig på at svare spørgsmål her!!

Med det antal point du har, burde du have en bedre tone, men det er der åbenbart nogle mennesker som ikke har!

Jeg fundet en løsning, hvor jeg har lavet om på strukturen hvorpå jeg sender dataene!
Avatar billede nemlig Professor
20. februar 2009 - 22:13 #30
Jeg finder faktisk ericjacobsens kommentarer morsomme, i lyset af at der spørges flere gange efter koden, eller at det "lugter" af, at fejlen findes i noget af koden, som ikke er vist i tråden.

Det er nu engang noget nemmere at fejlsøge, når vi kender hele koden.
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