Avatar billede jjmb Nybegynder
08. december 2007 - 21:35 Der er 18 kommentarer og
1 løsning

Nægte adgang til bestemte filer

Hejsa
Jeg har lavet en php side, som viser en ny side hver uge. på denne side kan man downloade en pdf fil. Problemet er at når man åbner filen så viser den stien

http://www.min-side.dk/ugens-lektion/tromme/pdf/49.pdf

Som det er nu kan man endre 49 til 50 eller 51 og så hente næste uges lektioner.

Kan man gøre noget så dette ikke kan lade sig gøre? evt således at det kun er den pdf fil som har denne uges navn som kan vises?

Eller kan man gøre så de alle er "låst" med mindre man bruger et bestemt link, som så er på den php side?

Håber nogen kan hjælpe
Avatar billede showsource Seniormester
09. december 2007 - 06:13 #1
I en .htaccess kan du bruge

Order deny,allow
deny from all

til at nægte adgang-
Og så kan du linke til en php fil som bruger
http://dk2.php.net/manual/da/function.file-get-contents.php
til at indlæse pdf'en i en streng.
Avatar billede jjmb Nybegynder
09. december 2007 - 15:38 #2
Ja, det er vidst det jeg søger.
Det er dog lidt over min liga.

Kan du skrive koden som skal indsættes i min htaccess?
Og samtidig den kode som skal indsættes i min php fil?

Koden i Php filen gør, at links inde i denne php fil godt vil åbnes, men links fra andre filer, eller direkte adgang, ikke kan finde sted, korrekt?
Det skal helst fungere sådan at, hvis man prøver at skrive adressen direkte, ryger tilbage til index.php

Hvis du evt har mulighed for at hjælpe via msn vil det også være en stor hjælp. Du skriver at du laver lidt PHP for småpenge. Den er jeg frisk på;-)

jannik[a]pleaser-dot-dk

Venlig hilsen

Jannik
Avatar billede showsource Seniormester
10. december 2007 - 02:19 #3
Hvis du har mulighed for at lægge dine filer udenfor "webscope", så man ikke kan komme i dir fra browseren, vil det være nemmest.
Men ligger filer i dir som kan tilgås via web, så put en .htaccess ind i dir'et med viste ex.

Order deny,allow
deny from all

Så har ingen adgang til det dir. Men en phpfil kan godt include/læse filerne

Din phpfil kunne se så'n ud:

<?php

// skal ændres til HARDDISK sti til dir
$pdf_dir = "/var/www/domain/pdf_filer/";

// navn på pdf fil. uge-nr. + punktum pdf
$dato_pdf = date("W") .".pdf";

if(is_file($pdf_dir . $dato_pdf)) {

    header("Content-type: application/pdf");
    header("Content-Length: ". filesize($pdf_dir . $dato_pdf) ."");
    header("Content-Disposition: inline; filename=". $dato_pdf ."");
    include($pdf_dir . $dato_pdf);

}else{

    echo"Sorry, men pdf fil findes desværre ikke!";

}

?>

Så laver du blot et link til phpfilen, som så viser den aktuelle pdf fil
Avatar billede showsource Seniormester
10. december 2007 - 02:22 #4
Og du skriver jo bare hvis du vil ha' et "godt tilbud" :O)
Avatar billede showsource Seniormester
10. december 2007 - 02:22 #5
Og hov, nej jeg bruger ikke msn
Avatar billede jjmb Nybegynder
10. december 2007 - 20:15 #6
Hej igen. Tak for din hjælp. Jeg kan dog ikke helt få det til at virke endnu.

Har sat min htaccess ind, og det virker fint. Der er nu ingen adgang. Kan dog ikke få det til at fungere i php filen. Bruger nedenstående kode i filen. Linket til filen ser således ud:
<a href='http://www.min-side.dk/ugens-lektion/tromme/pdf/50.pdf'>

Den siger "Sorry, men pdf fil findes desværre ikke!"
Selvom at jeg er 100% på at filerne er i den nævnte mappe.

Har du en idé til hvad fejlen kan være? Ellers må du meget gerne skrive mig en mail, så må du gerne kigge på det, hvis du har tid... til at give et godt tilbud.

Kode i PHP filen...

// sti til dir
$pdf_dir = "http://www.min-side.dk/ugens-lektion/tromme/pdf/";

