[PHP] Nach Klicken auf Link Session-var aktualisieren

justme69

Im RL-Dauerstress
ID: 99452
L
25 April 2006
676
13
Servus zusaammen,

ein besserer Titel fiel mir nicht ein :oops:


ich verwende zum ersten Mal Sessions...

Ich habe z.B. 5 Links in einer tabellarischen Darstellung.
Nun möchte ich daß eine Sessionvariable - $lang - sich ändert, wenn ein Link angeklickt wird, abhängig vom gewählten Link.

kann ich $lang einfach mit &lang=de an die Session dranhängen ? Wohl eher nicht...

Wie mach ich das korrekt ?
 
Wenn Du die Variable lang in der Session speichern willst, ginge das beispielsweise folgendermassen:
PHP:
$_SESSION['lang'] = $_GET['lang'];
 
Wenn Du die Variable lang in der Session speichern willst, ginge das beispielsweise folgendermassen:
PHP:
$_SESSION['lang'] = $_GET['lang'];
das ist nicht das Problem, das Manual hab ich studiert ;)

meine Tabelle:
PHP:
  <table width="98%" border="0" cellspacing="2" cellpadding="2">
    <tr>
      <td> </td>
      <td><a href="<?php print $_SERVER['PHP_SELF']; ?>">deutsch</a> </td>
    </tr>
    <tr>
      <td> </td>
      <td><a href="<?php print $_SERVER['PHP_SELF']; ?>">englisch</a></td>
    </tr>
    <tr>
      <td> </td>
      <td><a href="<?php print $_SERVER['PHP_SELF']; ?>">spanisch</a></td>
    </tr>
    <tr>
      <td> </td>
      <td><a href="<?php print $_SERVER['PHP_SELF']; ?>">russisch</a></td>
    </tr>
    <tr>
      <td> </td>
      <td><a href="<?php print $_SERVER['PHP_SELF']; ?>">japanisch</a></td>
    </tr>
  </table>

Nun möchte ich abhängig vom gewählten Link $lang in $_SESSION setzen... ???
also $lang ='de'|'gb'|'es'|....
 
Naja, Du musst doch nur die Sprache korrekt übergeben. Also bspw:
HTML:
<a href="https://www.example.org/foobar.php?lang=de">deutsch</a>
Das in Kombination mit der obigen Anweisung sollte Dir weiterhelfen.
 
Nun möchte ich abhängig vom gewählten Link $lang in $_SESSION setzen... ???
also $lang ='de'|'gb'|'es'|....

Gegenfrage: Woher soll der Server wissen, ob Deutsch, Englisch oder sonstwas angeklickt wurde ? Da kommt ein Request für die Seite, die in $_SERVER['PHP_SELF'] lag und fertig.

Sprich: Du musst dem Server über die URL den gewählten Link mitteilen.

edit: War zu langsam :D
 
Naja, Du musst doch nur die Sprache korrekt übergeben. Also bspw:
HTML:
<a href="https://www.example.org/foobar.php?lang=de">deutsch</a>
Das in Kombination mit der obigen Anweisung sollte Dir weiterhelfen.
Dann habe ich zwar die Sprache in der URL aber nicht in der Variable....

Irgendwie sitze ich auf'm Schlauch...
Wenn ich vor die links in der Tabelle noch jeweils ein $lang='..' einbaue,, bekomme ich immer 'jp' als Ergebnis weitergereicht,da dieses als letztes Tabellenelement definiert ist... :arrow: nicht wass ich möchte...
Ich möchte eben nur die Sprache in $lang speichern/übergeben, die angeklickt wurde - und anhand von $lang unterscheiden, welche Sprache gewählt wurde, nicht anhand der URL....
 
Ich glaube, Du siehst grad den Wald vor lauter Bäumen nicht.

Du präsentierst dem User die ganzen Links zu den Sprachen, aus denen er wählen kann, nach dem von mir vorgeschlagenen Muster. Nach dem Klick auf einen Link verarbeitest Du diese Anfrage ja. Dort speicherst Du den übergebenen Wert in der Session mittels des oben geposteten Codes. Von da an ist der Wert in der Variablen $_SESSION['lang'] verfügbar.
 
Ich glaube, Du siehst grad den Wald vor lauter Bäumen nicht.
Hehe ... gut erkannt ;)

meine Seite fängt so an:
PHP:
<?php session_start(); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="https://www.w3.org/1999/xhtml">
<head>
<?php 
  error_reporting(E_ALL);
  if (!isset($_SESSION['lang']) )
  {
    $_SESSION['lang'] = 'de' ;
  }
  else { $sprache = $lang; }
?>

Muß das nun zu :
PHP:
<?php session_start(); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="https://www.w3.org/1999/xhtml">
<head>
<?php 
  error_reporting(E_ALL);
  if (!isset($_SESSION['lang']) )
  {
    $_SESSION['lang'] = 'de' ;
  }
  else { $sprache = $_GET['lang']; }
?>
werden ?
 
In etwa. Ich würde den Teil aber etwa in dieser Art gestalten:
PHP:
if (!empty($_GET['lang'])) {
  $_SESSION['lang'] = $_GET['lang'];
}
if (empty($_SESSION['lang'])) {
  $_SESSION['lang'] = 'de';
}
Es wird also erst überprüft, ob über die URL eine neue URL eingestellt werden soll und gegebenenfalls diese übernommen. Anschliessend wird geprüft, ob überhaupt eine Sprache gesetzt ist. Ist dies nicht der Fall, wird 'de' als Standardsprache gesetzt.

Im weiteren Verlauf des Skriptes kannst Du nun überall die aktuelle Sprache über $_SESSION['lang'] ermitteln.