Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] strona zabezpieczona hasłem
-MatMc-
post
Post #1





Goście







Witajcie,
chciałbym, aby jedna z podstron była zabezpieczona hasłem.
- mam wrażenie, że jestem już blisko, a jednak - polecenie nie działa.

Po zatwierdzeniu hasła (także błędnego)
- w przeglądarce - zamiast pliku index.php, otwiera się login.php.

formularz:
Kod
<html>
<body>
<form name="form" action="login.php" method="post">
<input type="password" name="haslo"><br />
<input type="submit" value="ok">
</form>
</body>
</html>


oraz login.php:
Kod
<?PHP

if (isset($_POST['haslo'])) {
$haslo = $_POST['haslo'];

if  ($haslo == 'haslo')
{
@header ('Location: index.php');
}

else {
echo 'Nie udalo sie zalogowac.';
}
}
?>

co jest nie tak? :-(
Go to the top of the page
+Quote Post
Valdi_B
post
Post #2





Grupa: Zarejestrowani
Postów: 107
Pomógł: 30
Dołączył: 19.02.2011
Skąd: Warszawa

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


Na stronie: http://www.faqs.org/rfcs/rfc2616.html (rozdział14.30) jest informacja:
Location = "Location" ":" absoluteURI

Ty podałeś "index.php", co nie jest absolutnym URI.
Go to the top of the page
+Quote Post
drozdii07
post
Post #3





Grupa: Zarejestrowani
Postów: 254
Pomógł: 39
Dołączył: 6.12.2010
Skąd: localhost

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


Super znawcą PHP nie jestem, ale wydaje mi się, że można wpisać ręcznie www.adres-twojej-strony.pl/index.php i też wejdzie bez podania hasła, więc po co to ?
Jeśli się mylę to przepraszam smile.gif


--------------------
Wspieram akcję "jQuery i AJAX to nie język programowania"
Go to the top of the page
+Quote Post
ciekawskiii
post
Post #4





Grupa: Zarejestrowani
Postów: 467
Pomógł: 39
Dołączył: 7.11.2010
Skąd: Raz tu, raz tam

Ostrzeżenie: (30%)
XX---


a ja jestem ciekawy do czego sluzy malpa @ przed headerem bo nigdy jej u siebie nie wstawialem.


--------------------
Go to the top of the page
+Quote Post
modern-web
post
Post #5





Grupa: Zarejestrowani
Postów: 763
Pomógł: 117
Dołączył: 15.03.2010
Skąd: void

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


@ to operator tłumienia błędów wink.gif
A wracając do tematu; Taki zapis także jest poprawny:

  1. header ('Location: index.php');


Błąd tkwi w innym miejscu.
Pozwól, że zrobię to po swojemu, a Ty porównasz z swoim kodem:

Plik index.php:

  1. <?php
  2. $haslo = $_POST['haslo'];
  3. if (isset($_POST['ok'])) {
  4. if ($haslo == 'haslo') {
  5. $komunikat.= "Logowanie udane! Za 3 sekundy nastąpi przekierowanie...<meta http-equiv="refresh" content="3;url=http://twoja_strona.pl/strona_dla_zalogowanych.php">";
  6. } else {
  7. $komunikat.= "Błędne hasło... Spróbuj ponownie!";
  8. }
  9. }
  10. ?>
  11. <html>
  12. <body>
  13. <form name="form" action="" method="post">
  14. <input type="password" name="haslo">
  15. <br />
  16. <input type="submit" name="ok" value="ok">
  17. </form>
  18. <br />
  19. <br />
  20. <? echo ''.$komunikat.''; ?>
  21. </body>
  22. </html>


Tak to powinno wyglądać jak na moje oko... (pisałem z pamięci więc proszę mnie w razie czego poprawić smile.gif)

Ten post edytował modern-web 5.03.2011, 16:37:53


--------------------
Pomogłem? Kliknij `Pomógł`. To nic nie kosztuje, a mnie usatysfakcjonuje! ;)
Go to the top of the page
+Quote Post
ciekawskiii
post
Post #6





Grupa: Zarejestrowani
Postów: 467
Pomógł: 39
Dołączył: 7.11.2010
Skąd: Raz tu, raz tam

