Avatar billede weblance Nybegynder
04. august 2007 - 14:13 Der er 20 kommentarer og
1 løsning

Hvorfor virker dette ikke med require?

Først i dokumentet laver jeg denne:

<?php
if (isset($_COOKIE["sprog"]))
  $sprog = $_COOKIE["sprog"];
else
  setcookie("sprog", "da", time()+36000);

$sprogfil = "../lang/" . $sprog . ".php";
require($sprogfil);
?>

... men det giver bare en blank skærm.
Fjerner jeg require($sprogfil); virker det fint. Jeg har også prøvet at udelade variablen $sprogfil og lave den direkte i:
require("../lang/" . $sprog . ".php");
men det gør ingen forskel

/Carl
Avatar billede mstorgaard Praktikant
04. august 2007 - 14:30 #1
Hvis cookie'en ikke er sat bliver variablen $sprog jo ikke defineret, du er vel nødt til at sætte $sprog = "da" ind i din 'else', for at få defineret $sprog.
Avatar billede weblance Nybegynder
04. august 2007 - 14:39 #2
Mener du sådan?

<?php
if (isset($_COOKIE["sprog"]))
  $sprog = $_COOKIE["sprog"];
else
  setcookie("sprog", "da", time()+36000);
  $sprog = "da";

$sprogfil = "../lang/" . $sprog . ".php";
require($sprogfil);
?>

Det virker heller ikke...
Avatar billede olebole Juniormester
04. august 2007 - 14:40 #3
<ole>

Husk lige på, at hvis jeg får sat kagen på dit site - går ind og retter i kagen (det er jo bare en fil på min PC), kan jeg inkluderer ethvert .php-dokument på din server!  =8-O

/mvh
</bole>
Avatar billede olebole Juniormester
04. august 2007 - 14:43 #4
- der er jo intet i vejen for, at jeg f.eks. kan skrive:
    "../../en/anden/mappe/fil"

- i stedet for:
    "da"
Avatar billede weblance Nybegynder
04. august 2007 - 14:45 #5
Ja det kan jeg godt se - findes der så en anden og bedre måde at gøre det på?
Avatar billede mstorgaard Praktikant
04. august 2007 - 14:59 #6
if($_COOKIE["sprog"] == 'da') {
  $sprogfil = "../lang/" . $sprog . ".php";
}
Avatar billede mstorgaard Praktikant
04. august 2007 - 14:59 #7
Ups, det skal så være:
if($_COOKIE["sprog"] == 'da') {
  $sprogfil = "../lang/da.php";
}
Avatar billede weblance Nybegynder
04. august 2007 - 15:01 #8
Sådan her:

<?php
if($_COOKIE["sprog"] == 'da') {
  $sprogfil = "../lang/" . $sprog . ".php";
}
else
  setcookie("sprog", "da", time()+36000);
 
$sprogfil = "../lang/" . $sprog . ".php";
require($sprogfil);
?>

... giver stadig blank skærm :(
Avatar billede olebole Juniormester
04. august 2007 - 15:12 #9
Den forstår jeg slet ikke. Hvad er tanken?  =)
Avatar billede olebole Juniormester
04. august 2007 - 15:17 #10
Du kunne evt. bruge noget à la:

<?php
$allowed = array(
    "da" => 1,
    "en" => 1,
    "se" => 1
);

if(isset($_COOKIE["sprog"]) && $allowed[$_COOKIE["sprog"]]) {
    $sprog = $_COOKIE["sprog"];
    $sprogfil = "../lang/" . $sprog . ".php";
} else {
    $sprog = "da";
    setcookie("sprog", $sprog, time()+36000);
}
require("../lang/" . $sprog . ".php");
Avatar billede olebole Juniormester
04. august 2007 - 15:19 #11
ahhhh ... den behøver vel bare at se sådan ud:

<?php
$allowed = array(
    "da" => 1,
    "en" => 1,
    "se" => 1
);

if(isset($_COOKIE["sprog"]) && $allowed[$_COOKIE["sprog"]]) {
    $sprog = $_COOKIE["sprog"];
} else {
    $sprog = "da";
    setcookie("sprog", $sprog, time()+36000);
}
require("../lang/" . $sprog . ".php");
?>
Avatar billede olebole Juniormester
04. august 2007 - 15:20 #12
- eller:

