Autor | Zpráva | ||
---|---|---|---|
Noobos Profil * |
#1 · Zasláno: 29. 3. 2006, 21:14:36
Při pokusu o řešeni těchto dvou problemů berte na vědomí, že mám účet u WEBZDARMA, proto mi neraďte postupy, které tam nefungují.
Mám celkově dva (slovy 2) problémy: 1) Chtěl bych zamezit opakovanému použití skriptů na jedné stránce, např. refreshi; také bych chtěl zamezit funkčnost tlačítka zpět. Jak to mám udělat? Nejde to nějak (z pohledu uživatele) obejít? 2)Chtěl bych mít složku downloads, kde by byly ZIP archivy a chtěl bych, aby nebyly přístupné např. zadáním adresy, ale pouze po provedení srčitého skriptu (řekněme zaplacení). Jak by to šlo provést? Třeba za pomoci .hrtaccess. Důležité je, aby to bylo neošulitelné. S díky Noobos |
||
temistokles Profil |
#2 · Zasláno: 29. 3. 2006, 21:41:20
tak hned na zaciatok sa mi zda zaujimava kombinacia "WZ" a "po zaplaceni".
ten druhy bol by siel obist tak, ze subory das do priecinku, ktoremu nastavis prava tak, aby sa ku nemu nedalo dostat, ale aby sa ti ku nemu dostali skripty. a ked budes davat niekomu subor tak mu ho posles cez php force-downloadom. prvy bod by snad siel osetrit javascriptom - ale nikdy to nebude IMHo na sto percent |
||
roberta Profil |
#3 · Zasláno: 29. 3. 2006, 22:11:43
1. nedá sa. tlačítko zpět nevypneš
2. nedá sa. lebo wz |
||
djlj Profil |
#4 · Zasláno: 29. 3. 2006, 23:39:29
Noobos
Ta druhá věc by se dala ošetřit tak, jak píše temistokles, ale mám takový pocit, že se stahované soubory ukládají dočasně do RAM (to opravdu nevím jistě, kdyžtak mě opravte), což není ideální. Napadá mě spíš, že bys měl soubory uložené v jakékoliv složce a při dotazu na download by se soubor zkopíroval do nějakého dočasně vytvořeného adresáře, odkud by se stáhl, a ten adresář by se po čase automaticky smazal... |
||
souki Profil |
#5 · Zasláno: 30. 3. 2006, 08:33:40
soubor zkopíroval do nějakého dočasně vytvořeného adresáře
jednodušší by možná bylo zamezit zobrazení obsahu složky a soubory přejmenovávat skriptem |
||
Hugo Profil |
#6 · Zasláno: 30. 3. 2006, 09:09:38
Noobos
ad 2) Jde to udělat pomocí .htaccess. Stačí do něj vložit deny from all a nikdo (kromě apache) se k těm souborům nedostane. Takže je pak můžeš odesílat uživateli pomocí php. |
||
souki Profil |
#7 · Zasláno: 30. 3. 2006, 09:11:58
nebo http://www.jakpsatweb.cz/server/mod_rewrite/mod-rewrite-priklady.html# zakaz
kdyby si chtěl omezit jen některé soubory |
||
Noobos Profil * |
#8 · Zasláno: 30. 3. 2006, 16:44:33
ad 2) Jde to udělat pomocí .htaccess. Stačí do něj vložit
deny from all a nikdo (kromě apache) se k těm souborům nedostane. Takže je pak můžeš odesílat uživateli pomocí php. To vím, ale nevím jak odeslat pomocí PHP uživateli soubor. Jak říkám (no... vlasně jsem to ani neřek) s PHP jsem teoretik-začátečník |
||
jozob Profil |
#9 · Zasláno: 30. 3. 2006, 16:51:52
Noobos
"nevím jak odeslat pomocí PHP uživateli soubor" 1.) mail 2.) HTTP (tuším že niečo takéto: header('Content-Disposition: attachment; filename="subor"');) |
||
Hugo Profil |
#10 · Zasláno: 30. 3. 2006, 16:52:54
|
||
Noobos Profil * |
#11 · Zasláno: 30. 3. 2006, 17:04:12
Dobře takže 2) vyřešena!
Chtěl bych ještě odpověd na 1. otázku, kterou jsem bohužel poněkud blbě napsal; správně měla být: Chci zamezit opakovanému spuštění PHP skriptů, když například uživatel klikne na tlač. zpět (a dostane se na např. registrace.php) a potom klikne na nějaký odkaz (který by se mu vůbec neměl zobrazit). Viděl jsem (zpravidla na on-line hrách) po refreši stránku: PLATNOST STRÁNKY VYPRŠELA, a nevím jak to udělat. |
||
Hugo Profil |
#12 · Zasláno: 30. 3. 2006, 17:07:05
Noobos
Odešli data skriptu (např. zpracuj.php) a po provedení operací uživatele přesměruj na stránku, kde bude výstup toho skriptu (např. zobraz.php). |
||
Časová prodleva: 9 měsíců
|
|||
Anonymní Profil * |
#13 · Zasláno: 11. 12. 2006, 11:31:44
Zdravím, náhodou jsem se dostal na tuhle diskusi a tak se pokusím přispět trochou do mlýna. Pokud teda není pozdě...
Já používám s úspěchem následující metodu odeslání formuláře. registrace.php (například.. zde je formulář pro registraci uživatele) - tato stránka se odešle pomocí metody post zase na registrace.php se skrytou proměnnou akce=insert (třeba). Na úplný začítek stránky, ještě než vložím jakýkoliv znak s html (pozor, i prázdná mezera je už html znak) vložím skript, který ošetří proměnné. Příklad souboru registrace.php : <?PHP if($akce=='insert'){ if($jmeno && $prijmeni ){ ..nejaky insert do databaze.. header("Location: registrace.php?message=Děkujeme za registraci"); exit(); } else{ header("Location: registrace.php?error=Zadejte prosím všechny položky formuláře"); exit(); } } ?> .... <? if($error)echo'<b style="color: red;">'.$error.'</b>'; elseif($message)echo'<b style="color: green;">'.$message.'</b>'; ?> ... HTML stránka s registračním formulářem <form action="registrace.php" ...> <input type="text" name="jmeno" value="<?echo$jmeno;?>"> <input type="text" name="prijmeni" value="<?echo$prijmeni;?>"> <input type="hidden" name="akce" value="insert"> </form> - Těch ošetření může být samozřejmě potom více. Píšu to velice stroze a z hlavy. Tak sorry za případný překlep. Stránka se odešle na samu sebe a provede se skript na začátku. Stránka se ale nedočte do konce a přesměruje se opět na registrace.php Tam se před formulářem objeví nápis s chybou $erroe nebo $message s hláškou o úspěšném vložení nového uřivatele do databáze. Při použití tlačítka ZPĚT se neprovede skript 2x. A to je celé kouzlo. Taky zůstanou vyplněná data ve formuláři při odeslání a uživatel je nemusí zadávat znova (když systém vrátí chybu). Tak snad je to jednocuché ;-) Kdyžtak kontakt na mě je na http://reference.alsan.cz úplně dole. ALSA.n |
||
Časová prodleva: 18 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0