// navn på pdf fil. uge-nr. + punktum pdf
$dato_pdf = date("W") .".pdf";

if(is_file($pdf_dir . $dato_pdf)) {

    header("Content-type: application/pdf");
    header("Content-Length: ". filesize($pdf_dir . $dato_pdf) ."");
    header("Content-Disposition: inline; filename=". $dato_pdf ."");
    include($pdf_dir . $dato_pdf);

}else{

    echo"Sorry, men pdf fil findes desværre ikke!";

}
Avatar billede showsource Seniormester
11. december 2007 - 01:19 #7
Du har overset
"// skal ændres til HARDDISK sti til dir"

Prøv med
$pdf_dir = $_SERVER["DOCUMENT_ROOT"] ."/ugens-lektion/tromme/pdf/";

Og du skal jo ikke linke til pdf filen, men til php scriptet, som jo selvf. ikke må ligge i samme dir som pdf'erne.
Avatar billede jjmb Nybegynder
11. december 2007 - 12:45 #8
Okay. Jeg får lige nu fejlmeddelelsen:

Parse error: syntax error, unexpected '~' in /hsphere/local/home/min-side/min-side.dk/ugens-lektion/tromme/pdf/50.pdf on line 221

Jeg har i min rod mappe en fil som ser således ud:

<?php
// sti til dir
$pdf_dir = $_SERVER["DOCUMENT_ROOT"] ."/ugens-lektion/tromme/pdf/";

// navn på pdf fil
$dato_pdf = date("W") .".pdf";

if(is_file($pdf_dir . $dato_pdf)) {

    header("Content-type: application/pdf");
    header("Content-Length: ". filesize($pdf_dir . $dato_pdf) ."");
    header("Content-Disposition: inline; filename=". $dato_pdf ."");
    include($pdf_dir . $dato_pdf);

}else{

    echo"Sorry, men pdf fil findes desværre ikke!";

}

$week = date("W");
include("ugens-lektion/tromme/".$week.".php");
?>

i mappen ugens-lektion/tromme/ har jeg så en fil liggende som f.eks hedder 50.php denne linker så til pdf filen som ligger i ugens-lektion/tromme/pdf med denne kode:

<a href='http://www.mubase.dk/ugens-lektion/tromme/pdf/50.pdf' target='_blank'>

Kan du se hvad fejlen er nu?
Avatar billede showsource Seniormester
12. december 2007 - 19:27 #9
ehh, fejlen i php kan jeg jo ikke se, da du ikke viser kode!
Og du kan jo nøjes med det ex. på phpfil som jeg viser dig, du behøver ikke andre filer for at vise ugens pdf fil. ?????
Avatar billede jjmb Nybegynder
12. december 2007 - 22:24 #10
Hej showsource.
Fejlen kommer KUN når jeg medtager den kode jeg viste i tidligere indlæg.

Jeg har jo lavet 52 php filer også, da jeg vil have seperat tekst til hver php fil...

Fejlen ligger helt sikkert i den kode her
-------------------
<?php
// sti til dir
$pdf_dir = $_SERVER["DOCUMENT_ROOT"] ."/ugens-lektion/tromme/pdf/";

// navn på pdf fil
$dato_pdf = date("W") .".pdf";

if(is_file($pdf_dir . $dato_pdf)) {

    header("Content-type: application/pdf");
    header("Content-Length: ". filesize($pdf_dir . $dato_pdf) ."");
    header("Content-Disposition: inline; filename=". $dato_pdf ."");
    include($pdf_dir . $dato_pdf);

}else{

    echo"Sorry, men pdf fil findes desværre ikke!";

}

$week = date("W");
include("ugens-lektion/tromme/".$week.".php");
?>
-----------------

Tror at det kan have noget at gøre med om man skriver ugens-lektion/tromme/osv... eller http://www.min-side.dk/ugens-lektion/osv...
Har hvertfald set den fejlmeddelelse i den forbindelse før, men jeg har prøvet at lave om på mine links utallige gange... uden noget resultat...

Er jeg helt fortabt? :-)
Avatar billede jjmb Nybegynder
12. december 2007 - 22:48 #11
Det er vidst lidt noget sludder.... det er ikke i mit php script den er gal.

