Login script

Status
Niet open voor verdere reacties.
Is wel erg gedateerd denk dat de meeste gerechten intussen bedorven zijn :D.

Zal wel altijd noch iets nuttigs instaan uiteraard.


Dit zegt me overigens niets:

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";
?>
 
Laatst bewerkt:
Is wel erg gedateerd denk dat de meeste gerechten intussen bedorven zijn :D.

Zal wel altijd noch iets nuttigs instaan uiteraard.


Dit zegt me overigens niets:

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";
?>

Je bent niet bekend met array's? Dan zou ik de kennis maar even bijspijkeren.
Want dit is een essentieel onderdeel van PHP.

De beste manier is om strpos() te gebruiken op $_SERVER['HTTP_ACCEPT_LANGUAGE']:
PHP:
<?php
if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) && strpos($_SERVER['HTTP_ACCEPT_LANGUAGE'], 'nl') !== FALSE) {
// Nederlandse taal cookie
} else {
// Engelse taal
}
?>

Misschien kan je hier nog wat leuks mee doen:
http://www.phptutorial.info/?http-negotiate-language

Dit zit in PEAR.
 
Laatst bewerkt:
OK maak een nieuw bestandje aan.

Array heb ik nooit gebruikt ...
 
Ik raad aan om je eerst eens in array's te verdiepen.
Wat is je kennis tot nu toe?
 
Ik ben vrij basic............

Als ik brower taal nu wijzig in bijv, Frans veranderd value cookie niet al zal dat niet echt de bedoeling zijn.


PHP:
if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) && strpos($_SERVER['HTTP_ACCEPT_LANGUAGE'], 'nl') !== false)
{
    echo 'NL';
    // Nederlandse taal cookie
    $cookie_name = "lang";
    $cookie_value = "nl";
    setcookie($cookie_name, $cookie_value, time() + (86400 * 30) , "/"); // 86400 = 1 day   
}
else
{
	// Engelse taal cookie
    echo 'EN';
    $cookie_name = "lang";
    $cookie_value = "en";
    setcookie($cookie_name, $cookie_value, time() + (86400 * 30) , "/");   
}

Wellicht gewoon browsertaal opvragen en die value plaatsen
 
Laatst bewerkt:
Output mag niet voor een cookie. Je zult ongetwijfeld een error krijgen.
(zo niet, zet je errors aan)

Warning: Cannot modify header information - headers already sent by (output started at blaat.php:3) in blaat.php on line 4
 
die echo zijn voor test ,,,krijg geen errrors begrepen in verleden dat je die wel kan verwachten maar ik krijg ze niet..


Heb nou dit

Maar als GET niet in url is wordt weer cookie voor NL taal geplaatst.

Linken met vlaggen of select dat zie ik nog wel , heb eens ooit een select gehad met vlaggen.

PHP:
<!DOCTYPE HTML>
<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
session_start();

if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) && strpos($_SERVER['HTTP_ACCEPT_LANGUAGE'], 'nl') !== false)
{
    //echo 'NL';
    // Nederlandse taal cookie
    $cookie_name = "lang";
    $cookie_value = "nl";
    setcookie($cookie_name, $cookie_value, time() + (86400 * 30) , "/"); // 86400 = 1 day   
}
else
{
	// Engelse taal cookie
    //echo 'EN';
    $cookie_name = "lang";
    $cookie_value = "en";
    setcookie($cookie_name, $cookie_value, time() + (86400 * 30) , "/");   
}
if(isset($_GET['lang']) && !empty($_GET['lang'])){
$cookie_name = "lang";
$cookie_value = $_GET['lang'];
setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/"); // 86400 = 1 day
}
echo $cookie_value;
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Cookie test 3</title>
</head>

<body>
<form method='GET' action='' id='form_lang' >
   Selecteer taal : <select name='lang' onchange='changeLang();' >
      <option value='nl' <?php if(isset($_GET['lang']) && $_GET['lang'] == 'nl'){ echo "selected"; } ?> >Nederlands</option>
   <option value='en' <?php if(isset($_GET['lang']) && $_GET['lang'] == 'en'){ echo "selected"; } ?> >English</option>
   <option value='fr' <?php if(isset($_GET['lang']) && $_GET['lang'] == 'fr'){ echo "selected"; } ?> >French</option>
  </select>
 </form>
          <script>
 function changeLang(){
  document.getElementById('form_lang').submit();
 }
 </script>
