Permalänk
Medlem

PHP Problem $_SESSION

Hej Alla!

Jag har ett problem där scenariot är följande:

1. test.php är en inloggningssida med user och pass "textfields".
2. "User" variabeln följer med till nästa sida, via submit, test2.php med session_start och $_SESSION
3. Jag har provat att printa variabeln på test2.php sidan för att validera att variabeln följer med korrekt och det gör den.
4. Jag vill nu att denna variabeln följer med till sidor även efter test2.php, t.ex. test3.php.

Jag får inte detta att fungera.

Jag vet, rörigt men jag kan inte printa hela koden då den innehåller information som är sekretessbelagd eller på något sätt exponerar saker som är känsliga och ändra all kod för att passa här är inget jag vill göra.

De jag kan printa är detta:

test.php

<?php $_SESSION['passcheck'] = $_POST['username']; ?>

test2.php samt test3.php

<?php session_start(); ?> <?php $passedstring = $_SESSION['passcheck']; echo "Passed string:" . $passedstring; ?>

Detta har jag med innan all HTML både på test2.php och test3.php men på test3.php följer 'passcheck' variabeln inte med.

Vad gör jag för fel? Tänker jag fel?
Måste jag på något sätt definiera om variabeln innan test3.php för att den ska följa med i session?

Mvh.
Christian

Visa signatur

| ASUS Maximumus V Formula, Intel i7-3770K @ 4.6GHz, Corsair vengance 16Gb @ 1600, ASUS nVidia GTX 970, Samsung EVO 840 256GB SSD, Fractal Design R3 Vitt, Logitech G502 Proteus Core, Ducky YYY | - 10251 Firestrike 3DMark

Permalänk
Medlem

För att kunna läsa och skriva till $_SESSION på övriga sidor krävs det att du exekverar

session_start();

på de sidor där du behöver tillgång till sessionsvariablerna.

EDIT: Du verkar inte köra den funktionen på "test.php" vilket resulterar i att när du sparar information till $_SESSION så knyts den inte till den sessionsinformation som hör till varje användare, utan den finns bara tillgänglig på den sidan.

Visa signatur

Citera eller nämn gärna mig (@ToJa92) om du svarar på något jag skrivit.
Uppskattar du eller blir hjälpt av ett inlägg jag skrivit är jag tacksam om du gillar det.

Permalänk
Medlem
Skrivet av ToJa92:

För att kunna läsa och skriva till $_SESSION på övriga sidor krävs det att du exekverar

session_start();

på de sidor där du behöver tillgång till sessionsvariablerna.

EDIT: Du verkar inte köra den funktionen på "test.php" vilket resulterar i att när du sparar information till $_SESSION så knyts den inte till den sessionsinformation som hör till varje användare, utan den finns bara tillgänglig på den sidan.

Mitt fel, session_start() ligger även på start.php eftersom variablen följer med till test2.php som den ska (Detta hade inte fungerat utan session_start på test.php).

EDIT:

Hittade felet men jag vet inte hur jag ska lösa det.

På test2.php har jag en dropdown list med val av olika sidor som man kan gå till, Om man väljer en sida i listan och klickar på en "submit" (POST) button.

När detta görs följer Inte variabeln med till den valda sidan. Dock följer variablen med om jag skriver in sidan direkt i adressfältet!?

Varför?

Mvh.
Christian

Visa signatur

| ASUS Maximumus V Formula, Intel i7-3770K @ 4.6GHz, Corsair vengance 16Gb @ 1600, ASUS nVidia GTX 970, Samsung EVO 840 256GB SSD, Fractal Design R3 Vitt, Logitech G502 Proteus Core, Ducky YYY | - 10251 Firestrike 3DMark

Permalänk
Medlem

Utan att få se mer utav koden så kan det bli lite svårt att hjälpa dig, du har förmodligen missat
något som strular till det för dig.

Jag har 2 tipps till dig.

1. prova använda dig av var_dump() istället för echo när du vill se vad en variabel innehåller (utvecklingssyfte)

var_dump($_SESSION['']);

var_dump ger dig mer information om det som printas ut och där kan du se om
det verkligen är tomt eller om något knäppt har hänt.

2. Se till att din $_POST verkligen har ett värde innan du matar in den i sessionen
det kan du enkelt göra med en if sats

if(isset($_POST['username'])) { $_SESSION['passcheck'] = $_POST['username']; }

Permalänk
Medlem
Skrivet av Bosnic:

Utan att få se mer utav koden så kan det bli lite svårt att hjälpa dig, du har förmodligen missat
något som strular till det för dig.

Jag har 2 tipps till dig.

1. prova använda dig av var_dump() istället för echo när du vill se vad en variabel innehåller (utvecklingssyfte)

var_dump($_SESSION['']);

var_dump ger dig mer information om det som printas ut och där kan du se om
det verkligen är tomt eller om något knäppt har hänt.

2. Se till att din $_POST verkligen har ett värde innan du matar in den i sessionen
det kan du enkelt göra med en if sats

if(isset($_POST['username'])) { $_SESSION['passcheck'] = $_POST['username']; }

Tack för ditt svar!

Jag hittade själv felet och efter massa dagars kodande i testmiljö hade jag glömt att byta ut testsidorna mot de skarpas namn och därav att det felade.

Jag ska prova var_dump() nästa gång.

Varför ifsset och inte !empty? Eller !empty är bara vid textfields?

Mvh.
Christian

Visa signatur

| ASUS Maximumus V Formula, Intel i7-3770K @ 4.6GHz, Corsair vengance 16Gb @ 1600, ASUS nVidia GTX 970, Samsung EVO 840 256GB SSD, Fractal Design R3 Vitt, Logitech G502 Proteus Core, Ducky YYY | - 10251 Firestrike 3DMark

Permalänk
Medlem
Skrivet av terrax:

Tack för ditt svar!
Varför ifsset och inte !empty? Eller !empty är bara vid textfields?

isset returnerar bara true/false och blir automatiskt false om inget värde är angivet

hittade denna som förklarar lite snabbt https://www.virendrachandak.com/techtalk/php-isset-vs-empty-v...