Login script

Status
Niet open voor verdere reacties.
Een trinairy notatie van een if-else statement.
 
ok

kun je me een voorbeeldje geven van jou taalbestanden die array snap ik niet

header("refresh:0;url=cookie_pagina.php");

dit werkt niet op pagina browser geeft melding Pagina niet gevonden
 
Laatst bewerkt:
ok

kun je me een voorbeeldje geven van jou taalbestanden die array snap ik niet
Wat snap je niet? je ziet toch verschillende vertalingen?

header("refresh:0;url=cookie_pagina.php");

dit werkt niet op pagina browser geeft melding Pagina niet gevonden
Simpel, dan bestaat die pagina niet. Ik raad aan om een volledige URL te gebruiken.
 
PHP:
$translations = [];
$translations['Welcome'] = "Welcome to our site.";
$translations['LoggedIn'] = "You're logged in.";
$translations['LoggedOut'] = "You're logged out.";
$translations['ProfileEdit'] = "Click here to edit your profile";
?>

Wat heeft dit met een array te maken? waarom is 1e regel leeg
ik neem aan dat dit op hetzelfde neerkomt

PHP:
    $amsg[0] = 'Admin-Control-Panel';
    $amsg[1] = 'Login A.U.B.!';
    $amsg[2] = 'Berichten';
    $amsg[3] = 'Berichten en commentaar';
    $amsg[4] = 'Eigenschappen';
    $amsg[5] = 'Admin- en Login-data';
    $amsg[6] = 'Algemene instellingen';
 
Laatst bewerkt:
Eerste regel is leeg omdat dit de moderne betekenis is dat $translations een array is.
Je kan ook dit zeggen: $translations = array();

Jouw tweede voorbeeld is ook een array, maar minder logischer voor een vertaling. Want met $translations['ProfileEdit'] kan je de juiste vertaling-tekst ophalen.
$amsg is al onbegrijpelijk, en verder is het onzinnig om nummers te gebruiken voor teksten. Zou jij straks nog snel weten dat $amsg[4] de vertaalstring is voor 'Eigenschappen'?

Het belangrijkste bij het toepassen van de vertaling is dat je het juiste array vertaalbestand opent.
Eventueel kan je dit in een functie gieten, die nog eens controleert of de $translations['LoggedIn'] bestaat. En zo niet, dan kan je een fallback maken naar de Engelse taal, of je toont een placeholder met __LoggedIn__ zodat je tijdens het programmeren weet dat je ergens een vertaling mist.

Of gebruik nog wat eleganter, zoals Gettext: https://www.php.net/manual/en/book.gettext.php
 
Laatst bewerkt:
Moet ik nog eens nakijken

dit kan ik dus gewoon als een var plaatsen in pagina , dat van jou is uiteraard duidelijker...


Ik merk verder dat een andere gemaakte test pagina het onderstaande Cookie niet vind als ik deze van een ander Tab open in dezelfde browser

en als die niet gevonden wordt kan ik hem ook niet opnieuw aanmaken.

wat zou er in een pagina moeten staan om cookie waarde op te halen.
PHP:
if (isset($_COOKIE['language'])) {
    // true, cookie is set
    include 'lang/lang_nl.php';}
else {
    // false, cookie is not set
    echo 'Geen cookie'.'<br><br><br>';
}?>
 
Laatst bewerkt door een moderator:
Ja, je kan gewoon een $translations['....'] variabele echo'en.
 
Dat is al uitgelegd.
Lees anders eens www.php.net/setcookie en dan de 'pitfall' :)

Dus als je geholpen wilt worden. Laat eens zien wat je inmiddels hebt, en zet even wat commentaar neer. Dan weet jij ook weer er gebeurt.
 
Laatst bewerkt:
Ik antwoord toch?
 
Ik denk dat we er niet uitkomen , is ook niet duidelijk wat erin de andere pagina's moet komen te staan om gekozen taal op te halen.

Als ik in Chrome nieuw tab open wordt er ook weer nieuw cookie geplaatst....er zullen in dat wat ik tot nu toet heb nog wat condities moeten ingebouwd enz.

Nog veel testen
 
Laatst bewerkt:
Tuurlijk komen we eruit.
Laat je relevante code eens zien, en zet er /* commentaar */ in.

Ik wil graag zien WAT je begrijpt.
 
PHP:
<!DOCTYPE HTML>
<?php
// Browser taal van bezoeker
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
// Als GET niet leeg is, neem cookie waarde van GET.
if ( !empty($_GET['language']) ) {
    $_COOKIE['language'] = $_GET['language'];	


	// Als geen cookie bestaat van language.
	// Neem browsertaal bezoeker ($lang)
} elseif (empty($_COOKIE['language'])) {
    $_COOKIE['language'] = $lang;
}// Plaats cookie
setcookie('language', $_COOKIE['language']);

