Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Idź do strony...
Forum PHP.pl > Forum > Przedszkole
gary
Witam. Jako, że jestem zielony jeśli chodzi o php to postanowiłem napisać tutaj.
Posiadam stronę podobną w działaniu do kwejk.pl. Chciałbym na niej dodać formularz taki jak jest właśnie na kwejku.
Chodzi o coś w stylu "idź do strony numer:..."

Chciałbym, żeby użytkownik wpisywał np. 35, klikał "ok", i został przeniesiony na adres: http://strona.pl/?page=35
Domyślam się, że nie będzie to długi i trudny do napisania kod, ale moja znajomość kończy się na HTMLu, a w internecie niczego nie znalazłem :/

Mogę liczyć na waszą pomoc?
!*!
Robisz formularz który GETem odsyła do pliku php, a w nim odczytujesz tą wartość poprzez

  1. $_GET['page'];
sebap123
Wstaw coś takiego:

  1. <form action="strona.php" method="post">
  2. <!--tutaj wstawiasz listę rozijaną i co tam jeszcze chcesz (np. lista rozwijana ma nazwę listaRozwijana)

Dodajesz tez kod php do strony:
  1. print 'wybrano numer strony'.$_POST['listaRozwijana'];


I w sumie to tyle z grubsza - aby przejsc do innej strony na bazie tego posta to wystarczy dodać na header, ale to już raczej jest w necie. Jakby był problem to pisz.
m_ikolaj
Chyba id strony powinno być przesyłane $_GET['id_strony'] ,bo gary napisał

Cytat
(...)
został przeniesiony na adres: http://strona.pl/?page=35
sebap123
Rzeczywiście, nie zauważyłem. To kod powinien byc zamiast post po prostu get i dodatkowo kod php:
  1. $strona = htmlspecialchars($_GET['listaRozwijana']);
  2. print 'wybrano numer strony'.$strona;
!*!
A na co Ci w tym htmlspecialchars jak to są liczby?


  1. if(is_int($_GET['page']))
  2. {
  3. /* kod który ma wczytać odpowiednią stronę na podstawie liczby */
  4. }
Adikso
Ponieważ ktoś i tak może podstawić do adresu kod html i rozwalić stronę.
To jest w końcu GET, a więc
Kod
http://adres.pl/plik.php?listaRozwijana=</body>


I twoja strona która wygląda tak:
Cytat
To jest tekst nr1
Tekst2
<tutaj pokazuje wartość z GET>
Tekst3
Tekst4
Tekst5


Będzie wyglądać tak:
Cytat
To jest tekst nr1
Tekst2


EDIT:
Chociaż kolega wyżej też ma racje. Jego kod sprawdza czy wartość to int a więc "</body>" nie przejdzie.
sebap123
Z przyzwyczajenia jak coś się pojawia w linku i tak jak tutaj jest np. wyświetlane to dla bezpieczeństwa dodaję htmlspecialchars.

EDIT:
Adisko mnie ubiegł
gary
Dziękuję za zainteresowanie.
Wstawiłem na stronę taki kod:

  1. <form action="index.php" method="get">
  2. <input type="hidden" value="strona"/>
  3. <p><strong>Idź do strony:</strong> <input type="text" class="numer" name="page"><input type="submit" value=""></p>
  4. </form>


I wszystko działa, ale rozumiem, że na razie jest to niebezpieczne. Jaki jeszcze kod muszę dodać i gdzie go wstawić?
!*!
  1. $page = trim($_GET['page']);
  2. if(isset($page) && is_int($page))
  3. {
  4. /* kod który ma wczytać odpowiednią stronę na podstawie liczby */
  5. }


Tyle w zasadzie wystarczy.
gary
I gdzie to mam wstawić? (sory jeśli zadaję głupie pytania, ale w php jestem słaby)
!*!
wklej to do pliku do którego się odwołujesz w formularzu, w tym wypadku index.php

Jeszcze też dla input daj name="submit" i go też sprawdzaj czy został wysłany przez isset($_GET['submit'])
sadistic_son
No a może jakieś przekierowanie by się przydało co chłopy?
To wklej na samiutkim początku pliku:
  1. <?php
  2. if(isset($_GET['page'])){
  3. $page=intval($_GET['page']);
  4. header("Location:index.php?page=$page");
  5. }?>
A to w dowolnym miejscu gdzie ma się wyświetlać okienko do wpisania strony:
  1. <form action="index.php" method="get" />
  2. <p><strong>Idź do strony:</strong> <input type="text" class="numer" name="page" /><input type="submit" value=">>>" /></p>
  3. </form>
Twój plik oczywiście musi się nazywać index.php. Tzn może inaczej ale wtedy musisz pozmieniać jego nazwy w kodzie, ale musi mieć rozszerzenie php.

Zakładam oczywiście, że Twoja istniejąca strona działa już na zasadzie rozpoznawania która strona jest wpisana w adresie. Jeśli dalej w dotychczasowym kodzie masz użyte $_GET['page'] i w zależności od tego odpalana jest strona to ok. Jeśli nie, to już się nam sprawa wydłuża i raczej bez pokazania dużo większego fragmentu kodu oraz opisania jak generalnie działa ta strona nie pomożemy Ci.
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.