[ vladared @ 10.03.2022. 17:41 ] @
Da li može neko da mi pomogne? U php-u sam "početnik" ne baš apsolutni ali realno nisam nešto radio u njemu. Treba mi ideja kako se može izvršiti restrikcija pristupa sajtu, odnosno da jedini url kojem se može pristupiti je npr https://nekiurl/index.html i sve ostalo (šta god da pokušaju direktno spolja da gađaju) da uvek redirektuje na ovaj početni. Naravno ako sa početnog kliknem na link recimo https://nekiurl/about.html da to radi kako treba. Na netu sam našao sve i svašta, ali kod mene jednostavno to ne radi (ili ja ne znam dobro da protumačim šta su napisali).
Bitno je da naglasim da je nginx server upitanju tako da razni .htaccessi otpadaju, a za php znam da može, ali ne znam da pravilno izvedem.
[ TheSpiridon @ 10.03.2022. 18:21 ] @
Na svakoj stranici stavi:

Code:


if defined('nesto') {

header('Location: http://www.example.com/');

}

A na index.php stavi vrednost za 'nesto'

(define)



Ne sećam se tačno ali u tom smislu. To znači da na index.php definišeš neki parametar. I ako neko kuca neku unutrašnju stranu ta varijabla ne postoji i vraća korisnika na index.php A na index.php definišeš tu varijablu, tj. konstantu i to je to, onda može da se kreće unutar sajta.

Savetujem dalju komunikaciju sa : https://www.php.net/download-docs.php

Uglavnom za redirekciju koristiš 'header' a za definiciju konstanti 'define' i proveru 'defined' - te tri komande proveri.
[ vladared @ 10.03.2022. 21:19 ] @
I opet se ništa ne događa...
dakle definisao sam na prvoj strani:
<?php
...
define("nešto","nešto");
?>
i recimo na aboutus.html sam stavio ovako kako si rekao:
<?php
...
if defined("nešto") {

header('Location: index.html');

}
?>

i ništa se ne događa...
[ Deunan @ 10.03.2022. 22:42 ] @
Imas li pristup tom nginx-u?
Samo dodaj u conf blok:
Code:

location / {
        try_files $uri $uri/ /index.html?$args;
}
[ TheSpiridon @ 11.03.2022. 02:23 ] @
Citat:
vladared:
I opet se ništa ne događa...
dakle definisao sam na prvoj strani:
<?php
...
define("nešto","nešto");
?>
i recimo na aboutus.html sam stavio ovako kako si rekao:
<?php
...
if defined("nešto") {

header('Location: index.html');

}
?>

i ništa se ne događa...


Da, moja greška. Treba suprotno:


<?php
...
if defined("nešto") {
} else {
header('Location: index.html');
}
?>

Ili probaj umesto 'defined', da staviš '!defined'

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

OVAKO:

index.php:
Code:


define('PRISTUP', 'odobren');



ostalo.php
Code:


if (!defined('PRISTUP')) {
    
    header('Location: index.php');
}

[ vladared @ 11.03.2022. 15:37 ] @
Na moju žalost ništa od ovoga mi ne radi ni dalje
[ Zlatni_bg @ 11.03.2022. 16:40 ] @
Ovo nikako ne mozes bezbedno da resis na PHP layeru. To je posao za nginx/apache. Tu onda redirektujes na index.php kao entry point.
[ TheSpiridon @ 11.03.2022. 16:59 ] @
Jel si ti podigao web server? Mora da radi. Gde ti je taj sajt, gde ga hostuješ? Ne sme da ima nastavak .html nego .php
[ TheSpiridon @ 11.03.2022. 19:16 ] @
Nešto sam zaboravio. Na početku svake .php skripte, stavi komandu:

Code:

session_start();
[ vladared @ 12.03.2022. 00:40 ] @
Sada ne dozovoljava pristup, ali ni kada kliknem na button na stranici index.php takođe ne pušta... Kada stavim komentar na ubačene redeove kao u ranijem primeru index.php sve radi kako treba, ali može da se pristupa direktno sa linka:
Code:


define('PRISTUP', 'odobren');



ostalo.php
Code:


if (!defined('PRISTUP')) {

header('Location: index.php');
}