Ostrzeżenie: (30%)
XX---


Przy headerze to nie wiem w jakim celu... Co do tego kodu z haslem to jest ok i dziala wiec nie wiem o co chodzi


--------------------
Go to the top of the page
+Quote Post
modern-web
post
Post #7





Grupa: Zarejestrowani
Postów: 763
Pomógł: 117
Dołączył: 15.03.2010
Skąd: void

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


Też mnie to zastanawia ale widać ma jasny powód, którego my nie dostrzegamy ^^


--------------------
Pomogłem? Kliknij `Pomógł`. To nic nie kosztuje, a mnie usatysfakcjonuje! ;)
Go to the top of the page
+Quote Post
-MatMc-
post
Post #8





Goście







Dziękuję za Wasze odpowiedzi,

Na pewno można to zrobić inaczej/lepiej.
Kompletnie raczkuję w temacie, a zależy mi na tym, aby ukryć niektóre dane.

Teraz rzeczywiście działa - brakowało pełnego adresu (nigdy bym nie wpadł na to)
Zastanawia mnie tylko jedno...
Skoro w źródle ogólnodostępnego pliku jest użyta nazwa pliku w którym zapisane jest hasło...
Czy to aby na pewno skuteczne zabezpieczenie?
(wiem, że każde hasło można złamać, ale wolałbym, aby nie były to tak prymitywne metody jak podejrzenie kodu źródłowego, bo nawet ja to potrafię)
Go to the top of the page
+Quote Post
konole
post
Post #9





Grupa: Zarejestrowani
Postów: 275
Pomógł: 32
Dołączył: 21.03.2006
Skąd: Warszawa

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


Cytat(MatMc @ 7.03.2011, 17:16:37 ) *
Dziękuję za Wasze odpowiedzi,

Na pewno można to zrobić inaczej/lepiej.
Kompletnie raczkuję w temacie, a zależy mi na tym, aby ukryć niektóre dane.

Teraz rzeczywiście działa - brakowało pełnego adresu (nigdy bym nie wpadł na to)
Zastanawia mnie tylko jedno...
Skoro w źródle ogólnodostępnego pliku jest użyta nazwa pliku w którym zapisane jest hasło...
Czy to aby na pewno skuteczne zabezpieczenie?
(wiem, że każde hasło można złamać, ale wolałbym, aby nie były to tak prymitywne metody jak podejrzenie kodu źródłowego, bo nawet ja to potrafię)

Kodu php nie da się podejrzeć przez przeglądarkę, jeśli o to ci chodzi.
Go to the top of the page
+Quote Post
Valdi_B
post
Post #10





Grupa: Zarejestrowani
Postów: 107
Pomógł: 30
Dołączył: 19.02.2011
Skąd: Warszawa

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


Cytat(MatMc @ 7.03.2011, 17:16:37 ) *
... brakowało pełnego adresu (nigdy bym nie wpadł na to)