if  ($_COOKIE['language'] == "nl") {
 echo   $language = 'nl';
} 
elseif ($_COOKIE['language'] == "en") {
	 echo   $language = 'en';
}
elseif ($_COOKIE['language'] == "de") {
	 echo   $language = 'de';
}
elseif ($_COOKIE['language'] == "fr") {
	 echo   $language = 'fr';
	 echo '<br><br><br>';
}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Cookie test 5</title>
</head>
<body>
<p><a href="cookie5.php">Geen GET</a></p>
<p><a href="?language=nl">Nederlands</a></p>
<p><a href="?language=en">Engels</a></p>
<p><a href="?language=de">Duits</a></p>
<p><a href="?language=fr">Frans</a></p>
</body>
</html>
 
Ik heb een hoop aanpassingen gedaan.
Je leek behoorlijk in de war met GET en COOKIE.
PHP:
<!DOCTYPE HTML>
<?php
// Browser taal van bezoeker
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);

// Als $_COOKIE['language'] niet bestaat: Maak cookie aan.
if (!isset($_COOKIE['language']) ) {
    setcookie('language', 'nl');
    header("Location: http://127.0.0.1/translate/index.php");
}

// kijk naar GET-waardes, en maak de cookie aan, en daarna doorsturen
if  (isset($_GET['language']) && $_GET['language'] == "nl") {
    setcookie('language', 'nl'); 
    header("Location: http://127.0.0.1/translate/index.php");
} 
elseif (isset($_GET['language']) && $_GET['language'] == "en") {
    setcookie('language', 'en'); 
    header("Location: http://127.0.0.1/translate/index.php");
}
elseif (isset($_GET['language']) && $_GET['language'] == "de") {
    setcookie('language', 'de'); 
    header("Location: http://127.0.0.1/translate/index.php");
}
elseif (isset($_GET['language']) && $_GET['language'] == "fr") {
    setcookie('language', 'fr'); 
    header("Location: http://127.0.0.1/translate/index.php");
}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Cookie test 5</title>
</head>
<body>
    <p>Gekozen taal: <?php echo $_COOKIE['language']; ?></p>
<p><a href="">Geen GET</a></p>
<p><a href="?language=nl">Nederlands</a></p>
<p><a href="?language=en">Engels</a></p>
<p><a href="?language=de">Duits</a></p>
<p><a href="?language=fr">Frans</a></p>
</body>
</html>

Standaard wordt er, als er geen cookie bestaat, een cookie aangemaakt met nl erin, waarna je wordt doorgestuurd
Elke taal die je vervolgens aanklikt overschrijft de cookie, en er vindt een redirect plaats.
 
Laatst bewerkt:
Op zich doet het wat het moet doen.

Alleen in de validator.w3. krijg ik in code:


<b>Notice</b>: Undefined index: HTTP_ACCEPT_LANGUAGE in <b>/test/cookie.php</b> on line <b>6</b><br />↩


Dit krijg ik op mijn pagina en broncode niet te zien php errors staan aan.

Al heb ik dit soort meldingen in validator.w3 wel eens meer gezien
 
Ja, die simuleren het, en die kennen deze parameters niet.
Gebruik gewoon een webserver op je pc.
 
Bedankt

Had je code helaas gemist mijn post 62 betrof nog over mijn code

Ja ogen zijn niet goed........ik moet extra goed opletten.

Ga straks die van jou proberen
 
Bedankt het werkt.


http://127.0.0.1/translate/index.php

Vervangen door mijn gehele url?


De code moet naar ik aanneem in elke pagina geplaatst worden en dan de Url aanpassen

Ik zou de taal select (wat ik er ook van ga maken) bijv. ook alleen op home pagina kunnen zetten en dan met andere pagina alleen COOKIE ophalen.
al denk ik dat ik maar elke pagina neem.

(index.php , programma.php enz)
 
Bedankt het werkt.


http://127.0.0.1/translate/index.php

Vervangen door mijn gehele url?
Correct.

De code moet naar ik aanneem in elke pagina geplaatst worden en dan de Url aanpassen

Ik zou de taal select (wat ik er ook van ga maken) bijv. ook alleen op home pagina kunnen zetten en dan met andere pagina alleen COOKIE ophalen.
al denk ik dat ik maar elke pagina neem.

(index.php , programma.php enz)

Nee, niet op elke pagina:
Denk aan de D-R-Y methode:
https://en.wikipedia.org/wiki/Don't_repeat_yourself

Maak functies of classes of nette array's voor dingen die je herbruikt.
Includeren is ook een goede optie.

Als je dit op verschillende pagina wilt gebruiken, dan is het verstandig om ipv een volledige URL de juiste URL te genereren. Het is zonde als je iedereen na de taalkeuze weer naar je index.php redirect.
Mooi leesvoer: https://stackoverflow.com/questions/6768793/get-the-full-url-in-php en dan de full_url() / url_origin() functie
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan