Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people, just like you, are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
Solved

PHP session variable

Posted on 2009-07-15
8
194 Views
Last Modified: 2013-12-13
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
Comment
Question by:slicethepie
  • 4
  • 2
  • 2
8 Comments
 
LVL 28

Expert Comment

by:gamebits
ID: 24859383
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
 

Author Comment

by:slicethepie
ID: 24859414
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
 
LVL 28

Expert Comment

by:gamebits
ID: 24859540
I was think more like


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

0
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.

 

Author Comment

by:slicethepie
ID: 24859683
Cool, it works. Thanks

How does it know what the default language is though?
0
 

Author Comment

by:slicethepie
ID: 24859743
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
 
LVL 10

Accepted Solution

by:
racmail2001 earned 50 total points
ID: 24859841
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
 
LVL 10

Expert Comment

by:racmail2001
ID: 24859847
i hope my spelling it's corect
0
 

Author Comment

by:slicethepie
ID: 24860037
Works perfectly, thank you
0

Featured Post

Networking for the Cloud Era

Join Microsoft and Riverbed for a discussion and demonstration of enhancements to SteelConnect:
-One-click orchestration and cloud connectivity in Azure environments
-Tight integration of SD-WAN and WAN optimization capabilities
-Scalability and resiliency equal to a data center

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Things That Drive Us Nuts Have you noticed the use of the reCaptcha feature at EE and other web sites?  It wants you to read and retype something that looks like this.Insanity!  It's not EE's fault - that's just the way reCaptcha works.  But it is …
Part of the Global Positioning System A geocode (https://developers.google.com/maps/documentation/geocoding/) is the major subset of a GPS coordinate (http://en.wikipedia.org/wiki/Global_Positioning_System), the other parts being the altitude and t…
Learn how to match and substitute tagged data using PHP regular expressions. Demonstrated on Windows 7, but also applies to other operating systems. Demonstrated technique applies to PHP (all versions) and Firefox, but very similar techniques will w…
The viewer will learn how to create a basic form using some HTML5 and PHP for later processing. Set up your basic HTML file. Open your form tag and set the method and action attributes.: (CODE) Set up your first few inputs one for the name and …

808 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question