Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Logowanie.... Znowu
Forum PHP.pl > Forum > Przedszkole
Amorph
Witam Serdecznie.
W php jestem zielony jak szczypiorek na wiosnę więc bardzo proszę łopatologicznie smile.gif
Poczytałem na forum o sposobach i możliwościach logowania się na stronę. Mi najbardziej przypadł do gustu, względem potrzeb ten "tutek":

http://forum.php.pl/index.php?showtopic=48726&hl=

Starałem się go przepisać jednak nie widzę w którym miejscu ma się dziać cokolwiek aby przejść na przykładową stronę: secret.php gdzie jak rozumiem maja już być konkretne dane smile.gif. Jeśli byłby ktoś w stanie napisać jak mam złożyć cały plik login.php z przejściem do innych stron to proszę o pomoc.
Z góry bardzo dziękuję smile.gif
Gość
Login.php
  1. <?php
  2. if ( $_POST['login'] == 'przykladowy_login' && $_POST['password'] == 'przykladowe_haslo' )
  3. {
  4. $_SESSION['auth'] = '1';
  5. echo 'Brawo zalogowałeś się!<br /><a href="secred.php">Kliknij tu aby przejść do hhiper tajnej strony</a>';
  6. }
  7. else
  8. {
  9. echo 'Podales zle haslo badz login!';
  10. <form action="Login.php" method="POST">Twój login<input type="text" name="login"><br />Twoje hasło<input type="password" name="password">
  11.  </form>
  12. }
  13. ?>


Secred.php
  1. <?php
  2. if ( isset ( $_SESSION['auth'] ) AND $_SESSION['auth'] == '1' )
  3. {
  4. echo 'masz dostep';
  5. echo '<br />I tu mozesz pisac rozne tajne rzeczy';
  6. }
  7. else
  8. {
  9. echo 'dostep zabroniony';
  10. }
  11. ?>
dawhol
na koncu pliku login php mozesz dac linka do pliku secret.php no i przedewszystkim na poczatku tego pliku musisz dodac:

  1. <?php
  2. if ( isset ( $_SESSION['auth'] ) )
  3. {
  4. echo 'masz dostep';
  5. }
  6. else
  7. {
  8. echo 'dostep zabroniony';
  9. }
  10. ?>


I bedzie cacy ew. w pliku login.php mozesz dac przeladowanie strony np. za pomocą javy. bo tam niema bezposrednie miejsca na strone do któ¶ej ma sie przeładowac smile.gif. No i oczywiscie musisz sobei jescze formularz do tego logowania napisac winksmiley.jpg.

Pozdro jak by co to pisz =) jak czegos jescze nie kapujesz winksmiley.jpg


PS. Mam nadzieje za jakos ci pomogłem smile.gif


Mój bład winksmiley.jpg fakt ale php ucze sie od 2 dni smile.gif Musisz zrobic tak jak radzi kolega wyzej albo mozesz zamiast echo dac:
  1. <?php include('jakis.tamplik.php'); ?>


i plik ten najlepiej umiescic gdziec poza public_html smile.gif lub w jakims folderze prywatnym smile.gif
Amorph
Dzięki wielkie.
Wszystko prawie jasne, jednak chciałbym aby po poprawnym zalogowaniu " z automatu" skoczylo do innej strony a nie jak tu pokazuje sie link.
Dzieki za szybkie odpowiedzi.
Pozdrawiam

PS. Formularz to chyba tak:
  1. <?php
  2. echo '<form action="Login.php" method="POST">Twój login<input type="text" name="login"><br />Twoje hasło<input type="password" name="password"></form>';
  3. ?>
dawhol
  1. <?php
  2. if ( isset ( $_SESSION['auth'] ) )
  3. {
  4. header('Location: www.twojastrona.pl/adresdopliku');
  5. }
  6. else
  7. {
  8. echo 'dostep zabroniony';
  9. }
  10. ?>


Twoj formularz nam nie potrzbny ty sobie go musisz napisac zeby bylo jak sie logowac winksmiley.jpg

niejestm pewny ale spróbuj tak header("Location: itd smile.gif "); masz wszytstko powyzej.

Ps. Niewiem czy działą bo nie sprawdzałem ale ta fukncja sluzy do przekierowania smile.gif bynajmniej tak jest TUTAJ
Amorph
Cytat
Niestety, nie ma róży bez kolców, przed header'em nie możemy wysyłać żadnych
znaków do przeglądarki. Tzn. nie może przed nią wystąpić jakiekolwiek
echo();, print(); i inne tego typu polecenia. Może także "zaszkodzić" mu
jakakolwiek spacja lub enter.

Więc jeśli ktoś ma wiedzę, i podzieli się nią, jak w pliku formularz.php po linii:
  1. <?php
  2. $_SESSION['auth'] = '1';
  3. ?>

wywołać otwarcie innej strony byłbym bardzo wdzięczny.

PS. Przed formularzem używam echo ponieważ wysyłam "początek" strony HTML;owej.
cadavre
Możesz bardzo brzydko wstawić w sam środek kodu coś takiego:
  1. <META HTTP-EQUIV="Refresh" CONTENT="3;URL=plik.php">

Spowoduje to po 3sec. otwarcie pliku plik.php. Jeśli ustawisz 0 - automatycznie przeniesie do plik.php.

Przeglądarki zinterpretują to poprawnie (IE, FF, Opera, Mozilla) a, że <meta> w środku <body> troszkę nie zgodnie ze standardami to mało ważne, bo validator i tak tego nie będzie sprawdzał gdyż nastąpi przekierowanie. winksmiley.jpg
dem
Cytat
Niestety, nie ma róży bez kolców, przed header'em nie możemy wysyłać żadnych
znaków do przeglądarki. Tzn. nie może przed nią wystąpić jakiekolwiek
echo();, print(); i inne tego typu polecenia. Może także "zaszkodzić" mu
jakakolwiek spacja lub enter.


a uzycie funkcji ob_start(); na poczatku pliku oraz ob_end_flush(); na koncu jest nie na miejscu?
Gość
ja mam taką żelazną zasadę, że jak używam sesji
to session_start() jest zawsze na początku

  1. <?php
  2. ...
  3. ...
  4. ?>
Gość
Kod Goscia z poczatku jest w porzadku, ale jak chcesz zeby po poprawnym zalogowaniu przenosil cie do pliku secred.php to zrob tak:
  1. <?php
  2. if ( $_POST['login'] == 'przykladowy_login' && $_POST['password'] == 'przykladowe_haslo' )
  3. {
  4. $_SESSION['auth'] = '1';
  5. header ('Location: ./secred.php'); 
  6. }
  7. else
  8. {
  9. echo 'Podales zle haslo badz login!';
  10. <form action="Login.php" method="POST">Twój login<input type="text" name="login"><br />Twoje hasło<input type="password" name="password">
  11.  </form>
  12. }
  13. ?>


Plik secred.php tak jak powyzej - sprawdza czy istnieje zmienna sesyjna i czy ma wartosc 1, jak nie to powrot:
  1. <?php
  2. if ( isset ( $_SESSION['auth'] ) AND $_SESSION['auth'] == '1' )
  3. {
  4. echo 'masz dostep';
  5. echo '<br />I tu mozesz pisac rozne tajne rzeczy';
  6. }
  7. else
  8. {
  9. header ('Location: ./index.php'); 
  10. }
  11. ?>


I tym sposobem za kazdym razem jak ktos poda zle haslo to wroci do formularza, zeby jeszcze raz wpisac dane.

PS. header() jest w srodku pliku, a nie na poczatku, ale u mnie takie rozwiazanie doskonalen dziala. Jak u ciebie nie bedzie to uzyj ob_start();
dem
nie czytasz ze zrozumieniem :} on nie chce uzyc tej funkcji na poczatq pliku, bo wstawia tam session_start()

jednak, jak mi sie wydaje(i chyba to nie jest zle) session_start() nei wysyla zadnych naglowkow, wiec ob_start(); moze byc zaraz po session_start...

u mnie dziala jak nalezy, nie napotkalem jescze zadnych przeszkod z taka kolejnoscia :E

---
moze i masz racje ;-)
Gość
Chyba sam nie czytasz ze zrozumieniem - wyraznie przeciez napisalem, ze jak nie zadziala u niego header(), ktory jest wywolywany nie na poczatku to zeby uzyl ob_start(); , a co do session_start() to nic nie pisalem - ale jezeli sie uzywa zmiennych sesyjnych to zawsze powinien isc na poczatek.
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.