Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Problem z $_SERVER['REQUEST_URI']
Forum PHP.pl > Forum > Przedszkole
creovision
Witam,
mam poważny problem z $_SERVER['REQUEST_URI'], gdyż chciałbym po każdym przeładowaniu strony itp. dokonać UPDATE mySQL, gdzie w kolumnie "location" będzie znajdowała się aktualna pozycja na stronie jednak mój problem polega na tym iż moja funkcja nie do końca działa.
Oto zapytanie mySQL:
  1. safe_query("UPDATE ".PREFIX."user_info SET location='".$_SERVER['REQUEST_URI']."' WHERE userID='".userID."'");


Problem wygląda tak iż czasami tabela aktualizuje się z poprawną wartością dla kolumny "location" a czasami nie.
Dla przykładu: znajduję się pod adresem www.example.com/dashboard tabela aktualizuje się poprawnie czyli w kolumnie "location" mam "/dashboard", odświeżam stronę i w location mam już "/", odświeżam jeszcze raz i mam "/favicon.png", odświeżam jeszcze raz i mam "/dashboard"... Bez sensu... Za każdym razem są inne wartości.
Próbowałem rozwiązać ten problem na różne sposoby, jednak jak dotychczas bezskutecznie.
Bardzo proszę o Wasze porady, pomoc i wskazówki za co będę niezmiernie wdzięczny.
Niby banalne a potrafi natworzyć masę problemów ... :/
motyl-pl
Przeczytaj co to robi i co to jest najepirw w manualu.
Nie będzie lepszym rozwiązanie rozbić sobie adres oddzielić rdzeń główny czyli adres od reszty i resztę zapisywać do bazy ?
creovision
No dobrze, a może podałbyś jakiś przykład bo np.
  1. $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']
traci tutaj sens, a mamy doczynienia z adresami typu
  1. www.example.com/variable_1/variable_2/variable_3
a nie ze standardowymi adresami tj.
  1. www.example.com/index.php?var1=variable_1&var2=variable_2&var3=variable_3


Próbuję na wszystkie sposoby i nic z tego...

Ten kod działa:
  1. if(userID != null && !in_array(MODULE, $unlocated)) {
  2. $url = parse_url($_SERVER['REQUEST_URI']);
  3. if($url != '/') {
  4. $url = implode("/", $url);
  5. echo $url;
  6. }
  7. safe_query("UPDATE ".PREFIX."user_info SET location='".$url."' WHERE userID=".userID) or system_error(mysql_error());
  8. }

, a ten już nie:
  1. if(userID != null && !in_array(MODULE, $unlocated)) {
  2. $url = parse_url($_SERVER['REQUEST_URI']);
  3. if($url != '/') {
  4. $url = implode("/", $url);
  5. }
  6. safe_query("UPDATE ".PREFIX."user_info SET location='".$url."' WHERE userID=".userID) or system_error(mysql_error());
  7. }

, wystarczy że nie ma przed zapytaniem "echo"...

Bardzo dziwna sprawa.

Mogę rozwiązać ten problem w bardzo prosty sposób.
Oto on:
  1. if(userID != null && !in_array(MODULE, $unlocated)) {
  2. $url = parse_url($_SERVER['REQUEST_URI']);
  3. if($url != '/') {
  4. $url = implode("/", $url);
  5. echo '<div style="display:none;">'.$url.'</div>';
  6. } else $url = "/";
  7. safe_query("UPDATE ".PREFIX."user_info SET location='".$url."' WHERE userID=".userID) or system_error(mysql_error());
  8. }


Wystarczy ukryć wynik "echo", jednak jak dla mnie jest to zbyt amatorskim rozwiązaniem. Moim zdaniem nie powinno tak to wyglądać i szukam bardziej profesjonalnego rozwiązania.
Pomoże mi ktoś ?
nospor
Cytat
i mam "/favicon.png"
Po pierwsze popraw swoj .htaccess. Skoro dostajesz favicon.png znaczy ze wszystkie żądania przekazujesz do php, wlacznie z (nie)istniejacymi obrazkami. Nie uwazasz ze troche kiepsko?
creovision
Cytat(nospor @ 4.02.2014, 09:29:12 ) *
Po pierwsze popraw swoj .htaccess. Skoro dostajesz favicon.png znaczy ze wszystkie żądania przekazujesz do php, wlacznie z (nie)istniejacymi obrazkami. Nie uwazasz ze troche kiepsko?


Tak wygląda mój .htaccess:
  1. RewriteEngine on
  2. DirectoryIndex index.php
  3. RewriteBase /
  4. RewriteCond %{REQUEST_FILENAME} !-f
  5. RewriteCond %{REQUEST_FILENAME} !-d
  6. RewriteRule ^(server)/?$ _serverphp.php?mode=$1 [L]
  7. RewriteRule ^(license)/?$ check.php?mode=$1 [L]
  8. RewriteRule ^(login)/?$ login.php?module=$1 [L]
  9. RewriteRule ^(logout)/?$ logout.php?module=$1 [L]
  10. RewriteRule ^(sessionExpired)/?$ logout.php?module=$1 [L]
  11. RewriteRule ^(forgot_password)/?$ forgot_password.php?module=$1 [L]
  12. RewriteRule ^(login)/(change_password)/([a-z0-9]+)/?$ change_password.php?module=$1&option=$2&hash=$3 [L]
  13. RewriteRule ^(search)/(.*)/?$ index.php?module=$1&term=$2 [L]
  14. RewriteRule ^([a-z_,]+)/?$ index.php?module=$1 [L]
  15. RewriteRule ^([a-z_,]+)/([0-9_,]+)/?$ index.php?module=$1&id=$2 [L]
  16. RewriteRule ^([a-z_,]+)/([a-z_,]+)/?$ index.php?module=$1&option=$2 [L]

, co według Ciebie muszę zmienić ?

Problem rozwiązałem AJAX'em. Nie widziałem innego wyjścia... Próbowałem również z .htaccess jednak bezskutecznie więc musiałem pójść w tym kierunku.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.