PHP session variable

Hi

I have a website that uses language files for all the text and I want to have a default language and use a form to allow users to select a different language.

I want to store the selected or default language in a session variable.

The code I'm using is in the code section.

The outcome is that the site loads in the default language of english and the page changes to german if the german button is pressed but it changes back to english when you navigate to a different page.

I'm clearly going wrong but I have no idea where so your help is appreciated.

Cheers
Andy
Code to set session variable:
 
if(isset($_POST['language'])) {
    $_SESSION['language'] = $_POST['language'];
}else{
    $_SESSION['language'] = 'english';}
 
Form for user language selection:
 
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
            <input type="submit" name="language" value="german" />
        	<input type="submit" name="language" value="english" />
            </form>

Open in new window

slicethepieAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

gamebitsCommented:
You should do it the other way around, check if the session isset if not set the session using the post variable, this way when you get to the next page and the session has been set it will not default to English.
0
slicethepieAuthor Commented:
I think you meant like this:



if(isset($_SESSION['language'])) {
    $_SESSION['language'] = $_POST['language'];
}else{
    $_SESSION['language'] = 'english';}




Which gives me this as a result:

Undefined index: language in

I'm guessing this is because the form hasn't been submitted yet
0
gamebitsCommented:
I was think more like


if(!isset($_SESSION['language'])) {
    $_SESSION['language'] = $_POST['language'];
}

0
Exploring ASP.NET Core: Fundamentals

Learn to build web apps and services, IoT apps, and mobile backends by covering the fundamentals of ASP.NET Core and  exploring the core foundations for app libraries.

slicethepieAuthor Commented:
Cool, it works. Thanks

How does it know what the default language is though?
0
slicethepieAuthor Commented:
I was wrong, it doesn't work it just had the variable stored from earlier in my session

variable is just empty so the site can't load the language file
0
racmail2001Commented:
can you try this?
if(!isset($_SESSION['language'])) {  $_SESSION['language'] = 'english';}
// if language is not set - go with english
if (isset($_POST['language'])){    $_SESSION['language'] = $_POST['language'] ;}
// if you have post for language, change it with hat user selected

Open in new window

0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
racmail2001Commented:
i hope my spelling it's corect
0
slicethepieAuthor Commented:
Works perfectly, thank you
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
PHP

From novice to tech pro — start learning today.