Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][PHP]Hasło na stronie
Forum PHP.pl > Forum > Przedszkole
scheitel
witam,
chcę zrobić stronę na hasło. W necie znalazłem gotowy kod jednak ma pewną wadę, otóż nie ważne jest czy podam właściwe hasło bo i tak pojawi mi się ta sama strona.

Kod str html:
  1. <html>
  2.  
  3.  
  4. <title>Strona prywatna > Dostęp ograniczony</title>
  5.  
  6. <meta name="generator" content="Bluefish 1.3.7" >
  7.  
  8. <meta name="author" content="" >
  9.  
  10. <meta name="date" content="2010-08-09T23:14:18+0100" >
  11.  
  12. <meta name="copyright" content="">
  13.  
  14. <meta name="keywords" content="">
  15.  
  16. <meta name="description" content="">
  17.  
  18. <meta name="ROBOTS" content="NOINDEX, NOFOLLOW">
  19.  
  20. <meta http-equiv="content-type" content="text/html; charset=UTF-8" >
  21.  
  22. <meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8">
  23.  
  24. <meta http-equiv="expires" content="0">
  25.  
  26. <style type="text/css">
  27.  
  28. body {
  29.  
  30. color: #123456;
  31.  
  32. width: 600px;
  33.  
  34. height: 400px;
  35.  
  36. text-align: center;
  37.  
  38. padding: 100px 1px 1px 350px;
  39.  
  40. background-image: url(img/1.jpg);
  41.  
  42. background-color: #78B6F2;
  43.  
  44. }
  45.  
  46. p {
  47.  
  48. margin: 2px;
  49.  
  50. font: 1em arial, sans-serif;
  51.  
  52. background-attachment: fixed;
  53.  
  54. }
  55.  
  56. input {
  57.  
  58. color: #123456;
  59.  
  60. font-size: 12px;
  61.  
  62. background-color: #C9E5EF;
  63.  
  64. line-height: 2em;
  65.  
  66. }
  67.  
  68. </head>
  69. <body>
  70. <form action="loguj.php" method="post"> Podaj swoje imię
  71.  
  72. <input type="text" name="nazwa" size="12" maxlength="20" > <br>
  73.  
  74. Hasło
  75.  
  76. <input type="password" name="haslo"> <br>
  77.  
  78. <input type="submit" value="wyślij"> </form>
  79.  
  80. </body>
  81.  
  82. </html>


Strona loguj.php
tutaj mam prośbę aby ktoś pomógł mi ustawić ten kod tak żeby poprawne wpisanie hasła dawało dostęp to treści na stronie, a błędnie wpisane hasło włączało stronę np blad.html albo wyświetlało sam komunikat o błędzie.

  1. <html>
  2.  
  3. <body>
  4.  
  5. <? $haslo = $_POST['haslo']; $prawdziwe = "91062505835"; // Twój PESEL
  6.  
  7. if ($haslo==$prawdziwe) { // Zatwierdź
  8.  
  9. echo("Podałeś prawidłowe hasło!"); }
  10.  
  11. else {
  12.  
  13. echo ("Podane przez ciebie hasło jest błedne!");}
  14.  
  15. ?>
  16.  
  17. <br>
  18.  
  19. <b>tu chciałbym mieć tą treść która będzie dostępna po poprawnie wpisanym haśle</b>
  20.  
  21. </body>
  22.  
  23. </html>

IceManSpy
Wersja, gdzie masz w innym pliku tajną stronę.
  1. <html>
  2. <body>
  3. <? $haslo = $_POST['haslo']; $prawdziwe = "91062505835"; // Twój PESEL
  4. if ($haslo==$prawdziwe) {
  5. echo("Podałeś prawidłowe hasło!");
  6. header('Location:tajnastrona.html');
  7. }
  8. else {
  9. echo ("Podane przez ciebie hasło jest błedne!");
  10. header('Location:blad.html');
  11. }
  12. ?>
  13. <br>
  14. <b>tu chciałbym mieć tą treść która będzie dostępna po poprawnie wpisanym haśle</b>
  15. </body>
  16. </html>

