[ boccio @ 21.08.2003. 12:38 ] @
Imam pitanje koje bi mozda moglo da se vise tice Apaca nego PHP-a, ali posto nisam bas siguran, nadam se nece zameriti...

Zelim da (uz pomoc mod_rewrite) sredim izgled stranica na sajtu...
Ideja mi je da SVE izgledaju u slicnom obliku koji sam video od nekih CMS-ova (Vignette...). Dakle, www.sajt.com/strana/0,12,321,1.htm, gde mi je prva cifra oznacava da li se strana izvlaci iz keša (oko toga cu tek kasnije da se ganjam), druga cifra je id templejta, treca id clanka, cetvrta koja je varijanta (screen/print)...

problem:

kada skripta odradi svoj posao, (otvori odgovarajuci templejt i prosledi mu parametre), u brauzeru se vidi upravo ono sto sam hteo da izbegnem... Konkretno, kliknem na /strana/0,12,321,1.htm, skript je parsuje, odradi header("location:..." deo, i ja lepo, kulturno u brauzeru vidim "neki_templejt.php?clanak_id=321&..."

pitanje:

dao sam malo siri uvod u problem, iz razloga sto mislim da sam mozda i promasio temu, tj. iskoristio mod_rewrite na neki nacin na koji ne treba... pitanje je da li mogu da "sakrijem" ovaj url, znaci da se u brauzeru i dalje vidi www.sajt.com/strana/0,12,321,1.htm...

thx na citanju...
[ Goran Rakić @ 21.08.2003. 12:44 ] @
ne trebaš da radiš redirektovanje jer onda browser šalje novi zahtev ka toj stranici. kada očitaš parametre koristiš ih normalno.
[ brcha @ 21.08.2003. 12:47 ] @
Pogledaj recimo ovaj sajt (mislim ES). Vidis da je sve napravljeno kao da su direktorijumi, a u stvari su PHP skriptovi koji na osnovu "putanje" vade stvari iz baze.

Pogledaj .htaccess sa mog sajta za neko uputstvo, ako zelis (sto se mene tice, mozes i ceo sajt da skines iz CVSa, zato i stoji tamo... - vise informacija).

Pogledaj malo i ostale fajlove, da bi ti bilo malo jasnije kako radi biranje stranica. Posebno pogledaj base.php i klase WebSite, Page i Lang, a takodje pogledaj i glavni index.php.

Pozdrav
Filip

[ bOkIcA @ 21.08.2003. 15:13 ] @
Pa zar ti tOwk to nije vec jednom lepo objasnio???
http://www.elitesecurity.org/tema/25669
[ boccio @ 21.08.2003. 19:23 ] @
Citat:
bOkIcA
Pa zar ti tOwk to nije vec jednom lepo objasnio???
http://www.elitesecurity.org/tema/25669

Ne, nije u pitanju ista stvar, izgleda da nisi bas pazljivo procitao moj post...
Danilo (i Mikis) su me uveli u postojanje necega sto se zove mod_rewrite :)
A sad podusavam da uradim nesto korisno sa tim...

Brcha, Gorane, verovatno ste u pravu, medjutim moja poenta je u sledecem (i dalje je moguce da je to sto ja u stvari pokusavam totalna besmislica, ali ipak...probacu da isteram do kraja:)
Ja zelim da imam bukvalno jedan jedini skript na nivou celog sajta koji bi, da se tako izrazim, bio "dispecar". Dakle, ne da postoji "www.elitesecurity.org/poruka/odgovor/12/27964", ili "www.elitesecurity.org/tema/25669", ili "www.elitesecurity.org/korisnik/profil/boccio"

Ako se ne varam, ovaj metod respektivno poziva skriptove koji ga izvrsavaju (npr. tema.php, korisnik.php, itd..).

U mom slucaju, apsolutno svi linkovi sa sajta bi bili pozivani u obliku "strana/x,xx,xxx,x.htm". U skripti, koju sam preko .htaccess fajla odredio da preuzima sve zahteve, pozivao bi se pravi templejt (tema, korisnik, ...) i njemu prosledjivali parametri.
Da ponovim, problem je u tome sto mi u brauzeru pise url koji je pozvan (tema.php?id=xxx). Da li je moguce to izbeci?

