webForumDet fria alternativet

includestrul

4 svar · 259 visningar · startad av aasah

aasahMedlem sedan mars 20034 471 inlägg
#1

Jag har två problem: ett som strular nu och ett som jag inte vet hur jag ska lösa när jag kommer dit i kodandet.

  1. Min jpg bild försvinner!?? Visar bara ett rött x.
  2. Hur inkluderar man olika filer beroende på input?

Jag håller på att skapa en sida som visar korsord. Själva korsordet är en jpg-bild. Ledtrådarna mm för ett visst korsord lagras i en fil, tillsammans med länken till det korsordet. Sedan inkluderas denna fil till en annan fil (takeCW.php) som talar om hur det ska skrivas ut på sidan och gör det.

Tanken är att det ska (senare) finnas flera korsordfiler, men bara en takeCW.php, vilken alltså tar en korsordsfil som input och visar just den filen.

Den idag befintliga korsordsfilen heter FirstEverCW.php.

//Ur FirstEverCW.php
$name = "My very first Crossword <BR>";
//....
$CW = "/home/aasah/FirstEver.jpg"; //korsordet (tomt)
$corrCW = "/home/aasah/FirstEverCorr.jpg"; //korsordet löst

$clues = array( ....);

$hints = array( .... );

$corrs = array( ...);

//Ur takeCW.php
include_once("FirstEverCW.php"); 
//Men... ska ju inkludera ber av variabel...

error_reporting(E_ALL);

//...

echo "<P><img src=\"$CW\"><BR><BR>";

foreach ($clues as $pos => $clue) {
   if ($pos == "a" || $pos == "d")
      echo "</P><P class=\"karm\"><b class=\"gold\">$clue</b><BR>";
   else echo "$pos : $clue<BR>";
}
echo "</p>";

Mina ledtrådare kommer ut jättesnyggt, men korsordet som finns på servern under angiven adress blir ett rött kryss??? Varför? :q

Egentligen är jag mån om att (åtminstone) det lösta korsordet (FirstEverCorr.jpg) inte ska ligga åtkomligt under www-roten (om det går?) men det röda krysset ersätts inte av bilden om jag flyttar FirstEver.jpg till "/home/aasah/www/FirstEver.jpg" och ändrar $CW på motsvarande sätt, så det verkar inte vara detta som är fel. Vad är felet?

Går det inte att skydda det lösta krysset på detta sätt? Hur gör man annars?

Om jag förstått rätt så måste include-filer ligga överst i en fil. Hur gör man då när man vill plocka in olika filer (korsordsfiler) beroende på input??? Man kan väl inte sätta värdet på en variabel före include:n, eller kan man det?

Tacksam för hjälp! :)

tydalMedlem sedan juni 20034 013 inlägg
#2

Om du högerklickar på det röda krysset och väljer egenskaper så ser du URL:en till bilden. I ditt fall är den: "http://www.tydal.nu/home/aasah/FirstEver.jpg", dvs $CW ska alltså bestå av en URL och inte en sökväg på servern. Det innebär att den i nuvarande utförande måste ligga åtkomligt under www-roten.

Det går att lösa genom att du gör en php-fil som kollar om besökaren ska få se filen och sedan öppnar jpg-filen utanför www-roten med fopen och så skriver ut filens innehåll med en header("Content-Type: image/jpeg").

aasahMedlem sedan mars 20034 471 inlägg
#3

tydal skrev:

.... dvs $CW ska alltså bestå av en URL och inte en sökväg på servern. Det innebär att den i nuvarande utförande måste ligga åtkomligt under www-roten...

TACK, tydal! :) Det borde jag ha vetat. Kortslutning på hjärnkontoret idag...

tydal skrev:

Det går att lösa genom att du gör en php-fil som kollar om besökaren ska få se filen och sedan öppnar jpg-filen utanför www-roten med fopen och så skriver ut filens innehåll med en header("Content-Type: image/jpeg").

Kan du förklara närmare hur detta funkar? Eller har du en länk till var man kan läsa om det? Kräver inte det att vem som helst kan skriva i www-mappen? :q

Egentligen är det väl inte jätteviktigt, tänkte mest att jag skulle gömma lösningen så att man inte kunde "råka" få syn på den.
Å andra sidan är det väl bara folk som "nosar runt" som kan råka ut för det... så... tja. Om man kan fixa det utan ett gigantiskt jobb och utan att säkerhetsluckor uppstår så vore det intressant. Annars struntar jag i att gömma den.

Kom på att den naturliga lösningen på 2) ovan är att vända på steken. Göra takeQuiz till att innehålla en funktion och låta korsordsfilerna include:a den i stället. Som sagt, kortslutning på hjärnkontoret idag...

tydalMedlem sedan juni 20034 013 inlägg
#4
<?php
  header("Content-Type: image/jpeg");
  readfile("sökväg till jpgfilen (utanför www-roten funkar)");
?>

Så får du ju göra nån koll innan om den ska visa filer eller inte.

aasahMedlem sedan mars 20034 471 inlägg
#5

Perfekt! Tack!! :birp

138 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)