Avatar billede colgate Nybegynder
15. februar 2005 - 16:51 Der er 65 kommentarer

Beskyt pic (PHP+mysql)

Hvordan gør man sådan at man
hvis man vil se et jpeg(.jpg) eller andre bilede filer.

(I PHP ellers så er det lige meget...)

Altså den skal hente billede fra databasen, på en eller anden måde, ved at http://hotpeople.dk bruger det...

Jeg kan ikke beskrive det andet et dette link:
http://images.hotpeople.dk/showphoto.asp?uID=105589&pID=957061&thumb=false&cs=0E8AC

Men f.eks. Eksperten.dk's banner oppe til højre kan man se den direkte kilde til:
http://eksperten.dk/img/elogo.png
Avatar billede rasmus-madsen Nybegynder
15. februar 2005 - 16:59 #1
Altså du vil skjule den egentlige sti, ikke ?
Avatar billede rasmus-madsen Nybegynder
15. februar 2005 - 17:08 #2
Her er et lille ekspempel.

I dit html dokument.
<img src="omstil.php?id=11.jpg">


Omstil.php
<?
$mappe = "billeder/";
$billede = $mappe .$_GET['id'];
if (file_exists($billede)) {
}else{
$billede = $mappe ."intet.jpg";
}
$type = split(".", $billede,2);
$type2 = $type[1];
$types = "Content-type: image/" .$type2;
header($types);
$tal = file($billede);
for ($i = 0; $i < sizeof($tal); $i++) {
    print $tal[$i];
}
?>

Den finder billedet som hedder 11.jpg i mappen billeder. Hvis billedet ikke findes tager den intet.jpg istedet.

Du kan så lave ?id= om til idet i en database istedet. Og connectet til den i omstil.php, hvis det er.
Avatar billede colgate Nybegynder
16. februar 2005 - 13:12 #3
tak... ligger du lige et svar...

det var præcis det jeg ville ha.,.. (+ det virker)
Avatar billede rasmus-madsen Nybegynder
16. februar 2005 - 20:16 #4
Super.
Avatar billede colgate Nybegynder
20. februar 2005 - 16:23 #5
tak for hjælpen
Avatar billede rasmus-madsen Nybegynder
21. februar 2005 - 22:35 #6
Du har ikke givet mig points :S
Avatar billede Slettet bruger
03. marts 2005 - 10:19 #7
men du har jo ikke lagt et svar endnu...
men det er egenlig ikke det jeg ledte efter helt...
for i det du har givet mig skal der stå billedes navn ex. 1.jpg for at den kan finde det...
men det bruger hotpeople.dk ikke... der står bare nogen id's osv...

Hvis du kan lave det, så får du 2x points

ellers får du bare dem her
Avatar billede Slettet bruger
03. marts 2005 - 10:20 #8
har du ikk fået ponts?
Avatar billede rasmus-madsen Nybegynder
06. marts 2005 - 21:51 #9
Det du gør at bruge iden i den database som id !
Avatar billede Slettet bruger
06. marts 2005 - 22:14 #10
hva mener du?
Avatar billede Slettet bruger
11. marts 2005 - 08:01 #11
jamen men så skal den hente "Select * FROM tabelnavn WHERE ID = '$_GET[id]'
$billede = $mappe .$_GET['id'];

istedeto for "$_GET['id']; skal den jo så hente fra SELECTET..
Avatar billede rasmus-madsen Nybegynder
11. marts 2005 - 21:10 #12
hmm..
I din database:
Id = billede id.. Som 1,2,3,4 osv
Sti = Den rigtige sti til billedet ( som er skjult).

Du skal udskrive dit billede :
Select * FROM tabelnavn WHERE ID = '$_GET[id]'

<img src="omstil.php?id=<? echo $row_[id] ?>">

Omstil :
Select * FROM tabelnavn WHERE ID = '$_GET[id]'
$billede = $mappe .$_row['sti'];