Wersja, gdzie chcesz mieć w tym samym:
  1. <html>
  2. <body>
  3. <? $haslo = $_POST['haslo']; $prawdziwe = "91062505835"; // Twój PESEL
  4. if ($haslo!=$prawdziwe) { // Zatwierdź
  5. echo ("Podane przez ciebie hasło jest błedne!");
  6. header('Location:blad.html');
  7. }
  8. ?>
  9. <br>
  10. <b>tu chciałbym mieć tą treść która będzie dostępna po poprawnie wpisanym haśle</b>
  11. </body>
  12. </html>
Pawel_W
chyba Ci to nie zadziała winksmiley.jpg header nie można wywoływać po przesłaniu kodu do przeglądarki, musisz skorzystać z buforowania ob

i dla bezpieczeństwa po header dawaj exit; inaczej kod będzie się dalej wykonywał smile.gif
Fifi209
Cytat(Pawel_W @ 9.08.2010, 23:28:31 ) *
chyba Ci to nie zadziała winksmiley.jpg header nie można wywoływać po przesłaniu kodu do przeglądarki, musisz skorzystać z buforowania ob

Nagłówki zawsze ale to zawsze muszą zostać przesłane jako pierwsze, nawet BOM może skutecznie wywołać błąd: headers already sent.

Co do buforowania - można i tak zastosować, ale to raczej nie do tego służy.

Moja teoria: jeżeli musisz użyć buforowania przy wysyłaniu nagłówków - coś jest nie tak.
gorden
to ja wkleje swój kodzik.

  1. <?php
  2. $haslo = "omega"; //tutaj haslo
  3.  
  4. if(isset($_POST['submit'])) {
  5. if($haslo !== $_POST['haslo']) { echo"Niestety wpisałeś złe hasło, nie możesz wejść."; exit; } ?>
  6.  
  7.  
  8. <!-- TUTAJ STRONA -->
  9.  
  10.  
  11. <? exit; } ?>
  12. <form action="haslo.php" method="post">
  13. Wpisz hasło: <input type="text" name="haslo">
  14. <input type="submit" name="submit" value="Wejdź">
  15. </form>


wada tego skryptu jest taka, że przed "TUTAJ STRONA" musi być kod wyżej, a pod - kod niżej. kod sprawdziłem, działa. można użyć dodatkowo sesji dla osób, które dobrze wpisały hasło, co uniknie wpisywania przy odświeżaniu hasła na nowo.
kilas88
Cytat(fifi209 @ 10.08.2010, 00:58:11 ) *
Nagłówki zawsze ale to zawsze muszą zostać przesłane jako pierwsze, nawet BOM może skutecznie wywołać błąd: headers already sent.

Co do buforowania - można i tak zastosować, ale to raczej nie do tego służy.

Moja teoria: jeżeli musisz użyć buforowania przy wysyłaniu nagłówków - coś jest nie tak.

Niet, Pawel_W napisał prawidłową odpowiedź.

Cytat
Note: You can use output buffering to get around this problem, with the overhead of all of your output to the browser being buffered in the server until you send it. You can do this by calling ob_start() and ob_end_flush() in your script, or setting the output_buffering configuration directive on in your php.ini or server configuration files.
Fifi209
Cytat(kilas88 @ 10.08.2010, 01:13:52 ) *
Niet, Pawel_W napisał prawidłową odpowiedź.


Możesz użyć nie znaczy użyj. ;]