[ Zlatni_bg @ 12.03.2022. 02:19 ] @
Bez koda moze samo da se nagadja. I ovo ako nije u edukativne svrhe je totalno losa praksa. Ne resavaj pristup individualnim fajlovima preko php koda. Napravi entry point i odatle proveravaj sta ti treba dalje. Ponavljaces kod u svakom fajlu na serveru i opet nista sem PHP fajlova nece biti zasticeno, poput asseta.
[ TheSpiridon @ 12.03.2022. 09:06 ] @
Pa, hbg. ne mogu ovako napamet, davno sam radio sa php.
[ Doktor Hlad @ 12.03.2022. 18:37 ] @
Citat:
vladared:
Da li može neko da mi pomogne? U php-u sam "početnik" ne baš apsolutni ali realno nisam nešto radio u njemu. Treba mi ideja kako se može izvršiti restrikcija pristupa sajtu, odnosno da jedini url kojem se može pristupiti je npr https://nekiurl/index.html i sve ostalo (šta god da pokušaju direktno spolja da gađaju) da uvek redirektuje na ovaj početni. Naravno ako sa početnog kliknem na link recimo https://nekiurl/about.html da to radi kako treba. Na netu sam našao sve i svašta, ali kod mene jednostavno to ne radi (ili ja ne znam dobro da protumačim šta su napisali).
Bitno je da naglasim da je nginx server upitanju tako da razni .htaccessi otpadaju, a za php znam da može, ali ne znam da pravilno izvedem.


Totalno sam sokiran cinjenicom da ovde niko od onih koji su ti odgovorili zapravo nije procitao sta ti zaista hoces (ili jos gore - nije razumeo) i svi pisu nesto a ne znaju ni sami sta pisu. Bez uvrede bilo kome ali ako ne znate kako da covek resi onda nije obavezno da pisete.

1. U svakom slucaju, posto si napisao u php forumu onda pretpostavljam da hoces da resis stvar u php-u. To za pocetak znaci da treba fajlovi da budu .php kako bi web server znao koji interpreter da koristi.

2. Na pocetku svakog fajla treba da proveris referrer vrednost. Ako je referrer neka stranica sa tvog sajta onda dozvolis dalje ucitavanje. Ako nije onda mu posaljes http 302. Obrati paznju da posle 302 hedera ne smes da imas bilo koji drugi output.

I to je sve. Prosto i jednostavno.
[ Zlatni_bg @ 12.03.2022. 19:00 ] @
I napravi security nightmare kad neko edituje source u browseru i doda sebi referera na neki link. Vrlo pametno.

S razlogom sam rekao da ne treba ni diskutovati o PHP resenju ovde, bas jer ovo NIJE ZA PHP. Samim tim je i vezano za PHP jer ce neko nauciti da ne resava taj problem na taj nacin!
[ Doktor Hlad @ 12.03.2022. 20:25 ] @
Citat:
Zlatni_bg: I napravi security nightmare kad neko edituje source u browseru i doda sebi referera na neki link. Vrlo pametno.

S razlogom sam rekao da ne treba ni diskutovati o PHP resenju ovde, bas jer ovo NIJE ZA PHP. Samim tim je i vezano za PHP jer ce neko nauciti da ne resava taj problem na taj nacin!


Dve stvari.

Prvo: Covek ne zna kako nesto da napravi i pitao je za pomoc. Ne vidim da je bilo gde pisao da ima bilo kakve bezbednosne probleme niti da zeli da ogranicava pristup "fajlovima". Tako da mi je izuzetno fascinantno da ti pricas o resavanju problema a da pokretac teme nije uopste naveo da ima bilo kakav problem (osim problem da ne zna sam kako da uradi to sto hoce). Zasto se na ovom forumu toliko pati da se umesto odgovora na pitanja koja su postavljena uporno daju odgovori na pitanja koja nisu postavljena?

Drugo: Ja sam u svojoj prethodnoj poruci naveo da svi koji ucestvuju na ovoj temi nisu procitali sta je covek napisao ili nisu razumeli sta pita. Ti izgleda spadas u ovu drugu grupu. Covek hoce da natera sve korisnike koji dodju prvi put na njegov sajt da dodju prvo na pocetnu stranicu a posle toga mogu kuda hoce. Stvar je iskljucivo funkcionalno/estetsko/marketinske prirode. Nema govora o bilo kakvoj bezbednosti jer ce svako ionako, nakon sto poseti samo prvu stranu, moci da ide kuda god pozeli. I to sto ce mozda neko u svom browseru da lazira referrer.... mislis da je neko toliko dokon da se time bavi a sve da bi direktno posetio "about" stranu?

Mislim da je ovde najvaznije parce koda za sve vas koji po svaku cenu morate da ucestvujete u temi:

Code:
$sujeta = false;
[ Zlatni_bg @ 13.03.2022. 00:23 ] @
U pravu si. Nisam video drugi deo jer sam previse bio fokusiran na prvi - da neko preko PHP-a pokusava da zakljuca pristup fajlovima na httpdu.

Ipak bih ostao pri inicijalnoj ideji da radi neki "bootstrapping" od samog starta - sto pre nauci da koristi entry point u phpu, bolje po njega, vise vremena ce ustedeti. Znam, poceci... zeznuto je razmisljanje na takav nacin, ali sto pre se razvije - to bolje, kvalitetniji kod bude nego kad ima 80 .php fajlova u root diru da vise ne znas gde je sta. Znaci da ima neki basic router u index.php. Moj savet svima koji pocinju sa PHP-om i poznaju elementarne stvari u programiranju. Zasto? Imas vecu kontrolu nad celim sistemom, i app-wide ce ti raditi sve ono sto bi morao da guras u svaku skriptu.

I da, ovde je najbrze i najefikasnije resenje koriscenje $_SERVER promenljive. Napravio bih check gde ukoliko postoji referrer, loaduje index.php. Ukoliko ne postoji, znaci da ide sa originalne stranice (koliko se secam, moze da dampuje $_SERVER i proveri). Potom bih require_once-ovao taj fajl pri pocetku svake stranice.

Code:

// start stvakog PHP fajla sem indexa:

if ($_SERVER['HTTP_REFERER'])
 {
    require_once("index.php");
    exit();
 }


A sto se tice setovanja headera, moze i to:

Code:
header('Location: /index.php');
[ vladared @ 13.03.2022. 16:37 ] @
Citat:
Zlatni_bg: U pravu si. Nisam video drugi deo jer sam previse bio fokusiran na prvi - da neko preko PHP-a pokusava da zakljuca pristup fajlovima na httpdu.

Ipak bih ostao pri inicijalnoj ideji da radi neki "bootstrapping" od samog starta - sto pre nauci da koristi entry point u phpu, bolje po njega, vise vremena ce ustedeti. Znam, poceci... zeznuto je razmisljanje na takav nacin, ali sto pre se razvije - to bolje, kvalitetniji kod bude nego kad ima 80 .php fajlova u root diru da vise ne znas gde je sta. Znaci da ima neki basic router u index.php. Moj savet svima koji pocinju sa PHP-om i poznaju elementarne stvari u programiranju. Zasto? Imas vecu kontrolu nad celim sistemom, i app-wide ce ti raditi sve ono sto bi morao da guras u svaku skriptu.

I da, ovde je najbrze i najefikasnije resenje koriscenje $_SERVER promenljive. Napravio bih check gde ukoliko postoji referrer, loaduje index.php. Ukoliko ne postoji, znaci da ide sa originalne stranice (koliko se secam, moze da dampuje $_SERVER i proveri). Potom bih require_once-ovao taj fajl pri pocetku svake stranice.

Code:

// start stvakog PHP fajla sem indexa:

if ($_SERVER['HTTP_REFERER'])
 {
    require_once("index.php");
    exit();
 }


A sto se tice setovanja headera, moze i to:

Code:
header('Location: /index.php');


Ovo je ok ideja, kao i sve što je rečeno. Interesuje me ako bi ovako definisao da li bi to prošlo ili je ovo višak?

Code:

if ($_SERVER['HTTP_REFERER'] =="https://nekiurl.com/index.php")
 {
    require_once("index.php");
    exit();
 }
else{
header('Location: /index.php');
 }



[ Doktor Hlad @ 13.03.2022. 22:07 ] @
Citat:
vladared: Ovo je ok ideja, kao i sve što je rečeno. Interesuje me ako bi ovako definisao da li bi to prošlo ili je ovo višak?

Code:

if ($_SERVER['HTTP_REFERER'] =="https://nekiurl.com/index.php")
 {
    require_once("index.php");
    exit();
 }
else{
header('Location: /index.php');
 }



Deluje mi kao da preskaces neke stvari koje smo ti rekli. Moras da obratis paznju na svaki detalj koji ti govorimo i sto je jos mnogo vaznije da razumes sve sto ti govorimo. Ne mozes samo da kopiras kod koji ti neko napise i da se nadas da ce da radi.

Znaci, ovde kod kaze sledece: "Ako je dosao sa index.php onda mu prikazi index.php". To ne zvuci bas logicno, zar ne? Prepisivanje koda ne ide. Moras da razumes program koji pises da bi na kraju radilo sve kako treba.