´Forstår du mig ?
Avatar billede Slettet bruger
11. marts 2005 - 21:12 #13
ja men har prøvede og det kunne  jeg ikke få den til, har desværrer ikke gemt det, så kan ikke engang vise det...

Men du skal da nok få flere ponits hvis det er du gider lave det...
Avatar billede Slettet bruger
06. april 2005 - 10:55 #14
Jamen jeg har nemlig selv prøvet at få den til at skulle select, men det kunne jeg squ ikke lige få den til
Avatar billede Slettet bruger
06. april 2005 - 10:56 #15
ja jeg forstår dig egentlig godt... men kan ikke selv få det til at virke...
har self ikke kode mere... men gider du ikke lave det så får du 25 points mere
Avatar billede Slettet bruger
06. april 2005 - 18:06 #16
Andre der kan hjælpe mig?
Avatar billede Slettet bruger
08. april 2005 - 08:28 #17
Need help...
Avatar billede sukos Juniormester
08. april 2005 - 08:34 #18
Hvad er det som ikke virker for dig? (for nu at starte fra bunden)
Avatar billede Slettet bruger
08. april 2005 - 10:18 #19
Som der står øverst i mit spørgsmål, så skal jeg bruge et script der skulle hva selve billede det hedder...


Her er et lille ekspempel.

I dit html dokument.
<img src="omstil.php?id=11.jpg">


Omstil.php
<?
$mappe = "billeder/";
$billede = $mappe .$_GET['id'];
if (file_exists($billede)) {
}else{
$billede = $mappe ."intet.jpg";
}
$type = split(".", $billede,2);
$type2 = $type[1];
$types = "Content-type: image/" .$type2;
header($types);
$tal = file($billede);
for ($i = 0; $i < sizeof($tal); $i++) {
    print $tal[$i];
}
?>

Dette virker fint, men der skal den bare ha' et id til hva billede hedder den kører ikke over mysql, og det er det jeg vil ha' den til...

Selve billede hedder måske test1.jpg
men som id skal den så f.eks. ha' a123bcd2 eller lignende... sådan at man ikke kan regne ud hva det næste billede hedder, og se hva selve billede hedder... Forstår du mig?
Avatar billede sukos Juniormester
08. april 2005 - 11:07 #20
hmm, du kan lave en tabel i mysql, med to kolonner, "ref" og "filnavn", som begge er "unique"

Så kan du bruge $row["ref"]) i dit link

visfil.php?id=". $row["ref"]

Og når billedet skal vises,

SELECT `filnavn` FROM `table` WHERE `ref` = '". $_GET["id"] ."'"

Og hvis der resulterer i et row, så tjekker du om filen findes, og gør den det laver du output som ovenstående
Avatar billede Slettet bruger
08. april 2005 - 12:18 #21
prøver engang lige at lave det....
Men hva vil det sige med "unique" ?
Avatar billede Slettet bruger
08. april 2005 - 12:32 #22
try.php


<?PHP
// This will get the connection to your database
$database = mysql_connect("localhost", "", "");
mysql_select_db("billede");
// End

if(isset($_GET["ref"])) {
$row = mysql_query("SELECT pic FROM profiler WHERE ref = '$_GET[ref]'") Or Die (mysql_error());
while($billede = mysql_fetch_array($row)){
   
    ?>
<img src="billeder/<?PHP echo $billede[pic]; ?>" />
<?   
}
}
?>


mysql_dump:

