Taal veranderd niet op dynamische paginas

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Snelle Jaap

Snelle Jaap

07/02/2017 11:37:08
Quote Anchor link
Ik heb een stukje code om van taal te switchen op mijn site. Dat werkt prima behalve op dynamische pagina's. Als ik bijvoorbeeld de taal aanpas op de index.php dan onthoud hij dat overal maar ik kan de taal alleen aanpassen op index.php contact.php en andere vaste paginas.

Als ik de taal wil aanpassen op bijvoorbeeld service-naam.html (in werkelijkheid content.php op de server) dan gebeurd er niets. Hij blijft altijd op de taal die al gekozen is op een niet dynamische pagina.

Waar kan dat aan liggen?

Hier het stuk waarmee je de taal kiest:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?
$actual_link
= 'http://' . $_SERVER['HTTP_HOST'] . strtok($_SERVER['REQUEST_URI'], '?');
<
a href="<? echo $actual_link; ?>?lang=en" class="btn-selector">EN</a>
<
ul>
    <
li class="active"><a href="<? echo $actual_link; ?>?lang=en">EN</a></li>
    <
li><a href="<? echo $actual_link; ?>?lang=fr">FR</a></li>
    <
li><a href="<? echo $actual_link; ?>?lang=nl">NL</a></li>
<
/ul>
?>

En dit staat bovenaan mijn connection file:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?
session_start();

if ($_GET['lang'] != '') {
    $_SESSION['lang'] = $_GET['lang'];
}
else if ($_SESSION['lang'] == '') {
    $_SESSION['lang'] = 'nl';
}

?>


De urls van de dynamische paginas kloppen ook gewoon. Het taal switch linkje gaat hiernaartoe bij bijvoorbeeld over ons: http://website.com/over-ons.html?lang=fr in plaats van http://website.com/content.php?lang=fr

Hier nog een stuk van mijn htaccess mocht dat het iets duidelijker maken:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?
DirectoryIndex
RewriteEngine  on

#Indexes uitzetten
Options -Indexes

#Cross site access toestaan
Header set Access-Control-Allow-Origin "*"
Header add Access-Control-Allow-Headers "origin, x-requested-with, content-type"

#CMS rewrite
RewriteRule ^cms/$ /cms/administrator [L]

#Website naam

DirectoryIndex index.php

RewriteRule            ^(.*).html content.php?alias=$1 [L]

?>
Gewijzigd op 07/02/2017 14:52:24 door Snelle Jaap
 
PHP hulp

PHP hulp

20/04/2024 06:04:46
 
- Ariën  -
Beheerder

- Ariën -

07/02/2017 11:40:46
Quote Anchor link
Waarom gebruik je de short-php tags (<?), en niet de volledige php-tags (<?php)?

Deze kunnen door de hosting eventueel worden uitgezet, en daarmee zal je hele script niet meer werken, en leesbaar worden voor iedereen.
Gewijzigd op 07/02/2017 11:41:26 door - Ariën -
 
Snelle Jaap

Snelle Jaap

07/02/2017 11:49:25
Quote Anchor link
**quoteknip**
Die gebruik ik om het in code formaat op deze site neer te zetten. Veel sneller dan elke keer [kode] (met een c maar anders maakt hij gelijk van alle tekst code) typen. Plus als ik 2 stukken code wil splitsen dan werkt dat niet, dus dan maar zo.
Gewijzigd op 07/02/2017 11:55:55 door - Ariën -
 
Joakim Broden

Joakim Broden

07/02/2017 11:56:45
Quote Anchor link
Dat bedoelt Arient niet.. Je gebruikt (<?) in je code en niet (<?php) bijvoorbeeld bij <a href="<? echo $actual_link; ?>?lang=en">... (<?) word niet op elke server ondersteund, gebruik daarom gewoon (<?php).

Wat is de code van content.php?
Gewijzigd op 07/02/2017 11:57:44 door Joakim Broden
 
- Ariën  -
Beheerder

- Ariën -

07/02/2017 11:57:51
Quote Anchor link
Ik zie het ook bij je echo's staan, dus ik hoop dat je de korte notatie niet in de praktijk gebruikt.

Verder is het niet nodig om voorlaatste berichten integraal te quoten. Je kan prima gebruik maken van het grote "Snel reageren" invoerveld onderaan het topic.
Gewijzigd op 07/02/2017 11:58:57 door - Ariën -
 
Snelle Jaap

Snelle Jaap

07/02/2017 12:02:52
Quote Anchor link
Joakim Broden op 07/02/2017 11:56:45:
Dat bedoelt Arient niet.. Je gebruikt (<?) in je code en niet (<?php) bijvoorbeeld bij <a href="<? echo $actual_link; ?>?lang=en">... (<?) word niet op elke server ondersteund, gebruik daarom gewoon (<?php).

Wat is de code van content.php?

Op mijn server wel, lijkt me dat het juist alleen maar meer ondersteuning zal gaan krijgen ipv van minder toch? Scheelt toch wat typwerk.

Die code is niet relevant voor dit probleem. Hier het stuk php op die pagina, voor de rest overal wat echos op de pagina:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?
include 'includes/header.php';

if(isset($_GET['alias'])) {
  $content                  = "SELECT * FROM `lb_content` WHERE alias = '".$conn->real_escape_string($_GET['alias'])."' AND state = 1 ORDER BY ordering";
  $contentcon                 = $conn->query($content);
  $counter                     = "UPDATE lb_content SET hits=hits+1 WHERE alias = '".$_GET['alias']."'";
  $countercon                = $conn->query($counter);
  $contentcr                = array();
  while ($contentcr[]         = $contentcon->fetch_array());

  //  content categories
  $categorie              = "SELECT * FROM `lb_categories` WHERE alias = '".$conn->real_escape_string($_GET['alias'])."' AND published = 1";
  $categoriecon         = $conn->query($categorie);
  $categoriecr            = array();
  while ($categoriecr[] = $categoriecon->fetch_array());

  $contentimages = $contentcr[0]['images'];
  $contentimg = json_decode($contentimages);

  if($contentimg->image_intro != ''){
    $image = '<img class="img-responsive" src="cms/'.$contentimg->image_intro.'">';
  }
else{
    $image = '';
  }


  $categorietimages = $categoriecr[0]['params'];
  $catimg = json_decode($categorietimages);

  if($catimg->image != ''){
    $image1 = '<img class="img-responsive" src="cms/'.$catimg->image.'">';
  }
else{
    $image1 = '';
  }
}

?>



Toevoeging op 07/02/2017 12:03:21:

@arien ah zal ik doen.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

07/02/2017 12:05:32
Quote Anchor link
Gokje: De inhoud van je dynamische pagina's komen uit de database? En waarschijnlijk is de database niet ingericht om de content in verschillende talen op te slaan -of- zijn de andere talen niet aangemaakt in de database?
Gewijzigd op 07/02/2017 12:06:23 door Frank Nietbelangrijk
 
Ozzie PHP

Ozzie PHP

07/02/2017 12:05:32
Quote Anchor link
>> lijkt me dat het juist alleen maar meer ondersteuning zal gaan krijgen ipv van minder toch?

Nee.
 
Ben van Velzen

Ben van Velzen

07/02/2017 12:06:49
Quote Anchor link
Je hebt in je .htaccess ook QSA gebruikt voor je rewriterule die naar content.php leidt?
Also,
>> lijkt me dat het juist alleen maar meer ondersteuning zal gaan krijgen ipv van minder toch?
Ooit gehoord van deprecation?
Gewijzigd op 07/02/2017 12:07:26 door Ben van Velzen
 
Ozzie PHP

Ozzie PHP

07/02/2017 12:07:48
Quote Anchor link
Ik vind het overigens wel een typische vraag die je hebt.

Heb je die website niet zelf gemaakt? Omdat je niet weet hoe dit werkt?
 
Ivo P

Ivo P

07/02/2017 12:14:07
Quote Anchor link
van php.net:
"PHP also allows for short open tag <¿ (which is discouraged since it is only available if enabled using the short_open_tag php.ini configuration file directive, or if PHP was configured with the --enable-short-tags option).
"

En als je dan per se voor "kort" wilt gaan, dan kun je wel altijd gebruiken

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?= 'hello world'; ?>


http://php.net/manual/en/language.basic-syntax.phptags.php
Gewijzigd op 07/02/2017 12:39:59 door Ivo P
 
Bart V B

Bart V B

07/02/2017 12:38:06
Quote Anchor link
Ik snap dat jou echt niet.
Wat is nou 3 letters meer tikken zoveel sneller als short hand werken?
Terwijl als je short hand doet je niet de if-jes en else-jes e.d. niet mee pakt.

Op zich kan ik short hand wel waarderen.
Als je een flinke lap html met php moet mixen, dan is het mooi dat je die twee op die manier mooi kan scheiden.
 
Snelle Jaap

Snelle Jaap

07/02/2017 14:25:29
Quote Anchor link
Ozzie PHP op 07/02/2017 12:07:48:
Ik vind het overigens wel een typische vraag die je hebt.

Heb je die website niet zelf gemaakt? Omdat je niet weet hoe dit werkt?


Ik heb de site wel zelf gemaakt maar kom niet uit dit probleem. Hoezo een typische vraag? Ik vind het meer typisch dat iedereen neurotisch zit te reageren op het gebruik van een afgekorte php tag dan inhoudelijk op de vraag in te gaan.

Op paginas die een gerewrite url hebben werkt het aanpassen van talen niet en ik kom er niet achter waarom niet. Waarom is dat een typische vraag?

Toevoeging op 07/02/2017 14:26:40:

Frank Nietbelangrijk op 07/02/2017 12:05:32:
Gokje: De inhoud van je dynamische pagina's komen uit de database? En waarschijnlijk is de database niet ingericht om de content in verschillende talen op te slaan -of- zijn de andere talen niet aangemaakt in de database?


Nee het gaat om vaste stukken op de pagina. Geen tekst uit de database. De tekst wordt ingeladen uit een talen bestand (lang.php).
 
Ozzie PHP

