Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyświetlanie obrazków
Forum PHP.pl > Forum > Przedszkole
Daimos
mam includowany plik na roznych stronach, chcialem sie zapytac jak zrobic, zeby nie otwieral sie on jezeli ktos wpisze bezposrednia do niego sciezke.
probowalem tak:

  1. <?php
  2. $plikadres=$_SERVER['REDIRECT_URL'];
  3. if(ereg(&#092;"nazwaplikunaktorymjestincludowanastrona\", $plikadres)){
  4. ok
  5. }
  6. esle{
  7. blad
  8. }
  9.  
  10. ?>

ale to nie dziala

Dodam jeszcze bo moze to jest istotne
w pliku index.php includuje plik xxx.php a w pliku xxx.php jest includowany plik zzz.php i chce zeby plik zzz.php wyswietlal sie dalej na stronie, ale jak ktos wpisze sciezke bezposrednia do tego pliku to go nie zobaczy
Wave
Można zrobić tak:
index.php
  1. <?php
  2. $a = 'index'; 
  3. include('strona.inc');
  4. ?>

strona.inc
  1. <?php
  2. if($a != 'index' || $_SERVER['REQUEST_METHOD'] == 'GET' || $_SERVER['REQUEST_METHOD'] == 'POST') header(&#092;"Location: index.php\");
  3. ?>
Ociu
1. Dajesz na tych stronach co chcesz przez nich includować:
  1. <?php
  2. define(&#092;"STALA\", TRUE);
  3. ?>

i potem w tym, co nie chcesz żeby był dolecowy:
  1. <?php
  2. if(!defined('STALA'))
  3. {
  4. die(&#092;"Error !\");
  5. }
  6. ?>

2. Robisz ciacho.
Daimos
nie dziala nic z tego ;(

chodzi o to ze na stronie mam includowany plik obrazki.php
w ktorym jest wyswietlana galeria, adres obrazka to rysowanie.php?a=jakaszmienna

Chce zeby nie ladowal sie obrazek jak ktos wpisze bezposredni adres takiego obrazka
Tylko i wylacznie ma sie wyswietlac gdy jest includowany w pliku obrazki.php

zrobilem plik rysowanie.php tak
  1. <?php
  2. if($aqwer != 'index' || $_SERVER['REQUEST_METHOD'] == 'GET' || $_SERVER['REQUEST_METHOD'] == 'POST'){ header(&#092;"Location: index.php\"); }
  3. else{
  4. $pliczek = $_GET['d'];
  5. $dd = $_GET['c'];
  6. header(&#092;"HTTP/1.1 202 Accepted\");
  7. Header(&#092;"Content-type: image/Jpeg\");
  8. header(&#092;"Content-Disposition: attachment; filename=$dd\");
  9. $obraz=ImageCreateFromJpeg(&#092;"$pliczek\");
  10. ImageJpeg($obraz);
  11. ImageDestroy($obraz);
  12. }
  13. ?>

w pliku obrazki.php i w tym na ktorym jest includowany obrazki.php umiescilem:
  1. <?php
  2. $aqwer = 'index';
  3. ?>


no i nie rysuje mi wcale obrazkow sad.gif
kszychu
Schowaj te obrazki w miejsce, w które tylko php będzie miało dostęp a apache nie. I po co kombinować...
Daimos
obrazki sa w postaci rysowanie.php?a=aslkdjasd
wiec nikt i tak nie zna miejsca docelowego obrazkow

chodzi o to ze jak ktos wpisze adres do pliku rysowanie.php?a=aslkdjasd
to odpali mu sie obrazek, a chce zeby wyswietlil mu sie komunikat, ze obrazki mozna ogladac tylko ze strony
buffaloo
widzialem takie cos na roznych stronach wiec chyba jest to mozliwe snitch.gif to pomoze ktos ? sad.gif
hesus
Zarejestruj zmienną w sesji jeśli strona jest odpalona np:
  1. <?php
  2.  
  3. $strona_odpalona='TAK';
  4. if (!session_is_registered('strona_odpalona')) session_register('strona_odpalona');
  5.  
  6. ?>

a przy każdym uruchamianiu skryptu ją usuwaj:
  1. <?php
  2.  
  3. if (session_is_registered('strona_odpalona')) {
  4. session_unregister('strona_odpalona');
  5. // ...inne instrukcje...
  6. }
  7. else echo &#092;"Zjęcia można oglądać tylko ze strony\";
  8.  
  9. ?>
kszychu
A nie można by tu pokombinować z referrerem?
Daimos
kombinowalem baaardzo dlugo, z 20 godzin w sumie siedzialem nad tym sad.gif i nic, a z php fenomenem nie jestem
Spirit86
Cytat(Ociu @ 2005-03-28 19:09:11)
1. Dajesz na tych stronach co chcesz przez nich includować:
  1. <?php
  2. define(&#092;"STALA\", TRUE);
  3. ?>

i potem w tym, co nie chcesz żeby był dolecowy:
  1. <?php
  2. if(!defined('STALA'))
  3. {
  4. die(&#092;"Error !\");
  5. }
  6. ?>

2. Robisz ciacho.

hehe, stary sprawdzony PHPBB smile.gif

ja to mam zrobione tak:

  1. <?
  2. if (eregi(&#092;"nazwa.php\", $_SERVER['PHP_SELF'])) die('Czego tu chcesz?'); 
  3. ?>
Daimos
probowalem juz tak zrobic, ale sprawa wyglada tak:
mam plik tapety.php, w nim jest za pomoca include icludowany plik obrazki.php
w pliku obrazki php NIE JEST INCLUDOWANY plik rysowanie.php tylko jest wyswietlany w postaci:
  1. <img src=rysowanie.php?d=aaa>

jakby plik rysowanie.php byl includowany normalnie to nie bylo by problemu i wszystko by dzialalo ale zauwazylem ze jak jest wklejony jako obrazek to nie pobiera zadnych zmiennych sad.gif
ktos wie co z tym mozna zrobic ?

cookies odpadaja bo jak ktos odpali najpierw strone gdzie beda umieszczane ciasteczka to potem bedzie mogl wyswietlic normalnie obrazek wpisujac adres do niego, a chce zeby obrazki wyswietlane byly tylko tylko i wylacznie na stronie
Diwi
Zamiast błędów zrób sobie z tego kodu do wyświetlania funkcje:

  1. <?php
  2. function pokaz_obrazek($obrazek) {
  3. $pliczek = $obrazek;
  4. $dd = $obrazek;
  5. header(&#092;"HTTP/1.1 202 Accepted\");
  6. Header(&#092;"Content-type: image/Jpeg\");
  7. header(&#092;"Content-Disposition: attachment; filename=$dd\");
  8. $obraz=ImageCreateFromJpeg(&#092;"$pliczek\");
  9. ImageJpeg($obraz);
  10. ImageDestroy($obraz);
  11. }
  12. ?>


No a potem wystarczy że sobie includujesz ten plik

  1. <?php
  2. include('nazwa-pliku.php');
  3.  
  4. pokaz_obrazek($_GET['c']);
  5. ?>


No a potem w plikach które nie chcesz żeby były dostępne z poziomu przeglądarki czyli mogą być tylko includowane przez inne skrypty wpisujesz sobie kod php:

  1. <?php
  2. if (eregi('nazwa-pliku.php', $_SERVER['PHP_SELF'])) {
  3. exit('A co ty tu robisz !!');
  4.  
  5. }
  6. ?>


Jeżeli dobrze zrozumiałem co chcesz osiągnąć to to powinno ci pomóc smile.gif

Pozdrawiam
Daimos
zrobilem tak i jest prawie to o co mi chodzilo
tylko ze zrobilem taki test:
  1. <?
  2. include(&#092;"plik.php\");
  3. echo 'asdadasdasdadasd<img src='.pokaz_obrazek(&#092;"1.jpg\").'>';
  4. ?>

w efekcie wyswietla sie sam obrazek, bez tego asdadasdasdadasd
i co teraz ? ;p
Diwi
Spróbuj sobie roździelić polecenia echo i wpisz coś takiego
  1. <?php
  2. include('plik.php');
  3. echo 'asdadasdasdadasd';
  4. echo '<img src='.pokaz_obrazek(&#092;"1.jpg\").'>';
  5. ?>
  6.  
  7. Jak to nie pomoże to spróbuj tak (nie wiem czy to pomoże :) ):
  8.  
  9. <?php
  10. echo 'asdadasdasdadasd n';
  11. echo '<img src='.pokaz_obrazek(&#092;"1.jpg\").'>';
  12. ?>
Daimos
zrobilem tak i w wyniq otrzymalem :
  1. <?php
  2.  
  3. Warning: Cannot modify header information - headers already sent by (output started at c:&#092;usrkrasnalwwwi1.php:3) in c:usrkrasnalwwwi2.php on line 3
  4.  
  5. Warning: Cannot modify header information - headers already sent by (output started at c:&#092;usrkrasnalwwwi1.php:3) in c:usrkrasnalwwwi2.php on line 4
  6. ˙Ř˙ŕ
  7. // i dalej kod obrazka;) smieszne znaczki
  8.  
  9. ?>

pozatym chcialem wstawic funkcje w tlo tabelki i efekt:
  1. <table background="">

a tam powinien chyba byc adres winksmiley.jpg
Diwi
wstaw na samym początku przed <?php kod

start_ob();

i na końcu przed ?>

ob_end_flush();

Powinno już nie być problemów z
Warning: Cannot modify header ...

A co do <table background="">

To jak masz tą funckje to powinieneś jej używać tak

  1. <?php
  2. echo '<table background=\"'.pokaz_obrazek(&#092;"adres obrazka np. images/tlo.jpg\").'\">'
  3. ?>


Spróbuj wszystko poprawic tak jak tu podałem i powiedz co ci pokazuje skrypt smile.gif


Edit:
Zmień sobie funkcje na taką:
  1. <?php
  2. function pokaz_obrazek($obrazek) {
  3. $pliczek = $obrazek;
  4. $dd = $obrazek;
  5. header(&#092;"HTTP/1.1 202 Accepted\");
  6. Header(&#092;"Content-type: image/Jpeg\");
  7. header(&#092;"Content-Disposition: attachment; filename=$dd\");
  8. $obraz=ImageCreateFromJpeg(&#092;"$pliczek\");
  9. ImageJpeg($obraz);
  10. ImageDestroy($obraz);
  11. return $obraz;
  12. // powinno to wszystko działać :) jak nie to napisz następnego posta 
  13. }
  14.  
  15. ?>




Pozdrawiam
Daimos
  1. <?php
  2. function pokaz_obrazek($obrazek) {
  3. $pliczek = $obrazek;
  4. header(&#092;"HTTP/1.1 202 Accepted\");
  5. Header(&#092;"Content-type: image/Jpeg\");
  6. $obraz=ImageCreateFromJpeg(&#092;"$pliczek\");
  7. ImageJpeg($obraz);
  8. ImageDestroy($obraz);
  9. return $obraz;
  10. // powinno to wszystko działać :) jak nie to napisz następnego posta
  11. }
  12.  
  13. ?>
zrobilem tak i wyswietla mi obrazek, tylko dalej problem:
taki kod zrobilem:
  1. <?
  2.  
  3. include(&#092;"2.php\");
  4. echo '<img src='.pokaz_obrazek(&#092;"1.jpg\").'><img src='.pokaz_obrazek(\"1.jpg\").'><img src='.pokaz_obrazek(\"1.jpg\").'><img src='.pokaz_obrazek(\"1.jpg\").'>';
  5. echo 'asdadasdasdadasd';
  6.  
  7. ?>
powinno wyswietlic ten obrazek kilka razy i tekst, a wyswietla tylko obrazek, pozatym z header dalej problem, teraz go niemam bo przed narysowaniem obrazka nic nie wysylam, a jak umiescilem te funkcje ob to otrzymalem takie cos:
Kod
Fatal error: Call to undefined function: start_ob() in c:\usr\krasnal\www\i\1.php on line 2


co do tabelki to dokladnie tak uzylem tej funkcji i nie dziala
Diwi
Sorry pomyłka nie start_ob() tylko ob_start(). Czeski błąd smile.gif
Daimos
plik 1.php
  1. <?
  2. include(&#092;"2.php\");
  3. echo 'asdadasdasdadasd';
  4. echo '<img src='.pokaz_obrazek(&#092;"1.jpg\").'><img src='.pokaz_obrazek(\"1.jpg\").'>';
  5.  
  6. ?>

plik 2.php
  1. <?php
  2. function pokaz_obrazek($obrazek) {
  3. $pliczek = $obrazek;
  4. header(&#092;"HTTP/1.1 202 Accepted\");
  5. header(&#092;"Content-type: image/Jpeg\");
  6. $obraz=ImageCreateFromJpeg(&#092;"$pliczek\");
  7. ImageJpeg($obraz);
  8. ImageDestroy($obraz);
  9. return $obraz;
  10. }
  11. ?>

rezultat:
Kod
Obrazek "http://127.0.0.1/~i/1.php" nie może zostać wyświetlony, ponieważ zawiera błędy.



Zrobilem tak jak napisal hesus:
  1. <?php
  2.  
  3. $strona_odpalona='TAK';
  4. if (!session_is_registered('strona_odpalona')) session_register('strona_odpalona');
  5.  
  6. ?>
z sesjami, wyswietlany obrazek niszczy sesje. No i jest pieknie, ale jak na stronie jest wyswietlany jeden obrazek, jak jest ich wiecej to i tak wyswietli sie tylko ten jeden sad.gif
Diwi
Hmm ale co to za bład to nie wiem :/ . Tu akurat niepomoge bo nie wiem co to za błąd:

I jeszcze jedna sprawa:

Plik 1.php ma wyglądać tak:
  1. <?
  2.  
  3. include(&#092;"2.php\");
  4. echo 'asdadasdasdadasd';
  5. echo '<img src='.pokaz_obrazek(&#092;"1.jpg\").'><img src='.pokaz_obrazek(\"1.jpg\").'>';
  6.  
  7. ?>


Do tego zmień jednak funkcje na taką:

  1. <?php
  2. function pokaz_obrazek($obrazek) {
  3. $pliczek = $obrazek;
  4. header(&#092;"HTTP/1.1 202 Accepted\");
  5. header(&#092;"Content-type: image/Jpeg\");
  6. $obraz=ImageCreateFromJpeg(&#092;"$pliczek\");
  7. ImageJpeg($obraz);
  8. ImageDestroy($obraz);
  9. }
  10. ?>


I powiedz co ci wyświetla smile.gif

Pozdrawiam
Daimos
wyswietla mi dalej:
Kod
Obrazek "http://127.0.0.1/~i/1.php" nie może zostać wyświetlony, ponieważ zawiera błędy.

kombinowalem na sesjach, tak jak napisal hesus, przeczytaj post wyzej bo go edytowalem, chyba z sesjami jest blizej uzyskania sukcesu snitch.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.