Dalje, ako mu uradis require onda browser i posetioca dovodis u zabludu. On ce da bude npr. na stranici about.php a ti uradis require pa mu prikazes sadrzaj sa index.php. Koliko sam ja razumeo inicijalnu poruku koju si napisao ti zelis da uradi redirekciju a to radis samo ako klijentu posaljes odgovarajuci header (u tvom slucaju http 302).
[ Tpojka @ 13.03.2022. 22:36 ] @
Iako business requirements liči na jedan od "Srbin 3aje8'o Google", iz svega što sam od OP-a pročit'o izvlačim zaključak
da je rješenje sa postavljanjem cookie-ja. Naravno uz dalje obavještenje vizitora kako će mu podaci biti sačuvani i u koje svrhe.

1. (Na bilo kojoj strani koja nije home page) Ako nije postavljen cookie, redirekt na home page
2. Na home page-u postavi cookie ako nije postavljen

I to je to. Cijenim da može i sa session al' eto k'o još jedna babica predlažem cookie. Suštinski se slažem i sa ovim što Dr. 'Lad piše.
[ Doktor Hlad @ 13.03.2022. 23:16 ] @
Citat:
Tpojka: 1. (Na bilo kojoj strani koja nije home page) Ako nije postavljen cookie, redirekt na home page


Vidim da ce ovo da radi prvi put. A kako ces da obezbedis da radi i, na primer, sledeceg dana kada se browser ponovo pojavi na non-index strani a ima cookie koji je snimio prethodnog dana?
[ Tpojka @ 14.03.2022. 11:57 ] @
Citat:
Doktor Hlad: sledeceg dana


Ne vidim da je postavljeno pitanje perioda kol'ko da važi restrikcija il' za koje vrste posjetilaca (npr. Mene koji prvi put posjećujem sajt prebacuje na index.html gdje potom mogu da klikćem po bilo kojoj stranici, nije navedeno kad opet da se aktivira takav vid restrikcije). Opet, upotrijebivši svu moguću akrobatiku mozga a kojoj u ovom pitanju mogu biti vičan, razlog za ovako nešto mi se javlja eventualno da vlasnik sajta želi da obezbijedi posjetu index.html-a svakim session-om. Iz svih panela, tutorijala i dokumentacije o Google SEO-u nisam naiš'o na ideju niti motiv da se ovako nešto radi tako da mi je teško da zamislim detaljniju soluciju bez nekog dodatnog i detaljnog objašnjenja. Lično mislim, i da postoji disparitet u posjeti about.html i index.html u korist about.html stranice to može samo pozitivno uticati na način da Google postavi indentirane dodatne/pomoćne linkove u search results stranici s obzirom na samu posjećenost sajta. Sa druge strane bilo kakva restrikcija prema vizitoru a koja nema dobre osnove je big no-no sa strane UX-a - lično ne posjećujem sajtove koji imaju takav flow (ne konkretno ovakav već bilo kako restriktivan) i mislim da nosi više štete nego dobrobiti. Plastično:
Danas
1. posjetim /about.html
2. redirektuje me na /index.html
3. kliknem link /about.html
Sutra
4. posjetim /about.html
5. redirektuje me na /index.html
6. možda kliknem link /about.html
Prekosutra
7. posjetim /about.html
8. redirektuje me na /index.html
9. gasim na x sajt koji mi bezrazložno radi to što radi jer nemam tol'ko vremena
[ Doktor Hlad @ 14.03.2022. 16:11 ] @
Citat:
Tpojka: Ne vidim da je postavljeno pitanje perioda kol'ko da važi restrikcija


To je jasno iz samog naslova. Svaki put kada dodjes na sajt mozes direktno da ides na index.php. Ako ne odes na index.php onda ces biti prebacen na index.php pa ces odatle dalje kuda hoces.

Ako bi primenio tvoje resenje onda bi stvar funkcionisala samo prvi put odnosno sve dok browser ne zaboravi kolacic.