Masz poczytaj sobie.
scheitel
Mógłby mi ktoś powiedzieć co musiałbym zrobić w tym moim kodzie żeby dodać drugi warunek, tzn. żeby przejść do strony należało by podać przykładowo hasło i jeszcze jakiś kod i dopiero po poprawnym wpisaniu tych 2ch danych można było wyświetlić stronę.
  1. 1.
  2. <html>
  3. 2.
  4. <body>
  5. 3.
  6. <? $haslo = $_POST['haslo']; $prawdziwe = "91062591028"; // Twój PESEL
  7. 4.
  8. if ($haslo!=$prawdziwe) { // Zatwierdź
  9. 5.
  10. echo ("Podane przez ciebie hasło jest błedne!");
  11. 6.
  12. header('Location:blad.html');
  13. 7.
  14. }
  15. 8.
  16. ?>
  17. 9.
  18. <br>
  19. 10.
  20. <b>tu chciałbym mieć tą treść która będzie dostępna po poprawnie wpisanym haśle</b>
  21. 11.
  22. </body>
  23. 12.
  24. </html>
glh
Zakładając, że plik nazywa się test.php można to zrobić tak:
  1. <?php
  2. $login=$_POST['login'];
  3. $haslo=$_POST['haslo'];
  4.  
  5. if (isset($login) && isset($haslo) && $login=="dobry login" && $haslo=="tajne haslo")
  6. {
  7. echo "Tutaj dajesz tresc dla znajacych login i haslo.<br/>";
  8. } else
  9. {
  10. echo "Podaj dobry login oraz tajne haslo<br/>";
  11. ?>
  12. <form action="test.php" method="post">
  13. Login:<input type="text" name="login"/><br/>
  14. Haslo:<input type="text" name="haslo"/><br/>
  15. <input type="submit" value="Loguj"/>
  16. </form>
  17. <?php
  18. }
  19.  
  20. ?>
  21.  


//login to "dobry login" a haslo to "tajne haslo" smile.gif
lessi
Cytat(glh @ 11.08.2010, 19:37:32 ) *
Zakładając, że plik nazywa się test.php można to zrobić tak:
  1. <?php
  2. $login=$_POST['login'];
  3. $haslo=$_POST['haslo'];
  4.  
  5. if (isset($login) && isset($haslo) && $login=="dobry login" && $haslo=="tajne haslo")
  6. {
  7. echo "Tutaj dajesz tresc dla znajacych login i haslo.<br/>";
  8. } else
  9. {
  10. echo "Podaj dobry login oraz tajne haslo<br/>";
  11. ?>
  12. <form action="test.php" method="post">
  13. Login:<input type="text" name="login"/><br/>
  14. Haslo:<input type="text" name="haslo"/><br/>
  15. <input type="submit" value="Loguj"/>
  16. </form>
  17. <?php
  18. }
  19.  
  20. ?>
  21.  


//login to "dobry login" a haslo to "tajne haslo" smile.gif


Jak dla mnie to są zbędne te dwa pierwsze warunki. Jeżeli nie będzie tych zmiennych to warunki 3 i 4 nie będą spełnione.
scheitel
Dzięki wielkie za pomoc. Mam jeszcze do Was jedno pytanko jak zrobić / przerobić ten kod, żeby można było wpisać tą ukrytą treść w html-u?
Damonsson
  1. <?php
  2. $login=$_POST['login'];
  3. $haslo=$_POST['haslo'];
  4.  
  5. if (isset($login) && isset($haslo) && $login=="dobry login" && $haslo=="tajne haslo")
  6. {
  7. ?>
  8.  
  9. I TUTAJ WSTAWIASZ SOBIE SWÓJ KOD HTML WIDOCZNY TYLKO DLA ZALOGOWANYCH
  10.  
  11. <?
  12. } else
  13. {
  14. echo "Podaj dobry login oraz tajne haslo<br/>";
  15. ?>
  16. <form action="test.php" method="post">
  17. Login:<input type="text" name="login"/><br/>
  18. Haslo:<input type="text" name="haslo"/><br/>
  19. <input type="submit" value="Loguj"/>
  20. </form>
  21. <?php
  22. }
  23.  
  24. ?>


O ile to ten kod wyżej Ci działa i chcesz go przerobić
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.