Problém se SESSION (platnost v podskriptu) – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Problém se SESSION (platnost v podskriptu) – PHP – Fórum – Programujte.comProblém se SESSION (platnost v podskriptu) – PHP – Fórum – Programujte.com

 

Pepíno
~ Anonymní uživatel
16 příspěvků
10. 9. 2008   #1
-
0
-

Ahoj, narazil jsem na problém se session se kterým už si vážně nevím rady. Mám hlavní skript, který začíná session_start(). Do něj vložím na jednom místě přes require další skript ve kterém volám funkci obsahující tento cyklus pro vykreslení tabulky s obrázky:



for ($top_akt=$start; $top_akt < $strana; $top_akt++):
echo "<tr>";
for ($left_akt=$start; $left_akt < $strana; $left_akt++):
echo "<td>";
$_SESSION["obrazek"] = zobraz_obsah_pole(Substr($nalez['cislo'], 0, 1)); //získání cesty na obrázek, ověřeno výpisem přes echo, session je naplněna platnou cestou na obrázek
echo "<a href='karwak.php?stav=$stav&get[pozice_top]=$top_akt&get[pozice_left]=$left_akt'><img src='picture.php'></a>";
$_SESSION["obrazek"] = "";
echo "</td>";
endfor;
echo "</tr>";
endfor;


V cyklu se volá skript picture.php pro zobrazení obrázku do pole tabulky, cestu na obrázek předávám přes $SESSION["obrazek"]. Cesta před vstupem do picture.php je opravdu v příslušné session a je platná (prověřeno přes echo). V tabulce mají být dva druhy obrázků, cesta na ně se natahuje ve funkci zobraz_obsah_pole. Zkoušel jsem $_SESSION["obrazek"] v každém kole cyklu vyprázdnit, ale obrázky se pak přestanou zobrazovat úplně, zkoušením různých variant s vyprázděnín jsem zjistil toto:
- jakmile se session vynuluje mimo picture.php (jako v kódu výše), přestane se obrázek úplně zobrazovat (na žádném políčku není nic)
- když vynuluji session přímo v picture.php, na jeho konci, je po vypsání $_SESSION["obrazek"] za picture.php pořád naplněná
-když se session nevynuluje vůbec, vykresluje se na všechny políčka pořád jeden a ten samý obrázek bez ohledu na cestu, uloženou do session (k obrázkům jsem nechával přes echo vypisovat cesty na soubor a byly různé)

Tady je skript picture.php




<?php

session_start();

$obr_name = $_SESSION["obrazek"];

$im = imagecreatefromjpeg($obr_name);

header("Content-type: image/jpeg");

imagejpeg($im);

imagedestroy($im);

?>

Nahlásit jako SPAM
IP: 91.195.106.–
KIIV
~ Moderátor
+43
God of flame
10. 9. 2008   #2
-
0
-

jen takovej dotaz.... jak to ma sakra fungovat?
jen nezapomen ze obrazky se nacitaj az pozdeji ... a kdo vi jestli obsah SESSION az po skonceni...

Nahlásit jako SPAM
IP: 80.188.94.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Pepíno
~ Anonymní uživatel
16 příspěvků
10. 9. 2008   #3
-
0
-

To KIIV : Má to vykreslit tabulku, která bude mít v některých buňkách obrázek A a v některých obrázek B (cestu na ně vrací funkce zobraz_obsah_pole, jejíž výstup je v pořádku). Když po zavolání picture.php session nevynuluju, vykreslí se mi do všech polí tabulky obrázek A (přestože do picture.php byla několikrát prokazatelně odeslána cesta na obrázek B) . Řekl jsem si, že zkusím session na konci každého kola cyklu radši vyprázdnit, ale když to udělám, stane se podivná věc - ani do jedné buňky tabulky se mi obrázek nezobrazí. Zkusil jsem přesunout vyprázdnění session přímo do skriptu picture.php (na konec) a zase se mi žádný obrázek nezobrazí a navíc když si na řádce za voláním picture.php vypíšu session, je pořád naplněná, což je dost zvláštní, každá session spuštěná přes session_start() by přece měla platit ve všech skriptech i funkcích.

Nahlásit jako SPAM
IP: 91.195.106.–
KIIV
~ Moderátor
+43
God of flame
10. 9. 2008   #4
-
0
-

jenze zapominas ze takhle to nefunguje....
zaprve se obsah session ulozi do toho souboru az po skonceni session... coz znamena ze se ti tam zadna zmena nemuze
projevit protoze uz pri zavreni neexistuje... nebylo by jednodussi si prihodit obrazek.php?o=prvy nebo obrazek.php?o=druhy ??

Nahlásit jako SPAM
IP: 80.188.94.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Pepíno
~ Anonymní uživatel
16 příspěvků
10. 9. 2008   #5
-
0
-