Citat:
il' za koje vrste posjetilaca (npr. Mene koji prvi put posjećujem sajt prebacuje na index.html gdje potom mogu da klikćem po bilo kojoj stranici, nije navedeno kad opet da se aktivira takav vid restrikcije). Opet, upotrijebivši svu moguću akrobatiku mozga a kojoj u ovom pitanju mogu biti vičan, razlog za ovako nešto mi se javlja eventualno da vlasnik sajta želi da obezbijedi posjetu index.html-a svakim session-om. Iz svih panela, tutorijala i dokumentacije o Google SEO-u nisam naiš'o na ideju niti motiv da se ovako nešto radi tako da mi je teško da zamislim detaljniju soluciju bez nekog dodatnog i detaljnog objašnjenja. Lično mislim, i da postoji disparitet u posjeti about.html i index.html u korist about.html stranice to može samo pozitivno uticati na način da Google postavi indentirane dodatne/pomoćne linkove u search results stranici s obzirom na samu posjećenost sajta. Sa druge strane bilo kakva restrikcija prema vizitoru a koja nema dobre osnove je big no-no sa strane UX-a - lično ne posjećujem sajtove koji imaju takav flow (ne konkretno ovakav već bilo kako restriktivan) i mislim da nosi više štete nego dobrobiti. Plastično:
Danas
1. posjetim /about.html
2. redirektuje me na /index.html
3. kliknem link /about.html
Sutra
4. posjetim /about.html
5. redirektuje me na /index.html
6. možda kliknem link /about.html
Prekosutra
7. posjetim /about.html
8. redirektuje me na /index.html
9. gasim na x sajt koji mi bezrazložno radi to što radi jer nemam tol'ko vremena


Ja opet postavljam pitanje zasto svi na ovoj temi (kao i na svim ostalim temama) patite toliko od toga da date odgovor na pitanje koje nije postavljeno a da pri tom pitanje koje jeste postavljeno ne razumete bas najbolje?
[ Tpojka @ 14.03.2022. 23:03 ] @
Citat:
Doktor Hlad: To je jasno iz samog naslova.


