Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Nadpisywanie zmiennych $_GET
Forum PHP.pl > Forum > PHP
KCG
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
seaquest
Tablice http

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

W PHP odczytujesz jako tablicę.
KCG
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
Virti
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. ?>
franki01
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
KCG
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
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.