Jump to content

variable doesn't show up in url


davvid

Recommended Posts

hey guys,

 

I'm in the process of transforming my static html website into "something" more dynamic. I came across an article on bilingual website (http://www.jacksonengineering.net/proj_phplanguage.php) and I basically used the same idea for my project. Everything works fine except for one thing - links to different language web pages are generated correctly page.php?lang=pl but when I click on the link, the url loses the variable and looks like  page.pl.php What to do?

 


language.php

<?php
//the url ? language declaration should have preference over the page name
$pagename = basename($_SERVER['PHP_SELF'],".php");
$pagenamearray = explode(".",$pagename);
if (count($pagenamearray) == 2){ //there is currently a bi-lingual site page loaded
$_SESSION['language'] = $pagenamearray[1];
$urllang = $pagenamearray[1];
}else{ //this page must be a non bi-lingual page
$urllang = 'en';
}
//check for a language selection on the url
if(isset($_GET["lang"])){//language has been passed via url
$_SESSION['language'] = htmlspecialchars($_GET["lang"]); //set it what was found
}
///if there still is no language set, go with english for a default
if(!isset($_SESSION['language'])){
$_SESSION['language'] = 'en';
}
//now we think we have the session language figured out
//
//now check for a version of the current page in the desired language
//lets make some things clear first
//the current page url is either en or pl from $urllang
if($urllang != $_SESSION['language']){ //if the url isn't the same as the $_SESSION
if($_SESSION['language'] == 'en'){//if it should be english then load the english
  header("Location: $pagenamearray[0].php");
  exit;
} 
if($_SESSION['language'] == 'pl'){
  //construct the name of the file if it existed filename.pl.php
  $plVersion = $pagenamearray[0] . ".pl.php";
  //we have to check if a pl version actually exists of this page
  if(file_exists($plVersion)){//redirect if it exists
   header("Location: $plVersion");
   exit;//stop executing things
  }else{$pagelangnotfound = true;}
}
}
?>

 


header.php

<?php
if ($_SESSION['language'] != 'en'){
echo 'Select Language: <a href="'. $_SERVER['PHP_SELF'] . '?lang=en"><img src="img/gb.gif" alt="English" class="off" /></a>';
}else{echo 'Wybierz J&#281;zyk: <img src="img/gb.gif" alt="English" />';}
?> 
<?php
if ($_SESSION['language'] != 'pl'){
echo '<a href="'. $_SERVER['PHP_SELF'] . '?lang=pl"><img src="img/pl.gif" alt="Polish" class="off" /></a>';
}else{
echo '<img src="img/pl.gif" alt="Polish" />';

}
?>

 

menu.php

<?php if($pageOn == 'index.php'){?> id="selected"<?php }?>> <a href="index.php">Main Page</a>

 


page.php

<?php session_start();
include "language.php";

$pageOn = basename($_SERVER['PHP_SELF']);
$mItem = $pageOn;

?>
<?php include("header.php"); ?>
<?php include("menu.php"); ?>

English content

 


page.pl.php

<?php session_start();
include "language.php";

$pageOn = basename($_SERVER['PHP_SELF']);
$mItem = $pageOn;

?>
<?php include("header.php"); ?>
<?php include("menu.php"); ?>

Polish content

Link to comment
Share on other sites

  • 2 weeks later...

When the link is generated it points to page.pl.php

 

When I view the generated source the link in menu shows the variable page.php?lang=pl but after clicking the link I'm ending up with page.pl.php in the address bar.

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.