To KIIV : Jednodušší by to určitě bylo, ale když pošlu skriptu proměnnou, ve zdrojovém kódu na straně uživatele se zobrazí celá cesta na obrázek, kterou si pak může zadat do prohlížeče a stáhnout. Proto se to snažím obejít přes picture.php a session. Tomu, že se obsah session uloží do souboru po skončení session, ale moc nerozumím, měl jsem za to, že session je normální proměnná, která zůstává na straně serveru i po odeslání HTML uživateli a volá se přes pole $_SESSION. Pokud se řádky skriptu provádí postupně, čekal bych, že se provede naplnění session ( $_SESSION["obrazek"] = cesta_na_soubor), potom se zavolá soubor picture.php, který jí naplněnou použije a další řádek jí vyprázdní ($_SESSION["obrazek"] = "";). Pokud session funguje jinak, sem s každou informací, protože na netu jsem na tohle téma nic víc nenašel :o)

Nahlásit jako SPAM
IP: 91.195.106.–
KIIV
~ Moderátor
+43
God of flame
10. 9. 2008   #6
-
0
-

no je to promenna ktera se zachova i po vypnuti... ale....
uchovava se pomoci souboru... do souboru se nejspis uklada az po skonceni toho scriptu...
stahnout si ho muze myslim tak jak tak ...

Nahlásit jako SPAM
IP: 80.188.94.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Pepíno
~ Anonymní uživatel
16 příspěvků
10. 9. 2008   #7
-
0
-

To KIIV : Vždycky se najde způsob, jak se na ty obrázky dostat, cílem je, aby to nedělali masově běžní uživatelé. Výpis obrázků přes skripty typu picture.php je jeden ze způsobů ochrany, který používá spousta programátorů v php. Standartně se používá ve tvaru picture.php?id=cislo přičemž číslo se pak v picture.php přes databázi vymění za cestu, ale je to krok navíc, který se mi nelíbí, proto zkouším předávat cestu přes session.
Se session pracuju už dlouho, běžně jejich hodnoty měním při běhu skriptu a nikdy jsem s tím problém neměl. Máš na mysli, že by se hodnota session při volání dalšího skriptu (v tomto případě skriptu picture.php) měnila až po jeho skončení?

Nahlásit jako SPAM
IP: 91.195.106.–
KIIV
~ Moderátor
+43
God of flame
10. 9. 2008   #8
-
0
-

$_SESSION["obrazek"] = zobraz_obsah_pole(Substr($nalez['cislo'], 0, 1)); 

$_SESSION["obrazek"] = "";


jsem si zatracene jist ze se zmeni :)

Nahlásit jako SPAM
IP: 80.188.94.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Phoenix0
Super člen
10. 9. 2008   #9
-
0
-

podle mě "běžný masový uživatel" klikne pravým tlačítkem na obrázek a dá uložit, v tom mu myslim nezabráníš

Nahlásit jako SPAM
IP: 85.70.88.–
KIIV
~ Moderátor
+43
God of flame
10. 9. 2008   #10
-
0
-

To Phoenix : ale jo kdyz das obrazek na pozadi a pred nej das pruhlednej stejne velikosti... vetsina lidi todle nezvladne obejit :D

Nahlásit jako SPAM
IP: 80.250.27.–
Program vždy dělá to co naprogramujete, ne to co chcete...
KIIV
~ Moderátor
+43
God of flame
10. 9. 2008   #11
-
0
-

a komplet by to bylo kdyby to pozadi nastavoval az scriptem

Nahlásit jako SPAM
IP: 80.250.27.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Pepíno
~ Anonymní uživatel
16 příspěvků
11. 9. 2008   #12
-
0
-

To KIIV : To já právě taky :o). Každopádně díky ta info, vykašlu se na session, udělam si malou šifrovací funkci, cestu na obrázky odešlu do picture.php šifrovaně a mam po starostech :o)

Nahlásit jako SPAM
IP: 91.195.106.–
Pepíno
~ Anonymní uživatel
16 příspěvků
11. 9. 2008   #13
-
0
-

To KIIV : Přesně tak, fintu s průhlednym obrázkem používam taky ;o). Na běžnýho uživatele to stačí :o)

Nahlásit jako SPAM
IP: 91.195.106.–
KIIV
~ Moderátor
+43
God of flame
11. 9. 2008   #14
-
0
-

jseste sem zvazobal ze by nebylo spatny udelat neco jako sachovnici... dva obrazky pres sebe... jeden by mel nejakou cast obrazku a druhej by byl pres to a byl by pruhlednej na spravnejch mistech :D

Nahlásit jako SPAM
IP: 80.250.27.–
Program vždy dělá to co naprogramujete, ne to co chcete...
kezalb0
Newbie
11. 9. 2008   #15
-
0
-

a co proste udelat lightbox......to ti taky nedovoli ulozit.....nebo BFU to nedovoli......

Nahlásit jako SPAM
IP: 78.156.128.–
new_POPE
~ Anonymní uživatel
22 příspěvků
13. 9. 2008   #16
-
0
-

A co skusit pouzit VODOZNAK?

ked user chce nech si ho stiahne, ale mne by sa z fotky nechcelo odstranovat vodoznak :smile14:

Nahlásit jako SPAM
IP: 84.47.75.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 44 hostů

Podobná vlákna

IE 7 a problém se Session — založil DevFist

Problém se Session — založil schimpanze

Problém se session — založil zooner

SESSION a HTTPS problém — založil Martin Brodecký

Problém se session na web. serv. — založil spartan13

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý