Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Pytanie o składnie poprawki, czysto edukacyjna prośba
fate
post
Post #1





Grupa: Zarejestrowani
Postów: 824
Pomógł: 106
Dołączył: 14.03.2012
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Witam (IMG:style_emoticons/default/businesssmiley.png) Mam cos takiego i działa chyba bez wad choc gdzies czytalem ze REFERER moze byc blokowany i nie wiem czy to przekierowanie jest ok:
AD1
  1. <?
  2. header ('Refresh: 3; URL='.$_SERVER['HTTP_REFERER']);
  3. ?>
  4.  
  5. <?
  6. echo 'Tlumaczenie w trakcie... strona dostępna wkrótce.<br />Za chwilę nastąpi przekierowanie...';
  7. ?>
  8. <? echo '<a href="'.$_SERVER['HTTP_REFERER'].'"> Powrót/Return </a>';?>

I miałem problem z własnoręcznym wykombinowaniem tego prostego kodu zw na skladnie ciagle mi cos nie dzialalo. Wytlumaczy mi ktos zwieźle dlaczego w linku po REFERER'] jest . ' a przy już header ma nie byc?!
Jestem nowicjuszem czytajac tutoriale nie wchodzi mi nic lepiej mi sie uczy czytajac i przerabiajac gotowe kody wiec prosilbym o konkretna odpowiedz zamiat zaganiania do nauki chyba ze naprawde lopatologiczny kurs krok po kroku:)

AD2
2 problem rowniez chyba składniowy mialem zeby wstawić w ten kod refresha, gdyby ktos mi mógł rozjaśnić czy się dało do tego 'location' wmontowac i jak?
  1. <?php
  2. function adres(){
  3. $dane=$_SERVER['HTTP_REFERER'];
  4. return $dane;
  5. }
  6.  
  7. header('Location:'.adres());
  8.  
  9. ?>


AD3
lub czy dalo sie jakos tak zeby nazwe tej funkcji wmontowac w ponizszy header bo tez nie umialem
  1. function adres(){
  2. $dane=$_SERVER['HTTP_REFERER'];
  3. return $dane;
  4. }
  5. header ('Refresh: 3; URL='.adres()']);


AD4
Ze sleepem byl problem ze nie wyswietlalo tekstu czy na poczatku go wrzucalem czy na koncu i czy header byl przed echo czy po tak jakby sleep opoznial tylko header.
Czy nalezalo cos kombinwac z ob_flush?
mam to dla indexu a zapomnialem ze ta strona sie w index nie includuje i uznalem ze to nie to a moze wlasnie to byloby roziazanie.

Bylbym wdzieczny za nauki.. niby działa ale nie lubie niedomówień i chciałbym wiedzieć i zapamietać (IMG:style_emoticons/default/nerdsmiley.png)
Pozdrawiam
KG

Ten post edytował fate 10.04.2012, 10:32:52
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
jaslanin
post
Post #2





Grupa: Zarejestrowani
Postów: 511
Pomógł: 143
Dołączył: 13.03.2010
Skąd: Jasło

Ostrzeżenie: (0%)
-----


1. To wszystko są operacje na stringach, a dokładnie to ich łączenie

w linku po $_SERVER['HTTP_REFERER'] chcesz jeszcze dołączyć jakiś nowy string po nim i dlatego musisz dodać kropkę (czyli operator łączenia stringów) i rozpocząć literał ze stringiem który chcesz dodać
w przypadku header nie chcesz dołączać za $_SERVER['HTTP_REFERER'] więc nie musisz wywoływać operatora łączenia i wpisywać literału

w header masz

Kod
'Refresh: 3; URL='          .               $_SERVER['HTTP_REFERER']
string literał         łączenie stringów          string ze zmiennej


w linku natomiast masz:

Kod
'<a href="'            .                          $_SERVER['HTTP_REFERER']          .                              '"> Powrót/Return </a>'            
string literał       łączenie stringów            string ze zmiennej                łączenie stringów                  literał


więcej info masz tu:
http://www.php.net/manual/en/language.types.string.php

2.

Mówiąc prosto refresh i location to dwie różne komendy (ściśle są to nagłówki odpowiedzi HTTP), a każda komenda musi być w osobnej linijce w nagłówku więc nie da się ich połączyć. więcej masz:
http://en.wikipedia.org/wiki/List_of_HTTP_header_fields

Location od razu przekierowuje na jakąś stronę
Refresh robi to samo co samo co Location, tylko najpierw czeka 5 sekund

wydaje mi się że wystarczy że po prostu zmienisz location na refresh i będzie działało tak jak chcesz, ale napisz dokładnie o co Ci chodzi

3.

  1. function adres(){
  2. $dane=$_SERVER['HTTP_REFERER'];
  3. return $dane;
  4. }
  5.  
  6. header ('Refresh: 3; URL=' . adres() );


Nie wiem po co na końcu próbowałeś wykonywać odwołanie do tablicy podobne do $_SERVER['HTTP_REFERER'] (to jest odwołanie do elementu HTTP_REFERER tablicy $_SERVER, musisz przeczytać jakiś kurs podstaw PHP bo bez pewnej wiedzy nie da się robić rzeczy po prostu próbując, dlatego najpierw dzieci się uczy liczenia od jeden do dziesięć, a nie każe im się od razu całki rozwalać)


4. nie wiem o co Ci dokładnie chodzi, ale chyba tak. Dodatkowo odnośnie tej funkcji to nie gwarantowane jest że ona zadziała niektóre przeglądarki i antywirusy blokują tą funkcjonalność ze względów bezpieczeństwa

dodatkowo w ramach bezpieczeństwa, HTTP_REFERER jest daną przekazywaną przez użytkownika, więc nie można jej ufać, atakujący Twoją stronę może wykorzystać to by przekierować użytkownika na spreparowaną stronę podobną do Twojej i wykraść jego dane (zwykle ludzie nie patrzą na zmieniający się adres URL), więc musisz sprawdzać czy dane w tej zmiennej nie są zfałszowane

Ten post edytował jaslanin 10.04.2012, 14:22:05
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 7.10.2025 - 00:11