Ako se pročita šta sam pis'o ni u jednom trenutku nisam prejudicir'o zaključak.
K'o SDA-u koji oblikuje moguće rješenje mi je nebitan period da l' je to 24 sata, 12 sati, 2 sata il' godinu dana.
K'o korisniku mi je bitno da me posjećeni sajt ne smara.
Al' slažem se u jednom, ne treba se puno involvirati u pitanja koja nisu postavljena na sljedeći način.
[ vladared @ 16.03.2022. 18:22 ] @
Izvinjavam se, zadnjih nekoliko dana sam goreo pa nisam stigao da pišem. Logika je da klijent uvek želi da kada neko dolazi na početnu stranu. Posle toga može gde hoće (sem u jednom slučaju gde je bitan i redosled strana. Sesije se ne pokazuju dobre, bez obzira na proveru, prolaze ljudi, nema refirekcije ma početnu stranu...
[ Doktor Hlad @ 17.03.2022. 13:48 ] @
Citat:
vladared: Sesije se ne pokazuju dobre, bez obzira na proveru, prolaze ljudi, nema refirekcije ma početnu stranu...


A jesi razmisljao mozda o varijanti da procitas sta su sesije, cemu sluze i kako se koriste?
[ Zlatni_bg @ 20.03.2022. 03:02 ] @
Poenta iz 5 otvorenih tema u razmaku od 3 dana je da hoce da preskoci osnove baza i PHP programiranja, kao i hendlovanja browser i server side renderovanja requestova i cuvanih podataka. Bez uvrede bilo kome. Odatle i toliko postova zasto "nismo citali". Jer iz petog posta dobijemo info sta zapravo hoce da uradi.

Ne uzmes da radis ovako nesto, sa sve otvorenom temom o 10k posetilaca u jednom trenutku?! gde trazis info kakva infrastruktura ti treba... ne znam o cemu se radi, ali ono, pogledam otvorene teme i vidim katastrofu i bacen novac vec...

Niko ovde nece da krade ideje, i svojih imamo vise nego sto stignemo da odradimo, ali da nekome konkretno pomognemo, sto vise info o problemu nam znaci jer nije svaki "slican problem" isti problem.
[ VladaSu @ 25.03.2022. 22:15 ] @
Ovo je jedini 100% siguran nacin i koji radi bas onako kako si rekao.
Trebao bi da editujes .htaccess i stavi ovo.
Code:

RewriteEngine on
RewriteCond %{REQUEST_URI} !^/index.html$
RewriteCond %{REQUEST_URI} !\.(gif|jpe?g|png|css|js)$
RewriteRule .* /index.html [L,R=302]

Ovo ce ti redirektovati na index.html svaki url sem slika, css i js fajlova.


Drugi nacin, komplikovaniji i nece toliko pokriti tvoj zahtev je da na pocetku svakog fajla KOJI NIJE
index.html stavis ovaj kod.
Code (php):

if (basename(__FILE__) !== 'index.html') {
header('Location: index.html');
exit;
}
 


Problem kod ovog drugog resenja je sto ako neko ukuca nepostojecu stranicu onda nece otici na index.html dok u prvom hoce. U ovom slucaju ce izbaciti error 404 za nepostojecu stranicu.
Mozda i to zelis, nisi definisao.

Jos nesto. Neko je rekao da ti je greska jer ti fajl nema ekstenziju .php. To nije istina. Sve zavisi od podesavanja servera. Ti mozes php da teras na bilo kojoj ekstenziji fajla ako ga tako podesis.
Mozes i da maskiras ime fajla kao sto je bas ovde na sajtu ES pa da se ne vidi koji se fajl pokrece.
[ S A J A @ 26.03.2022. 12:00 ] @
Citat:
vladared:
Izvinjavam se, zadnjih nekoliko dana sam goreo pa nisam stigao da pišem. Logika je da klijent uvek želi da kada neko dolazi na početnu stranu. Posle toga može gde hoće (sem u jednom slučaju gde je bitan i redosled strana. Sesije se ne pokazuju dobre, bez obzira na proveru, prolaze ljudi, nema refirekcije ma početnu stranu...


Evo gde je problem u tome. Kad korisnik hoće da ode na /about stranicu, server mora nekako da prepozna da li je poziv stigao eksterno (tako što je neko kucao ručno url u brauzeru) ili je rezultat klika na stavku menija sa sajta. U normalnim okolnostima server to ne može da razlikuje. Njemu je request za /about stranicu uvek isti jer oba stižu od strane klijenta. Međutim, nije nemoguće namestiti. Padaju mi na pamet 2 pristupa:

1. Pravljenje SPA aplikacije. One rade po principu da se SVAKI zahtev redirektuje na index stranicu a posle, kad klikneš na neki link, samo se zameni sadržaj ekrana. To znači da je korisnik uvek na index stranici, pa kad klikne na neki link, prikaže mu se nova stranica (odnosno komponenta), čak tom prilikom može i da se promeni url (pa da piše /about) kako bi delovalo kao da je korisnik zaistra promenio stranicu ali bi suštinski uvek bio na index stranici. Za ovo bi morao da poznaješ neki SPA frejmwork kao što su Vue, React, Angular...

Pogledaj moj Vue primer na http://vue3quickstart.rf.gd/, kod možeš da nađeš na https://github.com/SaleCar/Vue3-QuickStart.

Tu možeš da vidiš kako se klikom na meni smenjuju strane, čak se menja i url. Stim što, ako odeš direktno na neki url, program će prikazati tu stranu ali to možeš da promeniš. Pošto ne koristim Vue router nego manuelno menjam i čitam url, ti bi promenio da se komponenta ne učitava prilikom promene url-a nego klikom na stavku menija. Plastično objašnjeno, umesto watch url change load page (kako je sada), stavio bi on button click load page. Samo tu posle može da bude nezgodno kad korisnik klikne na Back dugme u brauzeru pa hoće da se vrati nazad, to ne znam kako ćeš da rešiš jer neće raditi.


2. Ako baš hoćeš da bude staromodna ne-SPA aplikacija onda ćeš morati malo da budžiš. Konkretno, mora server nekako da zna da li request za /about dolazi klikom na meni ili eksterno. Sa strane servera, oba poziva su eksterna pa moraš da napraviš da ih nešto razlikuje. Na primer, možeš da napraviš da se koriste sesije. Znači kad neko ode na /about stranicu, proveriš da li postoji sesija, pa ako ne postoji onda ga prebaciš na index stranicu i otvoriš sesiju. Kad klikne na stavku menija, dobiće about stranicu jer je sesija otvorena. Na ovaj način ćeš moći da dobiješ približno to što si hteo (barem u teoriji, praksa je već nešto drugo). Druga varijanta bi bila da stavka menija šalje i neki skriveni POST podatak koji bi se proveravao na /about stranici. Ako ima tog POST podatka, onda se poziv stigao sa menija, ako nema, onda je direktan link i redirektuje se na index. Generalno ne volim te POST podatke kad su u pitanju ne-SPA aplikacije jer ako neko uradi Refresh u brauzeru, onda izađe ona glupa poruka. Ali dobro, šta da se radi. To su varijante koje mi padaju na pamet pa zaberi i probaj.

[ Doktor Hlad @ 26.03.2022. 14:58 ] @
Citat:
Zlatni_bg:
Bez uvrede bilo kome.


Zasto bez uvrede? Pa on nas ovde vredja. Koliko sam shvatio pominje nekog "klijenta" sto znaci da je prihvatio posao da to uradi a pojma nema kako da uradi, nista nece da procita i nauci vec je samo zamislio da dodje ovde, kaze sta mu treba i dobije copy/paste resenje koje ce samo da ubaci kod sebe i to je to. Sta smo mi, idioti?
[ Doktor Hlad @ 26.03.2022. 15:00 ] @
Citat:
VladaSu:
Ovo je jedini 100% siguran nacin i koji radi bas onako kako si rekao.
Trebao bi da editujes .htaccess i stavi ovo.
Code:

RewriteEngine on
RewriteCond %{REQUEST_URI} !^/index.html$
RewriteCond %{REQUEST_URI} !\.(gif|jpe?g|png|css|js)$
RewriteRule .* /index.html [L,R=302]

Ovo ce ti redirektovati na index.html svaki url


Super i kada stigne na index.html kako ce odatle posle da ode na about.html sa ovim htaccess direktivama?
[ Zlatni_bg @ 26.03.2022. 15:33 ] @
Vlada je verovatno shvatio kao i ja - da hoce da napravi router... sto smo zakljucili da nece.

Nije problem ni prihvatiti posao koji ne znas da uradis u samom startu - nikad ne znas na sta ces da naletis - problem je kada ne zelis logicki da razmislis sta ti je najbolja opcija pri koriscenju onoga sto imas na raspolaganju.

Ova tema je mozda za lock vec sad, na 2 strane smo otisli za bukvalnu glupost i ne vidim ni dobru praksu, ni razlicite ideje, svi smo se manje vise slozili.
[ mark-ceo @ 27.03.2022. 14:14 ] @
Stavi da index.php generise broj 1 i da ga skladisti u kolacicu. Zatim ostale strane da povlace podatak iz kolacica i ako je rezultat 1 da se prikaze strana, u suprotnom da vraca na pocetnu. Znaci if (kolacic = 1) prikazi stranu, else vrati na pocetnu. Na tim drugim stranama stavi da se brise kolacic ako se prikaze strana, pa tako sledeci put cak i ako se osvezi strana vratice ti na pocetnu.
[ mark-ceo @ 27.03.2022. 14:16 ] @
i expiry time neka bude tipa 5-10minuta. Ne vidim bas razlog zasto bi ovo radio, ima i drugih resenja za ovo, ovo je lose i za google indexiranje ali dobro mozda to u ovom slucaju nije bitno
[ Doktor Hlad @ 27.03.2022. 16:17 ] @
Jel mi ovde imamo takmicenje u predlaganju polu-resenja ili takmicenje u nerazumevanju pitanja?
[ vladared @ 29.03.2022. 08:18 ] @
Citat:
Doktor Hlad:
Citat:
Zlatni_bg:
Bez uvrede bilo kome.


Zasto bez uvrede? Pa on nas ovde vredja. Koliko sam shvatio pominje nekog "klijenta" sto znaci da je prihvatio posao da to uradi a pojma nema kako da uradi, nista nece da procita i nauci vec je samo zamislio da dodje ovde, kaze sta mu treba i dobije copy/paste resenje koje ce samo da ubaci kod sebe i to je to. Sta smo mi, idioti?


Stvarno vas vređam??? Preuzeo sam posao koji je početno trebao biti jedan "običan" sajt koji inače pravim za dobro jutro. Od toga je ispala babaroga, koju sam u trenutku kada sam ove postove postavljao imao 24h da završim. Tražio sam neko brzo i efikasno rešenje sa obzirom da u tih 24h se sve pretvorilo u haos sa gomilom novih zahteva, koji prvobitno nisu bili definisani ugovorom. Na kraju sam se uspešno sam izborio sa svime, zahvaljujući nekim ljudima koji su mi dali ideje, a ovi koji misle da sam ih heteo nešto zavrnuti, pa njima mogu samo da se izvinim što pod pritiskom sam tražio neko pametno/brzo rešenje, pošto sam sam radio.

Nisam expert iz php-a (znam php osnove+ ali sebe ne smatram php programerom), ali specifičan momenat je da sve je pod nginx-om, takop da .htaccessi otpadaju . Nisam znao da treba na ovom forumu da budem expert da bih tražio nečiju pomoć.
[ S A J A @ 29.03.2022. 08:57 ] @
Ah, klasična forumska prepucavanja. Ja u svemu ovde vidim samo Doktorovu krivicu čiji postovi redovno izlaze iz okvira tehničkih gde deli lekcije drugima šta su odgovorili a šta nisu. Mislim da svi trebaju da skapiraju kako forumi funkcionišu. Svako ima pravo da postavlja pitanja kakva želi i svako ima pravo da postavlja odgovore kakve želi (naravno u skladu sa pravilima foruma). To da li je neko postavio glupo pitanje ili odgovor, ili ga nešto mrzi, ili šta god, nije NI NA KOME da ocenjuje. Prosto, takve stvari treba zadržati za sebe. Neka svako odgovori na postavljeno pitanje onako kako misli da treba, čak i pogrešnim odgovorom, i to je to. Ako neko ima nešto konstruktivno da doda, to je dobro... ali čisto da iznosi nekakve OCENE o tuđim postovima, to je veoma bezveze i nekonstruktivno.

A sad malo u vezi teme. Zahtev koji je postavljen možda deluje kao sitnica ali je zapravo mala koska iz samo jednog razloga, što web nikad nije ni predviđen tako da radi. Svaka strana za sebe je poseban link a svaki link treba da ima mogućnost da mu se pristupi i direktno. Prosto tako stvari trebaju da funkcionišu. Međutim, ovde imamo po sredi glup zahtev klijenta da se neka stvar reši nestandardno što podrazumeva budženje. Tako da svi odgovori u ovom temi predstavljaju razne varijante budženja koje proizlaze iz zahteva da se odstupi od standarda. Naravno, ko god je radio sa klijentima, zna da se od njih mogu očekivati ovakvi zahtevi ali veština dobrog pregovaranja i odvraćanja klijenata od sumanutih i nestandardnih rešenja je važna koliko i samo programiranje. Jer ako programer pristaje da budži sve što drugima padne na pamet, onda će neki sajt raditi xxx sati umesto x sati, zatim će se više nervirati, neće moći da naplati sve to, uvlačiće se u živo blato jer svaka budževina pravi komplikacije kod dalje nadogranje, na kraju će dići ruke (ili dobiti otkaz) pa će projekat preći u ruke novih nesrećnika koji će da se hvataju za glavu šta su dobili. I sve to zbog slabe sposobnosti da klijentu objasnimo da neke stvari ne treba raditi. A zašto ne treba? Pa lepo, poenta svakog linka je da bude samostalan. Ako neko šeruje about stranicu, to znači da onome kome se šalje treba samo kontakt, verovatno već zna o čemu se radi i nema potrebe da prolazi kroz ceo sajt da bi došao do kontakta. Prosto, pošalješ link samo kontakta. Ili ako te zanima neki proizvod, zamisli neko ti pošalje link proizvoda koji je kupio, ti klikneš i baci te na početnu stranu? Tačno bi odma zatvorio tab i guglao za tim proizvodom negde drugde. Prosto takvo ponašanje sajta je retardirano. Em što će iritirati korisnike, em će zahtevati budženje u kodu, em će verovatno uticati i na SEO sajta i slično... Moramo da razumemo da korisnike ne interesuje naš sajt, interesuje ih samo informacija. Ako žele about, idu na about, ako žele proizvod, idu na proizvod... sve drugačije će ih samo dodatno iritirati i kad vide da ne dobijaju ono što žele, u nanosekundi će preći na sledeći. Znači u svakom pogledu je zahtev klijenta sumanut. Lepo mu se objasni da to ne treba raditi, držiš se standardnih rešenja, ne budžiš, završiš projekat ekspresno, sve radi, svi srećni i ideš dalje. Tako se radi.
[ VladaSu @ 30.03.2022. 20:24 ] @
index.php
Code (php):

<?php
session_start();
$_SESSION["visited"] = 1;
?>
<html>
<body>
<h1>Index</h1>
<a href="index.php">index</a> | <a href="about.php">about</a>
</body>
</html>
 


about.php
Code (php):

<?php
session_start();
if (empty($_SESSION["visited"])) {
   header('Location: index.php');
   exit();
}
?>
<html>
<body>
<h1>About</h1>
<a href="index.php">index</a> | <a href="about.php">about</a>
</body>
</html>
 


Prvi put nisam dobro razumeo pitanje.
[ VladaSu @ 30.03.2022. 20:41 ] @
Mozda je ovo jednostvnije.
Napravis include.php
Code (php):

<?php
session_start();
if (basename($_SERVER["SCRIPT_FILENAME"]) == 'include.php') {
   header("HTTP/1.0 404 Not Found");
   exit();
}

if (basename($_SERVER["SCRIPT_FILENAME"]) == 'index.php') {
   $_SESSION["visited"] = 1;
} elseif (empty($_SESSION["visited"])) {
   header('Location: index.php');
   exit();
}    
 


I na pocetku svakog fajla require_once 'include.php';