Ozzie PHP

07/02/2017 14:37:34
Quote Anchor link
Ik vond 'm typisch omdat het een systeem is wat je dus zelf hebt gemaakt ... maar dus niet weet hoe het werkt. Als het op basis was van een voor jouw onbekend framework was, of als de site door iemand anders was gemaakt dan had ik het wat beter kunnen plaatsen. Het klonk me nu een beetje vreemd in de oren ... maar wellicht ligt dat aan mij.

Maar goed, dan is het dus een kwestie van even debuggen. Wordt op de pagina's waar het niet lukt de juiste code ingeladen? En is op diezelfde pagina's de betreffende $_GET parameter bekend. Dat zou je alvast eens kunnen onderzoeken.
 
Ward van der Put
Moderator

Ward van der Put

07/02/2017 14:44:42
Quote Anchor link
Snelle Jaap op 07/02/2017 14:25:29:
Op paginas die een gerewrite url hebben werkt het aanpassen van talen niet en ik kom er niet achter waarom niet.

Volgens mij gaf Ben daarop al een antwoord: heb je QSA in de rewrite rule gebruikt? Die heb je namelijk nodig voor een query string append: het doorgeven van de querystring achter ? in de URL.

Dump eerst eens $_GET om te kijken wat erin zit.
 
Joakim Broden

Joakim Broden

07/02/2017 14:45:38
Quote Anchor link
Waar word je content geset? Je haalt teksten uit lang.php maar waar word dit gedaan, werken de sessies wel in je dynamische pagina's (geen header allready sent)? Heb je een fout melding?
 
Snelle Jaap

Snelle Jaap

07/02/2017 14:48:28
Quote Anchor link
Ozzie PHP op 07/02/2017 14:37:34:
Ik vond 'm typisch omdat het een systeem is wat je dus zelf hebt gemaakt ... maar dus niet weet hoe het werkt. Als het op basis was van een voor jouw onbekend framework was, of als de site door iemand anders was gemaakt dan had ik het wat beter kunnen plaatsen. Het klonk me nu een beetje vreemd in de oren ... maar wellicht ligt dat aan mij.

Maar goed, dan is het dus een kwestie van even debuggen. Wordt op de pagina's waar het niet lukt de juiste code ingeladen? En is op diezelfde pagina's de betreffende $_GET parameter bekend. Dat zou je alvast eens kunnen onderzoeken.


Ik weet wel hoe het werkt maar loop nu tegen een probleem aan waarvan ik de oorzaak niet weet. De get waarde wordt gewoon getoond wanneer ik die echo (de inhoud van de session). Maar hij wordt niet aangepast als ik op een andere taal klik. Wanneer ik naar de index ga en de taal bijvoorbeeld op frans zet, dan echoed die gewoon fr en is de taal frans ook als ik naar een dynamische pagina ga maar wil ik dan weer de taal updaten, kan dit niet. Alleen op vaste paginas kan ik de taal updaten. De sessie waarde blijft op fr (laatst gekozen taal) staan ook wanneer ik de taal zet op NL of EN op een dynamische pagina.

Ik heb mn htaccess er ook bijgezet trouwens.
Gewijzigd op 07/02/2017 14:54:11 door Snelle Jaap
 
Ozzie PHP

Ozzie PHP

07/02/2017 15:00:16
Quote Anchor link
Probeer in je htaccess eens dit dan ...

... content.php?alias=$1 [QSA, L]
Gewijzigd op 07/02/2017 15:00:40 door Ozzie PHP
 
Snelle Jaap

Snelle Jaap

07/02/2017 15:12:27
Quote Anchor link
Dit geeft een internal server error 500. Moet er wel bijzeggen dat ik meer htaccess regels heb die naar andere bestanden gaan zoals project pages maar als ik dat stukje bij alle regels zet heb ik die error alsnog.
 
Thomas van den Heuvel

Thomas van den Heuvel

07/02/2017 15:19:21
Quote Anchor link
@Ben en @Ward sturen je volgens mij al in de goede richting en zoals @Ward zegt: dump de inhoud van $_GET eens.
EDIT: en als dat er allemaal goed uitziet zit de fout ergens anders in je code.

Je zou je ook kunnen afvragen: waaruit blijkt dat iets niet werkt zoals het zou moeten werken en gebruik dat eens als startpunt van je zoektocht.
Gewijzigd op 07/02/2017 15:21:17 door Thomas van den Heuvel
 
Joakim Broden

Joakim Broden

07/02/2017 15:20:10
Quote Anchor link
Ozzie PHP op 07/02/2017 15:00:16:
Probeer in je htaccess eens dit dan ...

... content.php?alias=$1 [QSA, L]

Als de GET waarde gewoon weer gegeven word werkt dit dus, neem dus aan dat het niet aan .htaccess ligt.

Joakim Broden op 07/02/2017 14:45:38:
Waar word je content geset? Je haalt teksten uit lang.php maar waar word dit gedaan, werken de sessies wel in je dynamische pagina's (geen header allready sent)? Heb je een fout melding?

Nogmaals, misschien dat we dan wat kunnen vinden.
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.