</body>
</html>

zal ik moete checken of er al een cookie geplaatst is .anders wordt regel 11 - 13 weer uitgevoerd
 
Laatst bewerkt:
Ook session_start(); mag geen output ervoor hebben. ;)

Volgens mij trap je in de valkuil dat een cookie pas actief is na een refresh nadat je het plaatst. Bij een session gebeurt dit direct.
Na het plaatsen van de cookie moet je even een location-header plaatsen.
 
Die Session hoort er niet in thuis ,,dat was plak foutje

Heb je voorbeeld ook van die header refresh.
 
Dat weet ik dat dat te zoeken is ...maar browser doet altijd raar bij mij als ik die gebruik/

Overigens wordt de pagina toch goed ververst in mijn voorbeeld (na Submit)
 
Laatst bewerkt:
Ik heb volgende

alleen bij een url zonder GET wordt regel 6-8 toch uitgevoerd en naar nl gezet.

Er is van te voren met select en Get voor en gekozen.

Zal de conditie niet goed zijn: regel 3 want cookie value is er.



PHP:
<!DOCTYPE HTML>
<?php
if  (!empty($cookie_value)); {	
if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) && strpos($_SERVER['HTTP_ACCEPT_LANGUAGE'], 'nl') !== false)
{
    $cookie_name = "lang";
    $cookie_value = "nl";
    setcookie($cookie_name, $cookie_value, time() + (86400 * 30) , "/"); // 86400 = 1 day   
}
else
{
    $cookie_name = "lang";
    $cookie_value = "en";
    setcookie($cookie_name, $cookie_value, time() + (86400 * 30) , "/");   
}
if(isset($_GET['lang']) && !empty($_GET['lang'])){
$cookie_name = "lang";
$cookie_value = $_GET['lang'];
setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/"); // 86400 = 1 day
}
}
echo $cookie_value;
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Cookie test 3</title>
</head>

<body>
<p><a href="cookie3.php">Geen GET</a></p>
<p><a href="?lang=it">Italiaans</a></p>

<form method='GET' action='' id='form_lang' >
   Selecteer taal : <select name='lang' onchange='changeLang();' >
      <option value='nl' <?php if(isset($_GET['lang']) && $_GET['lang'] == 'nl'){ echo "selected"; } ?> >Nederlands</option>
   <option value='en' <?php if(isset($_GET['lang']) && $_GET['lang'] == 'en'){ echo "selected"; } ?> >English</option>
   <option value='fr' <?php if(isset($_GET['lang']) && $_GET['lang'] == 'fr'){ echo "selected"; } ?> >French</option>
  </select>
 </form>
          <script>
 function changeLang(){
  document.getElementById('form_lang').submit();
 }
 </script>
</body>
</html>
 
Laatst bewerkt:
$cookie_value komt uit de lucht vallen. Dus de conditie op lijn 3 wordt nooit uitgevoerd.
Je wilt blijkbaar kijken naar $_COOKIE['lang']

Die punt-komma hoort er ook niet.
 
Kom niet verder ; ook verwijderd
wordt er geen cookie meer geplaatst


PHP:
if  (!empty($_COOKIE['lang'])) {
 
Gooi eens $_COOKIE in een print_r()?
 
alles werkt goed...behave die eerst conditie , als GET niet bestaat wordt er weer een nl cookie geplaatst.

test include bestanden worden juist ingevoerd enz.
met 3 talen werkt dat allemaal goed.
 
IK stop er ff mee komen niet verder , zou toch feitelijk niet zo moeilijk moeten zijn.

Cookie wordt geplaatst........komt een VAR terug.........
 
Laatst bewerkt:
Dit werkt

PHP:
<!DOCTYPE HTML>
<?php
$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;
}
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';
}
?>
<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>

wel regel 6 aangepast en taal ru verwijderd en andere toegevoegd
orgineel
PHP:
$_COOKIE['language'] = $_GET['language'] === 'en' ? 'en' : 'ru';
die regel snap ik ook niet helemaal.

Maar voor de rest werkt het en er zit geen cookie tijd in zie ik nu.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan