Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Otwieranie stron z poziomu php
Forum PHP.pl > Forum > PHP
suricat
Witam,

Zakładam, iż moje pytanie jest maksymalnie banalne, ale jakoś nie mogę znaleźć na nie odpowiedzi.

Jak z poziomu php warunkowo otworzyć inną stronę?
coś jak : if(warunek) otwórz strone 1.php; else otwórz stronę 2.php

Z góry dzięki za pomoc
pentel
No a masz już jakiś warunek? smile.gif

Ja, na przykład, używam tablicy $_GET, czyli informacji przenoszonych poprzez pasek adresu (linki, itd.).
Świetne jest includowanie, ale żeby nie mieszać to pominę to i dam ci prosty przykład:

index.php
  1. <?php
  2. $s = $_GET['strona']
  3. if ( $s == '1' ) {
  4.  include_once '1.php';
  5. } elseif ( $s == '2' ) {
  6.  include_once '2.php';
  7. } else {
  8.  include 'glowna.php';
  9. }
  10. ?>

I jeżeli klikniesz link
  1. <a href="http://strona.pl/index.php?strona=1">Strona 1</a>
  2. <!-- lub ładniejszy -->
  3. <a href="http://strona.pl/?strona=1">Strona 1</a>

to instrukcja warunkowa porówna te wartości z wartością zmiennej z tablicy $_GET. W tym wypadku zaincluduje 1.php

Aha, jeśli masz więcej podstron, to proponuję użyć switcha. Pobiera wartość z tablicy tylko raz i porównuje ją ze wszystkimi przypadkami.

Pozdrawiam
suricat
Dziękuję za odpowiedź, niestety nie dokońca o to mi chodziło.
Powiem dokładnie o co chodzi

Tworzę system cms i warunek o którym pisałem jest przy logowaniu:

  1. <?
  2. $_SESSION['username'] = $_POST['user'];
  3. $_SESSION['pass'] = $_POST['pass'];
  4. $_SESSION['authuser'] = 0;
  5.  
  6. //sprawdza czy podany login pasuje do hasla z bazy
  7. $user = $_SESSION['username'];
  8. include ('conn.php');
  9. $zapytanie = "SELECT pass FROM osoby WHERE login ='".$user."'";
  10. $odp = mysql_query($zapytanie);
  11.  
  12. while ($row = mysql_fetch_row($odp)) {
  13. $pass_db = $row[0];
  14. }
  15. echo $user." user<BR>";
  16. echo $_SESSION['pass']." pass<BR>";
  17. echo $pass_db." pass_db<br>";
  18.  
  19.  
  20. //sprawdzenie hasła
  21. if($pass_db == $_SESSION['pass']) {
  22. $_SESSION['authuser'] = 1;
  23. echo "Witaj ".$user;
  24. }else
  25. {
  26. echo "nie masz uprawnień do oglądania tej strony";
  27. exit();
  28. ?>



Problem pojawił mi się przy warunku sprawdzania hasła - chciałbym aby po poprawnej identyfikacji z bazy przenieść użytkownika na inną stronę, a w przypadku błędnego logowania wyświetlić stronę błędu (zamiast wyświetlać informację za pomocą echo)


Mam nadzieję, że teraz dobrze to opisałem.
flv
header()" title="Zobacz w manualu PHP" target="_manual
i zaznajom sie z forumową wyszukiwarką
pentel
Spoko, moja wina, słowo kluczowe 'otwierać' źle zinterpretowałem smile.gif

  1. <?php
  2. if ($pass_db == $_SESSION['pass']) {
  3.  $_SESSION['authuser'] = 1;
  4.  header('Location: http://' . $_SERVER['HTTP_HOST'] . '/strona1.php');
  5.  exit;
  6. } else {
  7.  // imo po prostu przekieruj go na strone główną, bez pisania komunikatu
  8.  // jeśli to haker to on dobrze wie, co jest źle: nie zna hasła
  9.  // a jeśli to użytkownik, to on tez wie co jest źle: popełnił literówkę
  10.  // w każdym razie nie pamiętam jak sie wyświetlało strone błędu :)
  11. }
  12. ?>


Pozdrawiam

PS. Tylko te twoje zabezpieczenia trochę słabe mi się zdają. Dobrze byłoby chociaż zahashować hasło (np. funkcją md5() ).
suricat
flv dzięki nakierowanie smile.gif

pentel wielkie dzięki - właśnie o to mi chodziło. Co do tej strony błędu to sobie poradze. Nie wiem nic o zahashowaniu hasła funkcją md5() ale sobie doczytam. Dzięki za wskazówki
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.