hvala na odgovorima
[ tOwk @ 21.08.2003. 20:52 ] @
boccio: nemoj da koristiš „location“ HTTP zaglavlje — pomoću njega ti šalješ korisnika na neku drugu stranicu, i tu je problem.

Znači, ako želiš da pozoveš neku drugu stranicu iz „centralne“ skripte, to uradi na neki drugi način. Npr. najjednostavnije je require ili include, zatim pravljenje funkcije koja će to da radi, ili objektno orijentisane strukture.

Naravno, postoji još mnogo varijanti, ali čim ubaciš „header("location: blabla")“, tada posetilac mora da vidi novu adresu, pošto si ga na nju i poslao.
[ boccio @ 21.08.2003. 21:27 ] @
evo, da maximalno budem konkretan...
kako da mi ovo proradi:
a.php
Code:
<?php 
  require "b.php?ispis=5";
  ?>

b.php
Code:
<?php 
 $ispis = $HTTP_GET_VARS[$ispis];
 echo $ispis;
 ?>

dakle, sta da koristim (require i include izgleda ne mogu) da pozovem a.php, a da je on u stanju da preda parametar skripti koju includuje (samo da napomenem da ovo gore radi normalno u varijanti require "b.php"). Tj. da li je uopste moguce da se predaju parametri, obzirom da je to (valjda) kao neko ugnjezdeno slanje dodatnog zahteva serveru...

thx
[ -zombie- @ 21.08.2003. 22:14 ] @
a.php
Code:

<?php 
    $HTTP_GET_VARS['ispis']=5;
    require "b.php";
?>
[ boccio @ 21.08.2003. 22:30 ] @
meni to nije proradilo...
[ -zombie- @ 21.08.2003. 22:44 ] @
pa naravno kad ti ni b.php nije dobar...

b.php
Code:

<?php 
    $ispis = $HTTP_GET_VARS['ispis'];
    echo $ispis;
?>



i dalje se mole svi učesnici foruma da savladaju bar osnove php-a pre nego pitaju pitanja...
[ CONFIQ @ 21.08.2003. 22:45 ] @
haaammm....
a.php

requere('b.php');


b.php


echo $_GET[id];


~Say FiQ
[ bOkIcA @ 22.08.2003. 12:54 ] @
Citat:
boccio:
Citat:
bOkIcA
Pa zar ti tOwk to nije vec jednom lepo objasnio???
http://www.elitesecurity.org/tema/25669

Ne, nije u pitanju ista stvar, izgleda da nisi bas pazljivo procitao moj post...
Danilo (i Mikis) su me uveli u postojanje necega sto se zove mod_rewrite :)


Nisam pazljivo procitao!!!

Vidi ovako Danilo ti je objasnio za mod_rewrite, odnosno kako da prosledjujes parametre url-a prema nekoj skripti, znaci imas url:
http://localhost/tekst/0,5,170,9.htm

i to se mod_rewrite-om prosledjuje na:
nesto.php?a=0&b=5&c=170&d=9
(ako ti ovo nije jasno ponovo procitaj "onaj" Danilov post)

u fajlu nesto.php citas promenjive:
$a = $_GET['a'];
$b = $_GET['b'];
$c = $_GET['c'];
$d = $_GET['d'];

a ako iz njega pozivas i neki peti fajl, recimo trt.php
include("trt.php");

u njemu ti je vec vidljiva promenjiva $b, sto znaci da ne moras da je pozivas sa "trt.php?b=5"



[ mdarko @ 24.08.2003. 19:01 ] @
Citat:
boccio:
Zelim da (uz pomoc mod_rewrite) sredim izgled stranica na sajtu...

deo, i ja lepo, kulturno u brauzeru vidim "neki_templejt.php?clanak_id=321&..."



.htaccess

RewriteEngine On
Options +FollowSymlinks

# nesto.com/neki_templejt.php?clanak_id=200
# nesto.com/clanak200.html

RewriteRule ^clanak([0-9]*).html$ neki_templejt.php?clanak_id=$1

ili

# nesto.com/neki_templejt.php?clanak_id=200
# nesto.com/clanak/200
RewriteRule ^clanak/(.*)$ neki_templejt.php?clanak_id=$1