Improve company productivity with a Business Account.Sign Up

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 206
  • Last Modified:

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

0
slicethepie
Asked:
slicethepie
  • 4
  • 2
  • 2
1 Solution
 
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
Get your problem seen by more experts

Be seen. Boost your question’s priority for more expert views and faster solutions

 
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
 
racmail2001Commented:
i hope my spelling it's corect
0
 
slicethepieAuthor Commented:
Works perfectly, thank you
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 4
  • 2
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now