CREATE TABLE `profiler` (
  `picID` int(11) NOT NULL auto_increment,
  `ref` varchar(5) NOT NULL default '',
  `pic` text NOT NULL,
  PRIMARY KEY  (`picID`,`ref`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

--
-- Data dump for tabellen `profiler`
--

INSERT INTO `profiler` VALUES (1, '11235', 'billede1.jpg');
Avatar billede Slettet bruger
08. april 2005 - 12:33 #23
Vis kilde af: try.php?ref=11235

<img src="billeder/billede1.jpg" />

-----------------------------------------------


Men her som du kan se ovenfor kan man se sti'en "billeder/" og se at billede hedder "billede1.jpg"
Avatar billede Slettet bruger
08. april 2005 - 14:34 #24
Nogen andre der kan hjælpe mig med dette problem?
Avatar billede sukos Juniormester
08. april 2005 - 14:38 #25
Du bruger jo slet ikke den kode som du rasmus_madsen gav som eksempel?
Du siger jo direkte
<img src.....................>
Avatar billede sukos Juniormester
08. april 2005 - 14:41 #26
if(isset($_GET["ref"])) {
$row = mysql_query("SELECT pic FROM profiler WHERE ref = '". addslashes($_GET["ref"]) ."'") or die (mysql_error());
if(mysql_num_rows($row) == 1) {
$filename = mysql_result($row, 0);
}else{
$filename = "intet.gif";
}

mysql_free_result($row);


vis billede..... ($filename) ...................




    ?>
Avatar billede Slettet bruger
08. april 2005 - 14:41 #27
ja... men hva kan jeg ellers gøre?
For lige nu kan jeg hellere ikke få hans til at virke...
Avatar billede Slettet bruger
08. april 2005 - 14:42 #28
min kode nu:

<?PHP
// This will get the connection to your database
$database = mysql_connect("localhost", "", "");
mysql_select_db("billede");
// End

$dir = "billeder";

if(isset($_GET["ref"])) {
$row = mysql_query("SELECT pic FROM profiler WHERE ref = '$_GET[ref]'") Or Die (mysql_error());
while($billede = mysql_fetch_array($row)){
    $billede = $billede[pic];
    $pic = $dir ."/". $billede;
    echo $pic;
    if(file_exists($pic)) {
    ?>
<img src="<?PHP echo $dir; ?>/<?PHP echo $billede; ?>" />
<?   
}
}
} else {
    ?>
    <img src="intet.jpg" />
<?   
}
?>
Avatar billede Slettet bruger
08. april 2005 - 14:42 #29
echo $pic, skal bare slettes / udkommenters (//)
Avatar billede Slettet bruger
08. april 2005 - 14:43 #30
prøver det du skrev
Avatar billede sukos Juniormester
08. april 2005 - 14:45 #31
Husk lige den afsluttende } for
if(isset($_GET["ref"])) {
Avatar billede Slettet bruger
08. april 2005 - 14:46 #32
ja men kan ikke se hva du vil have istedet for her:
eller jo men ikke i praksis, hvordan det skal laves, ved jeg ikke:


$filename = mysql_result($row, 0);
}else{
$filename = "intet.gif";
}

mysql_free_result($row);


vis billede..... ($filename) ...................
Avatar billede sukos Juniormester
08. april 2005 - 14:54 #33
Lidt anderledes, men i princippet det samme:
if(isset(get.....................
mysql.....................


$dirpath = "images/";
    if(file_exists($dirpath . $filename)) {

    $location = $dirpath . $filename;
    $type = end(explode(".", $filename));
    Header("Content-type: image/". $type ."");
    $file = fopen($location, "r");
    $buffer = fread($file, $filesize);
    print $buffer;
    fclose($file);
    }
}
Avatar billede sukos Juniormester
08. april 2005 - 14:55 #34
ups, mangler lige en $filesize!
Avatar billede Slettet bruger
08. april 2005 - 14:55 #35
Nu har jeg prøvede at sætte dem sammen:

<?PHP
// This will get the connection to your database
$database = mysql_connect("localhost", "", "");
mysql_select_db("billede");
// End

$dir = "billeder/";

if(isset($_GET["ref"])) {
$row = mysql_query("SELECT pic FROM profiler WHERE ref = '$_GET[ref]'") Or Die (mysql_error());
while($billede = mysql_fetch_array($row)){
   
$billede = $dir .$row[pic];
if (file_exists($billede)) {
}else{
$billede = $dir ."intet.gif";
}
$type = split(".", $billede,2);
$type2 = $type[1];
$types = "Content-type: image/" .$type2;
header($types);
$tal = file($billede);
for ($i = 0; $i < sizeof($tal); $i++) {
    print $tal[$i];
}

}
}
?>


Men hvis du prøver og bruge det script, får du en box, op hvor du kan åbne, gemme og anulere...
Avatar billede sukos Juniormester
08. april 2005 - 14:57 #36
For nu at bruge

$typen = end(explode(".", $filename));
$types = "Content-type: image/" .$typen;
header($types);
$tal = file($billede);
for ($i = 0; $i < sizeof($tal); $i++) {
    print $tal[$i];
}


$billede er så defineret med sti til fil
Avatar billede Slettet bruger
08. april 2005 - 14:59 #37
hva vil du have mig til?
Kan ikke lige se hva det er du mener
Avatar billede sukos Juniormester
08. april 2005 - 15:03 #38
<?php

if(isset($_GET["ref"])) {

// connect............
$row = mysql_query("SELECT pic FROM profiler WHERE ref = '". addslashes($_GET["ref"]) ."'") or die (mysql_error());
if(mysql_num_rows($row) == 1) {
$filename = mysql_result($row, 0);
}else{
$filename = "intet.gif";
}

mysql_free_result($row);

// definer billedsti..............
$billede = "billeder/". $filename;
$typen = end(explode(".", $filename));
$types = "Content-type: image/" .$typen;
header($types);
$tal = file($billede);
for ($i = 0; $i < sizeof($tal); $i++) {
    print $tal[$i];
}

}else{
header("Location:/"); // sender til forside............
}

?>
Avatar billede sukos Juniormester
08. april 2005 - 15:04 #39
Og så mangler der jo lige et tjek på om filen findes!
Avatar billede Slettet bruger
08. april 2005 - 15:05 #40
Den loader og loader bare....

Mit script:

<?php

if(isset($_GET["ref"])) {

// connect............
// This will get the connection to your database
$database = mysql_connect("localhost", "", "");
mysql_select_db("billede");
// End

$row = mysql_query("SELECT pic FROM profiler WHERE ref = '". addslashes($_GET["ref"]) ."'") or die (mysql_error());
if(mysql_num_rows($row) == 1) {
$filename = mysql_result($row, 0);
}else{
$filename = "intet.gif";
}

mysql_free_result($row);

// definer billedsti..............
$billede = "billeder/". $filename;
$typen = end(explode(".", $filename));
$types = "Content-type: image/" .$typen;
header($types);
$tal = file($billede);
for ($i = 0; $i < sizeof($tal); $i++) {
    print $tal[$i];
}

}else{
header("Location:/"); // sender til forside............
}

?>
Avatar billede sukos Juniormester
08. april 2005 - 15:10 #41
Ligger "billeder" som underdir til det dir hvor php'en skal vise filen?

Kunne evt. være godt at bruge
$billede = $_SERVER["DOCUMENT_ROOT"] ."/billeder/". $filename;
Avatar billede Slettet bruger
08. april 2005 - 15:14 #42
PHP filen "try2.php" ligger i en mappe
Mappen "billeder" ligger i den samme mappe som "try2.php"
Avatar billede Slettet bruger
08. april 2005 - 15:17 #43
undskyld jeg ikke lige kan finde ud af det... :D
Kan godt forstå hvis du bliver træt af det her... men håber du bliver ved du skal nok få mange points
Avatar billede sukos Juniormester
08. april 2005 - 15:20 #44
Point er ikke vigtige!
Prøver lige om jeg kan lave et eksemepl du ka nse i browseren.........
Avatar billede Slettet bruger
08. april 2005 - 15:23 #45
Det ville være lækkert...
Avatar billede sukos Juniormester
08. april 2005 - 15:26 #46
ehh, har da forresten noget her:
http://nielsm.steffend.dk/billedearkiv/?arkiv=Billeder%20af%20dyr

her bliver lavet en iframe, som viser billedet. Hvis man klikker på det lille
Avatar billede Slettet bruger
08. april 2005 - 15:30 #47
man kan bare se sti'en til billederne:
http://nielsm.steffend.dk/thumbs/13.jpg
Avatar billede Slettet bruger
08. april 2005 - 15:32 #48
Avatar billede sukos Juniormester
08. april 2005 - 15:35 #49
stien er jo til det lille billede.
Her har vi så ikke snakket om thumbnails.

Når jeg ikke linker direkte til det store, er det fordi der skal være sat en session for at de tstore vises.


har lige gang i et dir på whitehat, for at lave et eksempel med ovenstående kode
Avatar billede sukos Juniormester
08. april 2005 - 16:13 #50
Nåh, nu er jeg sgu osse helt ude af den!
http://showsource.users.whitehat.dk/exp/591238/

Den viser godt nok links!

men bruger jeg IE vil den downloade filen!
Med NS vises billedet! :O)


Det er lige den header der...............................

eller, hvis man bruger et id som ikke findes, er der heller ingen problemer! :O)
Avatar billede Slettet bruger
08. april 2005 - 16:19 #51
meget meget underligt...!
Avatar billede sukos Juniormester
08. april 2005 - 16:22 #52
Jahh, ved sgutte lige! _O:)

Og gemmer man som jpg fil, kan den sagtens vises lokalt! :O)