<?php
$allowed = array(
    "da" => 1,
    "en" => 1,
    "se" => 1
);

$sprog = "da";
if(isset($_COOKIE["sprog"]) && $allowed[$_COOKIE["sprog"]]) {
    $sprog = $_COOKIE["sprog"];
} else {
    setcookie("sprog", $sprog, time()+36000);
}
require("../lang/" . $sprog . ".php");
?>
Avatar billede weblance Nybegynder
04. august 2007 - 18:14 #13
Hold da op ole . . . sikke produktiv du er ;)

Meningen med det hele er at brugeren går ind på sitet og får dansk som "standard", så, hvis ønsket, kan han vælge qat skifte til engelsk og (senere) tysk, eller tilbage til dansk. Dette valg lagres i en cookie.

Så har jeg en række standard tekster jeg har lagt i en sprogfil som define('TEKSTEN', 'Teksten står her');

...men det er cookien der bestemmer hvilken sprogfil der skal vælges, i den der require("../lang/" . $sprog . ".php");

/Carl
Avatar billede weblance Nybegynder
04. august 2007 - 18:38 #14
Hvorfor får jeg kun en blank skærm?
Avatar billede weblance Nybegynder
04. august 2007 - 18:56 #15
Det må være selve dokumentet. Nu har jeg prøvet at lave en ren fil som ser sådan ud:

<?php
$allowed = array(
    "test1.php" => 1,
    "test2.php" => 1,
    "test3.php" => 1
);

$sprog = "test1.php";
if(isset($_COOKIE["indhold"]) && $allowed[$_COOKIE["indhold"]]) {
    $sprog = $_COOKIE["indhold"];
} else {
    setcookie("indhold", $sprog, time()+36000);
}
require($sprog);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
<link href="style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<script type="text/JavaScript">
function setMyCookie(sName, sValue, nDays) {
    var oDate = oExpire = new Date();
    oExpire.setTime(oDate.getTime() + (3600000*24*nDays));
    document.cookie = sName + "=" + escape(sValue) + ";expires=" + oExpire.toGMTString();
}
</script>

<a href="#" onclick="setMyCookie('indhold', 'test1.php', 2);self.location.reload(true);">test1</a><br />
<a href="#" onclick="setMyCookie('indhold', 'test2.php', 2);self.location.reload(true);">test2</a><br />
<a href="#" onclick="setMyCookie('indhold', 'test3.php', 2);self.location.reload(true);">test3</a><br />
<br />
<br />
<?php echo TEKSTEN; ?><br />
<?php echo $_COOKIE["indhold"]; ?>
</body>
</html>

...og det virker!
Avatar billede mstorgaard Praktikant
04. august 2007 - 19:18 #16
Kan det have noget at gøre med at der mangler citationstegn ved denne her: <?php echo TEKSTEN; ?>?
Avatar billede weblance Nybegynder
04. august 2007 - 19:25 #17
Har nu rodet en hel del rundt og har fundet ud af at det nok er den fil "require" peger til, som den ikke kan finde. har nu lavet det om sådan:

<?php
$allowed = array(
    "dansk.php" => 1,
    "english.php" => 1,
    "deutch.php" => 1
);

$sprog = "dansk.php";
if(isset($_COOKIE["indhold"]) && $allowed[$_COOKIE["indhold"]]) {
    $sprog = $_COOKIE["indhold"];
} else {
    setcookie("indhold", $sprog, time()+36000);
}
require($sprog);
?>

...og har lagt de tre sprogfiler i roden . . . så virker det!
Avatar billede weblance Nybegynder
05. august 2007 - 22:09 #18
Lige et tillægsspørgsmål hvis det er tilladt:

Jeg har domæne.dk og domæne.info som peger til samme hjemmeside. Kan det lade sig gøre at sætte en cookie ud fra hvilket domæne brugeren har valgt?

Hvis fx. brugeren går ind på domæne.dk skal $sprog være = "dansk.php" og hvis domænet er domæne.info skal $sprog være = "english.php"
Avatar billede weblance Nybegynder
07. marts 2008 - 21:53 #19
sender du et svar olebole så jeg kan lukke tråden?!
Avatar billede weblance Nybegynder
15. november 2008 - 11:38 #20
olebole - send venligst et svar så jeg kan lukke tråden.
Avatar billede weblance Nybegynder
16. januar 2010 - 20:32 #21
Lukker
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