plaatje pas zichtbaar na inloggen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Senior, Medior and Junior SAP HANA Developer

Vacature details Vakgebied: Software/IT Opleiding: Medior Werklocatie: Veldhoven Vacature ID: 12696 Introductie Our client is the world's leading provider of lithography systems for the semiconductor industry, manufacturing complex machines that are critical to the production of integrated circuits or chips. Our purpose is “unlocking the potential of people and society by pushing technology to new limits”. We do this guided by the principles “Challenge”, “Collaborate” and “Care”. Wat verwachten we van jou? SAP Certified Application Associate - SAP HANA Cloud Modeling (training and/or certification) Bachelor degree or higher Excellent understanding of SAP HANA (2.0 / Cloud), Data Modelling and writing

Bekijk vacature »

Pagina: 1 2 volgende »

Ozzie PHP

Ozzie PHP

07/06/2012 15:01:45
Quote Anchor link
Ola,

Ik vraag me iets af. Ik denk dat het niet kan, maar wie weet heeft iemand hier toch ineens een geweldige oplossing.

Stel ik heb in m'n publieke www directory een map "membercontent". In die map staat een plaatje dat ik zo kan aanroepen:

www.mijnsite.nl/membercontent/eenplaatje.jpg

Is het nu zo te maken dat als je bent ingelogd (met een gebruikersnaam en wachtwoord) dat het plaatje dan zichtbaar wordt, en dat als je niet bent ingelogd het lijkt alsof het plaatje niet bestaat?

Het gaat dus om een rechtstreekse aanroep van het plaatje:

www.mijnsite.nl/membercontent/eenplaatje.jpg

(en dus NIET zoiets als www.mijnsite.nl/membercontent/toonplaatje.php?plaatje=eenplaatje.jpg)
 
PHP hulp

PHP hulp

24/12/2024 01:02:35
 
Joakim Broden

Joakim Broden

07/06/2012 15:11:07
Quote Anchor link
Dit was bij facebook ook eens zo'n geval. Iemand had een privé account en had zijn foto's niet zichtbaar gemaakt voor onbekende. maar als je de harde link wist van de foto's kon je ze alsnog bekijken.

Zelf heb ik nog nooit hier mee gewerkt maar wat mij lijkt is dat dit via .htacces (mod_rewrite) kan. Is het een afbeelding (png, gif etc) dan vang je die op met je .htacces en laat je achter de schermen naar een .php bestand verwijzen? Dan kun je in dat .php bestand kijken of gebruiker is ingelogd of niet. Of denk ik nu verkeerd?
 
Ozzie PHP

Ozzie PHP

07/06/2012 15:14:10
Quote Anchor link
Ik denk dat het wel kan als je het plaatje niet rechtstreeks aanroept, maar via een php-pagina. Alleen moet je alle plaatjes dan "renderen" en dat wil ik niet. Dus vandaar vraag ik me af of zoiets mogelijk is met een rechtstreekse aanroep op het bestand: www.mijnsite.nl/membercontent/eenplaatje.jpg
Gewijzigd op 07/06/2012 15:14:43 door Ozzie PHP
 
Joakim Broden

Joakim Broden

07/06/2012 15:16:44
Quote Anchor link
Denk zoals ik zei. Je roept het gewoon hard aan maar links met via mod_rewrite door naar checkimage.php?file=afbeelding zonder dat de gebruiker dat in de url ziet.
 
Ozzie PHP

Ozzie PHP

07/06/2012 15:18:04
Quote Anchor link
Ik denk eigenlijk dat dat niet kan, maar heb je wellicht een voorbeeldje?
 
Gerhard l

gerhard l

07/06/2012 15:19:44
Quote Anchor link
Ozzie,

Ik kwam dit tegen in een script voor watermerken in afbeeldingen maar ik denk dat je deze opzich wel kan ombouwen naar wat jij wil:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
RewriteEngine  on RewriteRule ^tutorials/(.*).jpg /home/...absolute path.../public_html/watermerk.php?img=%{REQUEST_FILENAME}

Hier worden alleen afbeeldingen in de map tutorials van een watermerk voorzien, zo kan je dus ook mappen met afbeeldingen maken die voor iedereen zichtbaar zijn.
Gewijzigd op 07/06/2012 15:20:48 door gerhard l
 
Ozzie PHP

Ozzie PHP

