Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Nadpisywanie zmiennych $_GET
KCG
post
Post #1





Grupa: Zarejestrowani
Postów: 449
Pomógł: 4
Dołączył: 1.12.2006

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


Zastanawiałem się, jak to zrobić, aby nie otrzymać adresu typu 'http://cos.pl/link.php?str=1&str=3&str=4'. I wymyśliłem tak:
  1. <?php
  2. if ($this->url == $this->adres) $this->op = '?'; else {
  3. $this->op = '&';
  4. $adr = explode('str',$this->url); //rozbija adres na dwie części, przed i po str
  5. $this->url = substr($adr[0],0,-1); //uniknięcie sytuacji link.php?cos=23&&str=1 (2 razy '&')
  6. if ($this->url == $this->adres) $this->op = '?';
  7. }
  8. ?>

Tylko jeśli adres będzie wyglądał tak 'link.php?cos=23&str=3&ord=3' to zmienna ord mi zniknie. Może ktoś ma inny sposób?
Ew. mogę jeszcze, teraz wymyśliłem, jako seperator dać całe str=2 (pobiorę numer strony). Ale może jakaś prostsza metoda jest?

pzdr


--------------------
9242594 - zaczynasz? jak mogę, to pomogę :D /podstawowa znajomość php :P /
"to pomoc zawsze będzie gestem pięknym, zaliczana do tych teraz rzadko spotykanych..."
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
seaquest
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 790
Pomógł: 7
Dołączył: 6.02.2003
Skąd: Polska

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


Tablice http

index.php?str[]=1&str[]=2&str[]=3

W PHP odczytujesz jako tablicę.


--------------------
Michał Płachta
Warsztat: Mac OS X Leopard, PostgreSQL, Text Mate, Retrospectiva + SVN
Go to the top of the page
+Quote Post
KCG
post
Post #3





Grupa: Zarejestrowani
Postów: 449
Pomógł: 4
Dołączył: 1.12.2006

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


Jakoś nie bardzo zrozumiałem. Albo Ty nie wiesz, o co mi chodzi. Chodzi o to, żeby zawsze była tylko jedna zmienna str w adresie smile.gif


--------------------
9242594 - zaczynasz? jak mogę, to pomogę :D /podstawowa znajomość php :P /
"to pomoc zawsze będzie gestem pięknym, zaliczana do tych teraz rzadko spotykanych..."
Go to the top of the page
+Quote Post
Virti
post
Post #4





Grupa: Zarejestrowani
Postów: 115
Pomógł: 12
Dołączył: 11.01.2005
Skąd: Zduńska Wola

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


a sprawdzałeś to? w get otrzymasz tablicę:
  1. <?php
  2. $str = array(1, 2, 3);
  3. ?>


zmienna jest jedna, i poprostu ma kilka argumentów

chyba, że chodzi Ci o coś takiego:
index.php?str=1argument_2argument_3argument

a następnie:
  1. <?php
  2. $str = explode('_', $_GET['str']);
  3.  
  4. /*
  5. $str[0] = 'argument1';
  6. $str[1] = 'argument2';
  7. $str[2] = 'argument3';
  8. */
  9. ?>


Ten post edytował Virti 2.01.2008, 19:46:29
Go to the top of the page
+Quote Post
franki01
post
Post #5





Grupa: Zarejestrowani
Postów: 508
Pomógł: 75
Dołączył: 2.11.2005
Skąd: Bydgoszcz

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


Chyba chodzi o takie cos:

  1. <?php
  2. $e = explode('?', $_SERVER['REQUEST_URI']);
  3. $url = $e[0].'?';
  4. $e = array_slice($e, 1);
  5.  
  6. $e = explode('&', implode('?', $e));
  7. $used = array();
  8. $i = 0;
  9.  
  10. foreach($e as $value) {
  11.  $e2 = explode('=', $value);
  12.  
  13.  if(!in_array($e2[0], $used)) {
  14. if($i > 0) $url .= '&';
  15. $url .= $value;
  16. $used[] = $e2[0];
  17. $i++;
  18.  }
  19. }
  20. ?>


Po tym w $url bedziesz mial adres, ktory nie zawiera dublowanych zmiennych. Pisane z palca, wiec poprawiac w razie czego smile.gif
Go to the top of the page
+Quote Post
KCG
post
Post #6





Grupa: Zarejestrowani
Postów: 449
Pomógł: 4
Dołączył: 1.12.2006

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


Może faktycznie jakoś niejasno powiedziałem.
Zmienna str ma być tylko jedna, przechowuje aktualną stronę. Zrobiłem jednak, że rozbija adres na 2 części, seperatorem jest str=2 (np.). Ale może w praktyce, jak ktoś potrzebuje:
  1. <?php
  2. if ($this->url == $this->adres) $this->op = '?'; else {
  3.  $this->op = '&'; // ta zmienna ustala, czy ma być & czy ? (linki są tworzone dalej)
  4.  $adr = explode('str='.$this->str,$this->url); //$this->str = aktualna strona
  5.  $this->url = substr($adr[0],0,-1); // skraca adres o '&' lub '?' (ostatni znak)
  6.  $this->url .= $adr[1]; //przypisuje, jeśli były jakieś zmienne po str w adresie
  7. if ($this->url == $this->adres) $this->op = '?'; // jeśli adres jest czysty, np. link.php, to zmienna oddzieli się '?', a nie '&'
  8. }
  9. ?>

To tak sam sobie rozwiązałem, może komuś się przyda smile.gif
Wielkie dzięki za pomoc i zainteresowanie winksmiley.jpg zawsze jak ktoś coś napisze, to sam wymyślam biggrin.gif

pzdr


--------------------
9242594 - zaczynasz? jak mogę, to pomogę :D /podstawowa znajomość php :P /
"to pomoc zawsze będzie gestem pięknym, zaliczana do tych teraz rzadko spotykanych..."
Go to the top of the page
+Quote Post

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: 19.08.2025 - 20:25