Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
witam
jak otrzymać takiego typu linki w przeglądarkach :
przykład z gazeta pracy : http://praca.gazetapraca.pl/0,4001,,,,,,,%7B1%7D,,,,%7B2%7D.html
chodzi o ukrywanie nazw zmiennych przesyłanych przez GET w php
Offline
Nie da się ukryć żadnych danych przesyłanych przez GET czy POST. A w ogóle to jakiego typu to jest link i co w nim jest takiego ukrytego? Znaki specjalne i niedrukowalne są zakodowane szesnastkowo, ot cała konspiracja. Chyba każdy język ma funkcje do zakodowania url w ten sposób. W php to urlencode i urldecode.
Offline
IMO wszystko zależy co oznacz "ukryć".
Jeżeli nie chcesz by użytkownik widział zmienne GET w adresie to możesz używać POST w komunikacji. Jeżeli musisz używać GET to możesz wszytko kodować do BASE64 i potem w javascript parsować wartości.
Offline
tak ,wiem ze moge uzyc $_POST ,ale w linku moge jedynie uzywać $_GET ,poprostu chciałbym wiedziec jak to robią inni ze nazwy zmiennych są ukrywane w linku ,moze to jest robione przez moduł rewrite apacha ,ale narazie mój apach sprawia ogromny problem i nie akceptuje pliktów .htaccess :(
Offline
Często dane z linku wyciąga się przy pomocy wyrażeń regularnych. To oznacza, że nie ma nazw zmiennych w linku - tylko dane. Zapoznaj się z dokumentacją dowolnego dobrego frameworka webowego.
Możesz sobie zobaczyć jak to robi CakePHP
http://book.cakephp.org/view/46/Routes-Configuration
lub django
http://docs.djangoproject.com/en/dev/topics/http/urls/#topics-http-urls
Zakodowanie czegokolwiek przy pomocy base64 niczego nie ukryje bo każdy może sobie odkodować.
Offline
Prawda jest taka, że w linku nic nie ukryjesz :)
Co do django to link to strony może wyglądać tak:
http://strona.pl/2008/12/1/news/
co czytać należy tak http://strona.pl/<rok>/<miesiac>/<dzien>/news/
Tylko, że nie jest to ukrywanie danych, raczej inna forma ich prezentacji.
Offline
[quote=procet]Co do django to link to strony może wyglądać tak:
http://strona.pl/2008/12/1/news/
co czytać należy tak http://strona.pl/<rok>/<miesiac>/<dzien>/news/[/quote]
Wcale tak nie należy. Można go sobie dopasować zupełnie inaczej.
Offline
Ech.... Zacznijmy od tego, czadman, a jka chcesz w laczu zamiescic dane post :P ;] Sama ich specyfika daje nam "ukryte" w linku dane post, a to ze ich brak ... ;]
szewczyk: przeciez masz tam wlasnie zapytanie z uzyciem GET, wszystko lyka index.php (a dokladnie defaultowy plik skonfigurowany na serwerze bo watpie by pisali to w PHP, obstawialbym Ruby, albo pythona) i parsuje, a to ze na koncu jest html znaczy tyle ze autor calej aplikacji przewiduje mozliwosc ze dane beda zwracane w innej formie ot np. SWF, albo SVG, czy CVS dla mobilnych.
procet: pieprzysz trzy po trzy, format linku jest opicany odpowiednia specyfikacja. A django to gotowy framowrk w pythonie, wiec mozna by uzywac nawet Ruby on the rails i link zawsze bedzie taki sam! To co podajesz to nic innego jak katalogowanie.
Ostatnio edytowany przez qluk (2009-01-10 22:19:34)
Offline
[quote=qluk]Ech.... Zacznijmy od tego, czadman, a jka chcesz w laczu zamiescic dane post :P ;] Sama ich specyfika daje nam "ukryte" w linku dane post, a to ze ich brak ... ;][/quote]
Kurcze, nie da się w linku takich rzeczy, ale czemu pijesz z tym do mnie? Jakąś herezję popełniłem? ;)
Offline
Z tego co ja zrozumiałem pytanie, to koledze nie chodzi o ukrywanie zmiennych, a nazw zmiennych GET.
Aby z linku:
http://www.strona.pl/index.php?zmienna1=1&zmienna2=2
otrzymać taki:
http://www.strona.pl/1,2,index.html
jedynym sposobem jaki przychodzi mi do głowy to jedynie wspomniany przez ciebie rewrite apacha. Lub ewentualnie zabawa ze stroną błędu 404 (nie masz przecież takiego pliku na serwerze, wiec zostaniesz przeniesiony na 404) który odpowiednio zmodyfikowany może na podstawie zmiennej $_SERVER['REQUEST_URI'] przekierować na odpowiendni url lub jak kto woli odpalic, i wyswietlic uzytkownikowi bez przekierowania. Tylko teraz pytanie, czy da radę użyć w pliku błędu 404 skryptu języka PHP? No i druga sprawa, że to także może wymagać ingerencji w .htaccess. Polecam więc poprawną konfigurację, ewentualnie naprawę apacha, i skorzystanie z mod-rewrite, tutaj masz jego dokumentacje:
http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html
Offline
a na co komu re-write apache? zeby miec link typu 1,,4563,news.html nie potrzebny jest zaden re-write wystarczy uzyc [url=http://pl.php.net/manual/pl/function.split.php]tego[/url] lub [url=http://pl.php.net/manual/pl/function.trim.php]tego[/url] i po problemie
Offline
to powiedz mi, jak zmusisz apache, zeby przy probie otwarcia strony:
http://www.strona.pl/1,2,index.html
odpalił sprypt, w którym uzywasz owego [url=http://pl.php.net/manual/pl/function.split.php]tego[/url] lub [url=http://pl.php.net/manual/pl/function.trim.php]tego[/url] zamiast błędu 404, gdyż jak wiadomo pliku o nazwie "1,2,index.html" w rzeczywistości na serwerze nie ma.
Ostatnio edytowany przez grzegorz.85 (2009-01-14 16:42:40)
Offline
takiego pliku nie ma, a z tego co widze w temacie, chcesz pobrac z get
a w linku geta robi sie po znaku '?' wiec troszeczke pomysl
Offline
OK, chyba poszedłem krok na przód, ale mam wrażenie że słusznie.
Z tego co rozumiem, to [b]jezoo[/b] miałeś na myśli sposób na otrzymanie linków w kodzie (X)HTML, czyli jak w prosty sposób, bez edycji setek stron ręcznie, zautomatyzować generowanie w naszym portalu linków, według nowego schematu.
Ja z kolei poszedłem krok na przód, i zaproponowałem re-write do sprawienia, że istniejące adresy ze zmiennymi przesyłanymi przez $_GET będą działały według nowego schematu linków.
Kwestia zrozumienia pojęcia "link w przeglądarce", czy chodzi o:
- link w kodzie (X)HTML (na stronie internetowej)
- adres strony w przeglądarce
Tak czy inaczej:
- aby poskutkował Twój sposób - nowe linki spreparowane za pomocą split lub trim - na serwerze muszą znajdować się pliki o odpowiednich nazwach, lub musi byc zaimplementowany re-write,
- użycie funkcji re-write nie przeszkadza w używaniu starych linków w stylu [i]index.php?zmienna=cos[/i],
Nie będę ukrywał jednak, że się nieco rozpędziłem, i byćmoże nadinterpretowałem pytanie, ale to już tylko autor wątku może osądzić stwierdzając o co mu chodziło.
Offline
znalazłem w sieci http://www.php.rk.edu.pl/w/p/krotkie-urle-i-php/ ,zrobiłem .htaccess gdzie index.php?m=modul zmienia mi na modul.html ale nie moge spobie poradzic z wpisami dla preg_replace ,albo nie działa przepisywanie albo strona sie wykrzacza :/
Offline
@szewczyk, a czytales to? http://pl.php.net/manual/pl/function.preg-replace.php
Offline
tak ,wiem jak działa preg-replace ,ale czemu nie działa mi cała funkcja ?
Offline
@szewczyk, wieczorem usiade przy tym, bo sam jestem ciekaw :) i Ci napisze co i jak :)
Offline
dzieki @jezoo za zainteresowanie !!!! :)
Offline
@szewczyk, po glebszej analizie, powiem tyle, jezeli nie chcesz uzywac '?' to pozostaje Ci jedynie mod rewrite, jezeli uzyjesz '?' to mozesz zastosowac metode o ktorej pisalem wyzej lub uzyc $_SERVER['QUERY_STRING'] wiecej o $_SERVER [url=http://pl.php.net/manual/pl/reserved.variables.server.php]tutaj[/url]
jezeli chodzi o te krotkie url'e co podales do nich linka to strasznie zamotane to jest i jak dla mnie troszeczke nie jasne, z tego co zrozumialem to muisz miec wlaczona obsluge plikow .htaccess zeby to zadzialalo i cala logike i tak napisac w jakims pliku php czyli to samo co podalem wyzej z tym, ze nie ma '?'.
decyzja nalezy do Ciebie, osobiscie, mnie by sie nie chcialo caly czas edytowac .htaccess i wpisywac url;e a na dodatek segregowac je jeszcze od najdluzszego do najkrotszego
Offline
przyklad pliku php do obslugi ladnych URLi - http://www.opcode.eu.org/sieci_komputerowe_uslugi/www_engine/system.php/ - ogolnie polega to na parsowaniu [tt]$_SERVER['REQUEST_URI'][/tt] oraz konfig apache do tego (opowiada za wywolanie tego pliku zamiast dowolnego adresu, ktory dotarl do tej reguly)
RewriteRule ^[^~]*/$ /~rrp/system.php [L]
Ostatnio edytowany przez bercik (2009-01-24 23:54:44)
Offline
@bercik, wszystko pieknie ladnie, ale jedna rzecz mnie odstrasza od tej metody, mianowicie funkcja system(), ktora jest wylaczona na serwerach publicznych i nie zadziala to, jezeli masz swoj serwer to nie ma problemu, natomiast jezeli to public server to mozna o tym zapomniec
Offline
system() moza zastpapic inna metoda wlaczenia wybranego pliku - jego czytaniem jakims include itp ... jest on tam uzyty ze wzgledu na pewne dziwne operacje ktore opcjonalnie wykonuje ten skrypt (np. "inteligentne" usuwa znakow non-ASCII z wykozystaniem konwert)
Offline
prosze: http://pl.php.net/manual/pl/function.idn-to-ascii.php
sprawdzanie czy podany ciag jest asci czy nie jest i system() nie jest potrzebny do tego
Offline
tylko ze to troche inaczej konwertuje ... oczywiscie tamta konwersje moglbym tez robic w php (napisac sobie funkcje itd) tylko po co :-)
Offline
Time (s) | Query |
---|---|
0.00011 | SET CHARSET latin2 |
0.00004 | SET NAMES latin2 |
0.00118 | SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='3.138.37.43' WHERE u.id=1 |
0.00099 | REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.138.37.43', 1732512326) |
0.00060 | SELECT * FROM punbb_online WHERE logged<1732512026 |
0.00052 | SELECT topic_id FROM punbb_posts WHERE id=107769 |
0.00005 | SELECT id FROM punbb_posts WHERE topic_id=13133 ORDER BY posted |
0.00029 | SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=13133 AND t.moved_to IS NULL |
0.00028 | SELECT search_for, replace_with FROM punbb_censoring |
0.00356 | SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=13133 ORDER BY p.id LIMIT 0,25 |
0.00095 | UPDATE punbb_topics SET num_views=num_views+1 WHERE id=13133 |
Total query time: 0.00857 s |