07/06/2012 15:21:51
Quote Anchor link
Thanks Gerhard. Maar stel nu dat iemand is ingelogd, dan moet je alsnog via php het plaatje renderen neem ik aan?
 
Koen Vlaswinkel

Koen Vlaswinkel

07/06/2012 15:32:43
Quote Anchor link
Ja, maar dat is redelijk makkelijk met (als je jpg hebt) gewoon imagecreatefromjpeg(). http://php.net/manual/en/function.imagecreatefromjpeg.php
 
Gerhard l

gerhard l

07/06/2012 15:37:59
Quote Anchor link
Ja je moet er wel heen renderen, maar waarschijnlijk hoef je je bestaande code daar niet voor aan te passen.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<img src="http://mijnsite.nl/test/test.jpg">

//ht access stuurt alle jpg door naar check.php?path=request_uri
<?
if(isset($_SESSION['bla']) AND $_SESSION['bla'] == 'OKE'){
    echo '<img src="'.$_GET['path'].'">';
}

else{
    echo '<img src="defauklt.jpg">';
}

?>

Of is dit niet wat je bedoelde?
Gewijzigd op 07/06/2012 15:38:21 door gerhard l
 
Erwin H

Erwin H

07/06/2012 15:39:54
Quote Anchor link
Waarom wil je het niet renderen?
Eerlijk gezegd denk ik namelijk dat het antwoord inderdaad de modrewrite optie is die via een php pagina het plaatje vanaf een niet direct openbare locatie haalt. Met renderen dus...
 
Ozzie PHP

Ozzie PHP

07/06/2012 15:49:57
Quote Anchor link
Hmmm... naja, ik zat zo te denken... stel ik maak een cms waarop je moet inloggen en de layout van die cms bestaat uit plaatjes. Ik dacht eraan om de plaatjes alleen beschikbaar te maken als je bent ingelogd. Iemand die niet is ingelogd kan dan ook niet testen of de site op mijn cms draait door bijv. een plaatje van de cms layout rechtstreeks aan te roepen.

Maar nu kan ik dat wel beveiligen, maar als dat inhoudt dat alle layout plaatjes telkens moeten worden gerenderd dan denk ik dat dat een vrij zware belasting is. Vandaar dat ik me dus afvroeg of het ook kon met rechtstreekse aanroepen.
 
Wouter J

Wouter J

07/06/2012 16:02:15
Quote Anchor link
Waarom zou je niet willen dat mensen ontdekken dat de website met jou CMs is gemaakt? Dat is toch juist extra reclame?
 
Ozzie PHP

Ozzie PHP

07/06/2012 16:07:49
Quote Anchor link
Ja, eigenlijk zat ik meer te denken aan veiligheid om eventuele hackpogingen tegen te gaan. Wel even een extreem voorbeeldje nu, maar het gaat om het idee. Stel mijn cms zou op heeeel veel sites gebruikt gaan worden (dream on... ;-)) en een hacker zou een lek vinden. Vervolgens zou ie dan andere sites kunnen zoeken die ook met mijn cms gemaakt zijn door bijv. urls te testen: www.zomaareensite.nl/ozziescms/geheimplaatje.jpg

Maar nogmaals dit gaat natuurlijk heel erg ver. Ik zit me nu ook te bedenken dat er een logingedeelte moet komen en dit kan natuurlijk niet afgeschermd zijn, dus wat dat betreft kan het sowieso niet lukken wat ik in gedachten had.

Maar zoasl ik al zei... het was gewoon even iets wat door m'n gedachten flitste en ik was benieuwd of het haalbaar was.
Gewijzigd op 07/06/2012 16:08:22 door Ozzie PHP
 
Gerhard l

gerhard l

07/06/2012 16:29:28
Quote Anchor link
Toch vind ik het leuk dat je dit onderwerp op het forum brengt. Op sommige fora's zie ik dat ook wel eens dat alleen bepaalde leden een afbeelding kunnen zien en anderen een standaard afbeelding krijgen te zien, maar had me nog nooit afgevraagd hoe en dat zou zo dus mogelijk zijn;)
 
Ozzie PHP

Ozzie PHP

07/06/2012 16:38:11
Quote Anchor link
Ja, dat zou mogelijk zijn alhoewel ik me afvraag of jouw code gaat werken:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<img src="http://mijnsite.nl/test/test.jpg">

//ht access stuurt alle jpg door naar check.php?path=request_uri
<?
if(isset($_SESSION['bla']) AND $_SESSION['bla'] == 'OKE'){
    echo '<img src="'.$_GET['path'].'">';
}

else{
    echo '<img src="defauklt.jpg">';
}

?>


Volgens mij werkt dat niet, want je gaat nu een plaatje in een plaatje echo'en :)
Dat plaatje zou je dan dus moeten renderen.
 
Niels K

Niels K

14/06/2012 13:28:09
Quote Anchor link
Maak van de naam van je plaatje + extensie een hash. Stop die hash i.c.m de filename de extensie in de database.

URL wordt dan:

http://jouwsite.nl/cache/rg37gAg

Met je framework maak je een route naar een ImageController / FileController. En in de ImageController / FileController handel je alles af.

Niels
 
- Ariën  -
Beheerder

- Ariën -

14/06/2012 13:34:48
Quote Anchor link
Klinkt wel uitdagend, maar in mijn ogen vind ik zoiets triviaals niet echt de moeite waard om te beveiligen.

Je kan toch ook de icons van de admin in een centrale /images/ of templates/img map plaatsen? Als iemand ze ontdekt is het toch niet zo spannend, omdat je er toch geen verwijzingen hebt naar de admin-directory.

Scheelt ook nog parsetime ;-)
 
Ozzie PHP

Ozzie PHP

14/06/2012 14:02:54
Quote Anchor link
Niels Kieviet op 14/06/2012 13:28:09:
Maak van de naam van je plaatje + extensie een hash. Stop die hash i.c.m de filename de extensie in de database.

URL wordt dan:

http://jouwsite.nl/cache/rg37gAg

Met je framework maak je een route naar een ImageController / FileController. En in de ImageController / FileController handel je alles af.

Niels

Niels, op zich leuk, maar dan kun je het plaatje toch nog steeds direct aanroepen? :-/
 
Ozzie PHP

Ozzie PHP

15/06/2012 23:10:24
Quote Anchor link
* bump *

Ozzie PHP op 14/06/2012 14:02:54:
Niels, op zich leuk, maar dan kun je het plaatje toch nog steeds direct aanroepen? :-/
 
Marco M

Marco M

15/06/2012 23:43:29
Quote Anchor link
Theoretisch gezien is het mogelijk. Je zou alle sessie variabelen (wanneer ingelogd dus) naar een tekstbestand kunnen schrijven, en via rewritemap kunnen uitlezen en gebruiken. In praktijk is het een behoorlijk omslachtige manier, aangezien de hierboven aangegeven opties veel makkelijker en effectiever zijn.

Wat je zou kunnen doen is afbeeldingen een prefix geven (per site) maar deze d.m.v. rewriteconditions en -rules omzetten naar de daadwerkelijke locatie. In het cms gebruik je dan verwijzingen als:

mijnsite_bg.jpg
jouwsite_bg.jpg
nogeensite_bg.jpg
***_bg.jpg

En allen verwijzen dan weer naar www.jouwcms.nl/images/bg.jpg

Succes met het uitwerken :-)
 
Terence Hersbach

Terence Hersbach

16/06/2012 01:11:46
Quote Anchor link
Wat een gedoe, dit kun je redelijk simpel oplossen:

.htaccess in de map van de plaatjes (of een map hoger als dit zo uitkomt, maakt voor de werking van het script niet uit)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
RewriteEngine  on
RewriteRule ^(.*).(jpg|gif|png) checksession.php?path=$1.$2 [L]


checksession.php, in dezelfde map als de .htaccess plaatsen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
// start session
session_start();

// check if the user is logged in - add extra validation to check if the image is viewable for this user
if (isset($_SESSION['logged_in'], $_GET['path']) && $_SESSION['logged_in'] && is_readable($_GET['path'])) {

    // get mimetype of the file and send header
    header("Content-type: " . mime_content_type($_GET['path']));

    // put through the file to the users client without loading it first into memory
    readfile($_GET['path']);

// if user is not able to see it, or if the image does not exist, show a general message
} else {
    echo 'You should be logged in to view this image, or this image is not yours.';

    // send 404 errors so google wont index it
    header("HTTP/1.0 404 Not Found");
    header("Status: 404 Not Found");
}

?>


info: readfile opent een bestand en stuurt het meteen door naar de browser, zonder het bestand in het geheugen van de server te laden wat snelheid vergroot.
Gewijzigd op 16/06/2012 01:14:09 door Terence Hersbach
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.