Wystarczyło przeczytać to, co napisałem w poście z 5.03.2011, 11:59:10.
Adres absolutny to właśnie pełny adres (http://<nazwa_hosta>...)
Go to the top of the page
+Quote Post
greycoffey
post
Post #11





Grupa: Zarejestrowani
Postów: 320
Pomógł: 29
Dołączył: 3.04.2010

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


Cytat(Valdi_B @ 7.03.2011, 17:49:09 ) *
Wystarczyło przeczytać to, co napisałem w poście z 5.03.2011, 11:59:10.
Adres absolutny to właśnie pełny adres (http://<nazwa_hosta>...)

On sam by na to nigdy nie wpadł, nie bądź tak zgryźliwy.
Go to the top of the page
+Quote Post
ciekawskiii
post
Post #12





Grupa: Zarejestrowani
Postów: 467
Pomógł: 39
Dołączył: 7.11.2010
Skąd: Raz tu, raz tam

Ostrzeżenie: (30%)
XX---


A od czego to zalezy? Ja nigdy nie podaje pelnego adresu i dziala


--------------------
Go to the top of the page
+Quote Post
greycoffey
post
Post #13





Grupa: Zarejestrowani
Postów: 320
Pomógł: 29
Dołączył: 3.04.2010

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


RFC 2616 - HTTP/1.1 - Location...
Prawdopodobnie niektóre przeglądarki naprawiają takie niedokładności.
Go to the top of the page
+Quote Post
modern-web
post
Post #14





Grupa: Zarejestrowani
Postów: 763
Pomógł: 117
Dołączył: 15.03.2010
Skąd: void

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


Ja także. W header nigdy nie wpisywałem adresu absolutnego. Chyba, że przekierowanie odnosiło się do pliku, który nie znajdował się na serwerze lokalnym. No cóż... są różne szkoły `jazdy` wink.gif
Nie mam pojęcia od czego to zależy.


--------------------
Pomogłem? Kliknij `Pomógł`. To nic nie kosztuje, a mnie usatysfakcjonuje! ;)
Go to the top of the page
+Quote Post
ciekawskiii
post
Post #15





Grupa: Zarejestrowani
Postów: 467
Pomógł: 39
Dołączył: 7.11.2010
Skąd: Raz tu, raz tam

Ostrzeżenie: (30%)
XX---


Przy pelnym adresie w headerze mozna tracic sesje wiec dla mnie to nie jest najlepszy pomysl - dawno temu raz tak zrobilem i zastanawialem sie godzinami czemu sesje trace


--------------------
Go to the top of the page
+Quote Post
-MatMc-
post
Post #16





Goście







Valdi_B
- 5 III - już wszystko dobrze działało.
ale z odpowiedzią na forum - czekałem, aż będę mógł wrzucić stronę na serwer, żeby się upewnić, czy wszystko na pewno jest dobrze
dlatego odezwałem się dopiero dzisiaj.

Cytat
Kodu php nie da się podejrzeć przez przeglądarkę, jeśli o to ci chodzi.

- tak, o to pytałem.

Wszystko działa bez zarzutu.
Bardzo Wam dziękuję!
Go to the top of the page
+Quote Post
greycoffey
post
Post #17





Grupa: Zarejestrowani
Postów: 320
Pomógł: 29
Dołączył: 3.04.2010

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


Odkopuję, ale słusznie biggrin.gif
Manual PHP, header.
Kod
Note:
HTTP/1.1 requires an absolute URI as argument to » Location: including the scheme, hostname and absolute path, but some clients accept relative URIs. You can usually use $_SERVER['HTTP_HOST'], $_SERVER['PHP_SELF'] and dirname() to make an absolute URI from a relative one yourself:
Go to the top of the page
+Quote Post
-cwojtas1987-
post
Post #18





Goście







Cytat(modern-web @ 5.03.2011, 16:23:02 ) *
@ to operator tłumienia błędów wink.gif
A wracając do tematu; Taki zapis także jest poprawny:

  1. header ('Location: index.php');


Błąd tkwi w innym miejscu.
Pozwól, że zrobię to po swojemu, a Ty porównasz z swoim kodem:

Plik index.php:

  1. <?php
  2. $haslo = $_POST['haslo'];
  3. if (isset($_POST['ok'])) {
  4. if ($haslo == 'haslo') {
  5. $komunikat.= "Logowanie udane! Za 3 sekundy nastąpi przekierowanie...<meta http-equiv="refresh" content="3;url=http://twoja_strona.pl/strona_dla_zalogowanych.php">";
  6. } else {
  7. $komunikat.= "Błędne hasło... Spróbuj ponownie!";
  8. }
  9. }
  10. ?>
  11. <html>
  12. <body>
  13. <form name="form" action="" method="post">
  14. <input type="password" name="haslo">
  15. <br />
  16. <input type="submit" name="ok" value="ok">
  17. </form>
  18. <br />
  19. <br />
  20. <? echo ''.$komunikat.''; ?>
  21. </body>
  22. </html>


Tak to powinno wyglądać jak na moje oko... (pisałem z pamięci więc proszę mnie w razie czego poprawić smile.gif)

Zauważyłem, że w linijce ze znacznikiem: <meta http-equiv="refresh" content="3;url=http://twoja_strona.pl/strona_dla_zalogowanych.php">";
trzeba zmienić "" na ' ' wtedy będzie działać. Jeśli ktoś tak napisał to sorki!
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 09:20