HTTP_REFERER w CGI i zmienne w bashu

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
novelek
Piegowaty Guziec
Piegowaty Guziec
Posty: 4
Rejestracja: 07 mar 2014, 10:31
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Brak
Architektura: ARM

HTTP_REFERER w CGI i zmienne w bashu

Post autor: novelek »

Witam serdecznie społeczność :)

rzadko zdarza mi się pisać na forach ale natknąłem się na problem, który spędza mi sen z powiek.
Nie jestem zaawansowanym "skryptologiem", ale co nieco się "orientuję". Proszę o poważne komentarze
z próbą wyjaśnienia zjawiska a nie sugerujące inne rozwiązania (jak choćby wykorzystanie zmiennej PWD
czy napisanie w php).

Mam napisanych kilka skryptów .cgi w bashu. Poniżej ten, w którym występuje zjawisko:

Kod: Zaznacz cały

#! /bin/bash
k1=${HTTP_REFERER#*mainfolder/}
k1=${k1%%/*}
f1="/var/mainfolder/$k1"
echo $f1 $k1 ${#k1}
while read x; do echo $x; done < $f1/parametry
Skrypt służy do wyciągnięcia parametrów powiązanych z wybranym folderem strony wywołującej html.
Linia "echo $f1 $k1 ${#k1}" służy mi jedynie do sprawdzenia poprawności zmiennych w diagnozie problemu.
Problem jest następujący:

wartość f1 /var/mainfolder/mojfolder1
wartość k1 mojfolder1
wartość ${#k1} 10

Skrypt działa prawidłowo - zwraca odpowiednie parametry. Komenda echo w skrypcie wyrzuca
poprawne wartości zmiennych (jak wyżej), ale w error.log mam komunikat o błędzie:

[Thu Mar 06 10:05:03 2014] [error] [client x.x.x.x] /var/www/cgi-bin/x.cgi: line 6: /var/mainfolder//parametry: No such file or directory

tzn. jakby zmienna k1 była pusta ??????

Moje testy:
1. Zjawisko występuje przy wywołaniu z IE. Błąd nie występuje przy wywołaniu z Firefoxa.
2. Użycie innej zmiennej zamiast HTTP_REFERER (np. PWD) nie generuje błędu również w IE
3. HTTP_REFERER ma zawsze wartości prawidłowe
4. W innych skryptach również posługuję się w ten sam sposób zmienną HTTP_REFERER i błąd nie występuje,
ale uwaga: jest inny sposób wywoływania skryptu z html. W działających bez błędu - z form. Błędny - jako object.

Aha - Apache 2.2.22

Pomóżcie mi zrozumieć. Jak to możliwe, że zmienna ma wartość, skrypt działa a log wykazuje ją jako pustą?

pozdrawiam
Ostatnio zmieniony 07 mar 2014, 11:54 przez igotit4free, łącznie zmieniany 3 razy.
Powód: Dodałem Code.
Awatar użytkownika
ethanak
Wygnańcy
Posty: 3054
Rejestracja: 04 gru 2007, 13:19
Płeć: Mężczyzna
Wersja Ubuntu: 12.04
Środowisko graficzne: GNOME
Architektura: x86
Lokalizacja: Bielsko-Biała
Kontakt:

Re: HTTP_REFERER w CGI i zmienne w bashu

Post autor: ethanak »

daj gdzieś na początku żeby ci wypisał wszystkie zmienne - czasami można bardzo ciekawe rzeczy znaleźć...
Кто жопой родился, чижиком не помрёт
novelek
Piegowaty Guziec
Piegowaty Guziec
Posty: 4
Rejestracja: 07 mar 2014, 10:31
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Brak
Architektura: ARM

Re: HTTP_REFERER w CGI i zmienne w bashu

Post autor: novelek »

Dawałem - posługuję się różnymi zmiennymi do różnych celów, ale dla mnie
poprawnie (skoro chcę odnieść się do nadrzędnego wywołania) powinien być np. HTTP_REFERER.
Nurtuje mnie co się może dziać, że dostaję błąd sugerujący pustą zmienną k1, a tymczasem skrypt
wyświetla prawidłową wartość i wykonuje się również OK.
Awatar użytkownika
ethanak
Wygnańcy
Posty: 3054
Rejestracja: 04 gru 2007, 13:19
Płeć: Mężczyzna
Wersja Ubuntu: 12.04
Środowisko graficzne: GNOME
Architektura: x86
Lokalizacja: Bielsko-Biała
Kontakt:

Re: HTTP_REFERER w CGI i zmienne w bashu

Post autor: ethanak »

o ile pamiętam z czasów kiedy się w webmastera bawiłem object w misiu zawsze miał jakieś problemy.
ja bym sprawdził przede wszystkim, czy HTTP_REFERER jest taki sam przy wywołaniu skryptu w misiu jako obiekt i w inny sposób (form albo inna przeglądarka) - z dokładnością do wszelkich białych znaków z \r na czele. nic innego mi do głowy nie przychodzi a nie mam treaz dostępu do jakiegokolwiek serwera żeby sprawdzić. wrzuć najlepiej zawartość zmiennej do pliku bo na wyświetlaniu bym nie polegał.

-- 07 mar 2014 17:46 --

i jeszcze jedno - jaki jest doctype strony w którą wepchałeś ten obiekt? bo jeśli to nie 4.01 strict to może być powód nieprawidłowego działania.
Кто жопой родился, чижиком не помрёт
novelek
Piegowaty Guziec
Piegowaty Guziec
Posty: 4
Rejestracja: 07 mar 2014, 10:31
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Brak
Architektura: ARM

Re: HTTP_REFERER w CGI i zmienne w bashu

Post autor: novelek »

Jeśli chodzi o doctype to mam html 5, ale zmieniłem na 4.01 strict i nie pomogło.

Natomiast ze zmienną HTTP_REFERER jest rzeczywiście coś nie tak. Pojedyńcza komenda wypchnięcia do pliku
generuje jedną pustą linię i drugą prawidłową. Ale na tym nie koniec. Idąc "za ciosem" :) wypchnąłem wszystkie
zmienne (set). Jakież zdziwienie: również dwie linie różniące się nieznacznie zmiennymi. Np. w pierwszej jest
CONTENT_LENGTH=0, a w drugiej nie ma. Zato w drugiej jest mój ulubiony HTTP_REFERER, a w pierwszej nie ma.
Dwa wywołania shella z różnymi zmiennymi? Jestem już zakręcony. Jakieś pomysły? Popełniam jakiś błąd?

Wygląda na to, że rzeczywiście mój skrypt wykonuje się dwa razy, (za drugim razem prawidłowo)....
dlaczego?...
Awatar użytkownika
ethanak
Wygnańcy
Posty: 3054
Rejestracja: 04 gru 2007, 13:19
Płeć: Mężczyzna
Wersja Ubuntu: 12.04
Środowisko graficzne: GNOME
Architektura: x86
Lokalizacja: Bielsko-Biała
Kontakt:

Re: HTTP_REFERER w CGI i zmienne w bashu

Post autor: ethanak »

zaczynam wróżyć: subrequest? może brakuje gdzieś -L w konfiguracji mod_rewrite?
aż dzisiaj z czystej ciekawości sprawdzę... mam nadzieję że mój misio pod wine działa...
Кто жопой родился, чижиком не помрёт
novelek
Piegowaty Guziec
Piegowaty Guziec
Posty: 4
Rejestracja: 07 mar 2014, 10:31
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Brak
Architektura: ARM

Re: HTTP_REFERER w CGI i zmienne w bashu

Post autor: novelek »

Podpowiem jeszcze, że testy robię na linaro (odmianie ubuntu na ARM) 13.09.
Sprawdzałem jednak również na Fedorze 19 (i686) i było identyczne zjawisko.
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 10 gości