Avatar billede rjs Nybegynder
03. februar 2008 - 11:52 Der er 8 kommentarer

Lagering af $_Session data.

Ok. n00b i sessions. så alt skal forklares meget grundlæggende tak.

Mit problem er:
jeg har følgende kode.

include ("class/lang.php");
session_start();

  if(isset($_POST['da'])){
    $_session['lang'] = "da";
  }

  if(isset($_POST['uk'])){
    $_session['lang'] = "uk";
  }

  if(isset($_POST['de'])){
    $_session['lang'] = "de";
  }

Hver blok er forbundet til en knap som skal skifte sessionen til det pågældende sprog (så vidt er i helt sikkert med.).

Mit problem er at hvis jeg trykker på en knap så virker det første gang. Men herefter bliver session informationerne åbenbart tømt og jeg skal trykke på knappen igen for at skifte sprog.

Ikke ret praktisk. Hvordan får jeg sessionen til at beholde sine data?
Avatar billede showsource Seniormester
03. februar 2008 - 14:36 #1
Sikkert ved at skrive det korrekt:
$_SESSION['lang'] = "da";
Avatar billede rjs Nybegynder
03. februar 2008 - 15:40 #2
ja ok... fuldstændig nytteløst svar da det giver det samme... (ja... har prøvet)
Avatar billede dkfire Nybegynder
03. februar 2008 - 15:48 #3
Har du husket session_start() på alle dine sider ???
Og så lige en anden ting, der er forskel på $_session og $_SESSION. Alle server variabler skal skrives med store bogstaver.
Avatar billede olebole Juniormester
03. februar 2008 - 15:59 #4
<ole>

ris >> nu, du selv har slået tonen an, må jeg gå udfra, du ikke bliver fornærmet, når jeg betegner din kommentar (03/02-2008 15:40:56) som en 'fuldstændig ubegavet kommentar'.

Hvis man beder om hjælp til lødsning af et problem, så er det ved Gud ikke begavet at kalde en helt igennem korrekt kommentar for et 'fuldstændig nytteløst svar'. Der findes i hvertfald nok ikke meget mere effektive metoder til at få andre til at afholde sig fra at hjælpe

/mvh
</bole>
Avatar billede rjs Nybegynder
03. februar 2008 - 16:15 #5
Fint. Jeg kan tage det. Men lad mig så spørge således:

Hvis svaret han giver er så korrekt hvorfor giver det så nøjagtigt samme resultat.

Havde ikke kommet med en ubegavet svar (ja det kan man vel godt kalde det.. som jeg skrev: "n00b i sessions") hvis svaret have givet et andet resultat, og svaret ikke have været så tomt i forhold til at jeg skriver at alt skal forklares meget grundlæggende. Der er jo ingen forklaring.

Svaret virker ikke. Ergo nytteløst.

Men jeg må tage følgende til efterretning:

showsource: Min respons var ikke ment som en nedgørelse af din villighed men snarere som en konstatering. Indrømmet det kunne have været formuleret anderledes.

dkfire: Forklar forskellen. Der sker som sagt intet i forhold til min anden opsætning.

olebole: Ja. Dig har jeg vidst svaret.
Avatar billede dkfire Nybegynder
03. februar 2008 - 16:51 #6
Ang. store og små bogstaver, så er det den måde hvor på PHP kan finde sine servervariabler.
Om showsource svar giver nogen løsning eller ej er vel egentlig ligemeget, så længe han svare korrekt. Og ud fra hvad du skriver og oplyser af kode, så virker hans svar meget relevant. Men det kunne type på der var noget andet galt i din kode, siden det ikke virker.
Prøv at vise noget mere kode hvor det ikke virker, helst hele filer, således at vi kan give dig et svar som virker.
Avatar billede rjs Nybegynder
03. februar 2008 - 17:07 #7
Jeg fandt en tekst på fransk der skriver noget om den her:   
SESSION_REGISTER();

Har den på nogen måde noget med det hele at gøre. Er ikke en haj til fransk.

Anywho... hele min sourcekode:

index.php:

<?php
SESSION_START();

  if(isset($_POST['da'])){
    $_SESSION['lang'] = "da";
  }

  if(isset($_POST['uk'])){
    $_SESSION['lang'] = "uk";
  }

  if(isset($_POST['de'])){
    $_SESSION['lang'] = "de";
  }

echo $_SESSION['lang'];
?>

<form method="POST" action="index.php">
  <input type="submit" value="" name="da" class="dk" title="Se www.link-tools.dk på dansk">
  <input type="submit" value="" name="uk" class="uk" title="Read www.link-tools.dk in English">
  <input type="submit" value="" name="de" class="de" title="www.link-tools.dk auf Deutch lehsen">
</form>

Som du kan se er det en ufattelig lille kode jeg har med at gøre (det er til træning). Det er den kode jeg har arbejdet med hele tiden (på nær de store bogstaver.). Men det producerer konsekvent det samme resultat.

Første klik virker. men Reloader jeg siden.. $_SESSION['lang'] = "" .
Avatar billede olebole Juniormester
03. februar 2008 - 17:27 #8
Nej, hvis første klik virker - og du reloader siden - vil du få en dialogboks, der spørger, om du vil poste formen igen ... og så får du naturligvis samme resultat som ved første post. Naturligvis forudsat, at koden står i 'index.php'. Denne her er testet og virker fint:

<?php
session_start();

  if(isset($_POST['da'])){
    $_SESSION['lang'] = "da";
    header("Location: ".$_SERVER["PHP_SELF"]);
  }

  if(isset($_POST['uk'])){
    $_SESSION['lang'] = "uk";
    header("Location: ".$_SERVER["PHP_SELF"]);
  }

  if(isset($_POST['de'])){
    $_SESSION['lang'] = "de";
    header("Location: ".$_SERVER["PHP_SELF"]);
  }

echo $_SESSION['lang'];
?>

<form method="POST" action="<?=$_SERVER["PHP_SELF"]?>">
  <input type="submit" value="da" name="da" class="dk" title="Se www.link-tools.dk på dansk">
  <input type="submit" value="uk" name="uk" class="uk" title="Read www.link-tools.dk in English">
  <input type="submit" value="de" name="de" class="de" title="www.link-tools.dk auf Deutch lehsen">
</form>

Virker den ikke for dig, må du tjekke, om cookies er disabled. Sørger du for, at alle fejlmeldinger er slået til?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester