Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Idź do strony...
gary
post
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 22.02.2010

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


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?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 12)
!*!
post
Post #2





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Robisz formularz który GETem odsyła do pliku php, a w nim odczytujesz tą wartość poprzez

  1. $_GET['page'];
Go to the top of the page
+Quote Post
sebap123
post
Post #3





Grupa: Zarejestrowani
Postów: 253
Pomógł: 1
Dołączył: 26.08.2009
Skąd: Szczecin

Ostrzeżenie: (10%)
X----


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.
Go to the top of the page
+Quote Post
m_ikolaj
post
Post #4





Grupa: Zarejestrowani
Postów: 16
Pomógł: 3
Dołączył: 19.07.2011

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


Chyba id strony powinno być przesyłane $_GET['id_strony'] ,bo gary napisał

Cytat
(...)
został przeniesiony na adres: http://strona.pl/?page=35
Go to the top of the page
+Quote Post
sebap123
post
Post #5





Grupa: Zarejestrowani
Postów: 253
Pomógł: 1
Dołączył: 26.08.2009
Skąd: Szczecin

Ostrzeżenie: (10%)
X----


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;


Ten post edytował sebap123 19.09.2011, 14:40:11
Go to the top of the page
+Quote Post
!*!
post
Post #6





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


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. }
Go to the top of the page
+Quote Post
Adikso
post
Post #7





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 24.05.2011
Skąd: Polska - Łódź

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


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.

Ten post edytował Adikso 19.09.2011, 15:23:41
Go to the top of the page
+Quote Post
sebap123
post
Post #8





Grupa: Zarejestrowani
Postów: 253
Pomógł: 1
Dołączył: 26.08.2009
Skąd: Szczecin

Ostrzeżenie: (10%)
X----


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ł

Ten post edytował sebap123 19.09.2011, 14:53:11
Go to the top of the page
+Quote Post
gary
post
Post #9





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 22.02.2010

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


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ć?
Go to the top of the page
+Quote Post
!*!
post
Post #10





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


  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.
Go to the top of the page
+Quote Post
gary
post
Post #11





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 22.02.2010

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


I gdzie to mam wstawić? (sory jeśli zadaję głupie pytania, ale w php jestem słaby)
Go to the top of the page
+Quote Post
!*!
post
Post #12





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


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'])

Ten post edytował !*! 19.09.2011, 18:33:03
Go to the top of the page
+Quote Post
sadistic_son
post
Post #13





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

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


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.

Ten post edytował sadistic_son 19.09.2011, 19:07:48
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 24.08.2025 - 19:40