laver jeg en fil KUN med dette:

<?php
// sti til dir
$pdf_dir = $_SERVER["DOCUMENT_ROOT"] ."/ugens-lektion/tromme/pdf/";

// navn på pdf fil
$dato_pdf = date("W") .".pdf";

if(is_file($pdf_dir . $dato_pdf)) {

    header("Content-type: application/pdf");
    header("Content-Length: ". filesize($pdf_dir . $dato_pdf) ."");
    header("Content-Disposition: inline; filename=". $dato_pdf ."");
    include($pdf_dir . $dato_pdf);

}else{

    echo"Sorry, men pdf fil findes desværre ikke!";

}

?>

Så skriver den stadig:
Parse error: syntax error, unexpected '~' in /hsphere/local/home/mubase/mubase.dk/ugens-lektion/tromme/pdf/50.pdf on line 221

Så fejlen må ligge i at den læser min pdf fil forkert.... fejlen ligger altså i pdf filen?
Avatar billede showsource Seniormester
12. december 2007 - 23:02 #12
Altså det her:

<?php
// skal ændres til HARDDISK sti til dir
$pdf_dir = $_SERVER["DOCUMENT_ROOT"] ."/";

// navn på pdf fil
$dato_pdf = date("W") .".pdf";

if(is_file($pdf_dir . $dato_pdf)) {

    header("Content-type: application/pdf");
    header("Content-Length: ". filesize($pdf_dir . $dato_pdf) ."");
    header("Content-Disposition: inline; filename=". $dato_pdf ."");
    include($pdf_dir . $dato_pdf);

}else{

    echo"Sorry, men pdf fil findes desværre ikke!";

}

?>

vil vise en pdf fil, 50.pdf, da det er uge 50 lige nu! :O)

Måden du laver din side på er jeg ikke helt med på?
Avatar billede showsource Seniormester
12. december 2007 - 23:03 #13
eh, sidste kode her, der ligegr 50.pdf i roden af domain
Avatar billede showsource Seniormester
12. december 2007 - 23:07 #14
Altså, du kan jo ikke sende alm. html, når du har sat en "pdf-header"
Det gi'r jo ingen mening.
Lad en fil vise pdf'en, brug evt. en iframe
Avatar billede jjmb Nybegynder
12. december 2007 - 23:26 #15
Godt så... Nu er jeg sikker på at fejlen ligger i scriptet.

Jeg smed denne fil i roden

<?php
// skal ændres til HARDDISK sti til dir
$pdf_dir = $_SERVER["DOCUMENT_ROOT"] ."/";

// navn på pdf fil
$dato_pdf = date("W") .".pdf";

if(is_file($pdf_dir . $dato_pdf)) {

    header("Content-type: application/pdf");
    header("Content-Length: ". filesize($pdf_dir . $dato_pdf) ."");
    header("Content-Disposition: inline; filename=". $dato_pdf ."");
    include($pdf_dir . $dato_pdf);

}else{

    echo"Sorry, men pdf fil findes desværre ikke!";

}

?>

og lagde en fil "50.pdf" i roden også... Nu kommer den så med fejlen

Parse error: syntax error, unexpected T_STRING in /hsphere/local/home/mubase/mubase.dk/50.pdf on line 231

Hvis du bruger samme fil på din server, men ikke får fejl. er det så min server? eller er det min pdf fil? det er en version 7... ja jeg tænker bare højt.
Avatar billede showsource Seniormester
13. december 2007 - 08:20 #16
?
Server der fortolker pdf filer som PHP ?????

Nu er du helt sikker på du bruger de rigtige filer m.m. ?
Avatar billede showsource Seniormester
13. december 2007 - 08:25 #17
Dette viker fint for mig på min localhost

<?php
$pdfstr = file_get_contents('http://www.mubase.dk/50.pdf');
header('Content-type: application/pdf');
header('Content-Length: '. strlen($pdfstr) .'');
header('Content-Disposition: inline; filename=50.pdf');
echo $pdfstr;
?>
Avatar billede jjmb Nybegynder
11. april 2013 - 21:59 #18
lukker tråden
Avatar billede jjmb Nybegynder
11. april 2013 - 21:59 #19
prøver igen
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
Uanset kodesprog, så giver vi dig mulighederne for at udvikle det, du behøver.

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