Er nødt til at smutte, men er på igen senere idag/imorgen

(tænkte forresten på et script som læser dir igennem for filer og putter filnavn ind i en DB)
Avatar billede sukos Juniormester
08. april 2005 - 16:37 #53
Nåh, det er selvf. IE som ikke kender "image/jpg", men kender "image/jpeg"


løser det lige senere..............
Skal smutte nu!!!!!
Avatar billede Slettet bruger
08. april 2005 - 16:43 #54
jamen så er det jo egentlig bare et javascrip der skal lave et Browser check.,.. ?!
Okay.,, skal selv smutte,.. men ses... :D Hygge god weekend,...
Avatar billede Slettet bruger
10. april 2005 - 09:56 #55
Haft en god fredag aften og en god lørdag? :D
Avatar billede sukos Juniormester
10. april 2005 - 10:17 #56
njahh, lidt for meget øl måske! :O)
Avatar billede Slettet bruger
10. april 2005 - 10:36 #57
Sådan kan det jo gå... :D heh smiler...

Hvor er man fra`?
Jeg er fra slagelse... men tror du at du kan løse problemmet her?
Avatar billede sukos Juniormester
10. april 2005 - 10:39 #58
Bor i Kbh NV!

Og en "hurtig" løsning, som kan bruges for gif, jpg og png filer er lige lavet.
Men er så kun tjekket med IE og NS

http://showsource.users.whitehat.dk/exp/591238/index.php
Avatar billede sukos Juniormester
10. april 2005 - 10:41 #59
Og nu er der MotoGP på eurosport, så de næste timer er jeg "gone" :O)
http://showsource.users.whitehat.dk/exp/591238/index.php?id=1289
Avatar billede sukos Juniormester
10. april 2005 - 13:20 #60
Kan du bruge det?

Lige nu er det jo så array'et $filtyper kombineret med getimagesize() som bestemmer typen af header.
Avatar billede Slettet bruger
11. april 2005 - 09:27 #61
Ja kan godt bruge det, men hva skal "addslashes" bruges til?
Det tilføjer vil bare en "/" men til hva nytte?
Avatar billede sukos Juniormester
11. april 2005 - 11:17 #62
addslashes gør at man med garanti ikke kan manipulere hvilke kreterier der skal vælges fra i DB'en.

Se evt.
http://www.eksperten.dk/artikler/190
Avatar billede Slettet bruger
11. april 2005 - 11:22 #63
Hvis du gider lige at lægge et svar her:
http://www.eksperten.dk/spm/608499
Så får du lige points
Avatar billede Slettet bruger
12. april 2005 - 08:00 #64
Kan man egentlig bruger sammen funktion (self skal den lige skrives lidt om)
Men til PHP, htm, html, jpeg, gif, txt filer?
Avatar billede Slettet bruger
14. april 2005 - 14:06 #65
men mere bestemt hvis det muligt med addslashes
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