Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Podstrona na hasło
Forum PHP.pl > Forum > Przedszkole
canuhelpme
Witam!
Raczkuję w temacie PHP, jednak potrzebny jest mi skrypt, który poprosi o hasło i przeniesie na daną stronę.
Poniżej znajduje się skrypt jaki znalazłem w sieci. Działa bez problemu na serwerze cba.pl, problem pojawia się kiedy umieściłem go na nazwa.pl. Skrypt nie ładuje mi strony. Nie mam pojęcia dlaczego, stąd moja prośba o pomoc. Oczywiście strona musi znaleść się na serwerze nazwa.pl. Oto kod:

  1. <div id="trzeci_blok">
  2. <p><br />
  3. <?php
  4. session_start(); //rozpoczęcie sesji
  5. include "haslo.php";
  6. //skrypt :)
  7. $pass = $_POST[pass];
  8. if ($pass)
  9. {
  10. if ($pass==$haslo)
  11. {
  12. $_SESSION[haslo] = $haslo;
  13. header ("Location: ./materials2.html"); //podajesz adres, na który po zalogowaniu skrypt przekierowuje
  14. }
  15. else
  16. {
  17. echo 'Podałeś niepoprawne hasło. :(';
  18. }
  19. }
  20. else
  21. {
  22. <form method=post>
  23. Podaj hasło: <INPUT TYPE="PASSWORD" NAME="pass" VALUE="'.$pass.'">
  24. <INPUT TYPE="SUBMIT" VALUE="Zaloguj">
  25. </FORM>
  26. ';
  27. }
  28. $action = $_GET[action];
  29. if ($action=="logout")
  30. {
  31. header("Location: index.html"); //podajesz adres, na który po wylogowaniu skrypt przekierowuje
  32. }
  33. ?>
  34.  
  35.  
  36.  
  37. </p>
  38. </div>


Podstrona z tym kodem ma rozszerzenie .php. Dodatkowo jest plik haslo.php. Jego kod to:

  1. <?php
  2. $haslo = "123456"; //hasło dostępu
  3. ?>


Bardzo proszę o pomoc. Pozdrawiam
peter13135
jak to możliwe, że skrypt startuje, skoro przed session_start() masz wyświetlanie kodu html ?
maciusiek995
  1. <?
  2. session_start(); //rozpoczęcie sesji musi być przed wykonaniem nagłówków
  3. ?>
  4.  
  5.  
  6. <?php
  7.  
  8. include "haslo.php";
  9. //skrypt :)
  10. $pass = $_POST[pass];
  11. if ($pass)
  12. {
  13. if ($pass==$haslo)
  14. {
  15. $_SESSION[haslo] = $haslo;
  16. header ("Location: ./materials2.html"); //tak samo z header
  17. }
  18. else
  19. {
  20. $komunikat= 'Podałeś niepoprawne hasło. :( </br>';
  21. }
  22. }
  23. else
  24. {
  25. echo '<div id="trzeci_blok">
  26. <p>
  27. if(isset($komunikat)) echo $komunikat;
  28.  
  29. <form method=post>
  30. Podaj hasło: <INPUT TYPE="PASSWORD" NAME="pass" VALUE="'.$pass.'">
  31. <INPUT TYPE="SUBMIT" VALUE="Zaloguj">
  32. </FORM>
  33. ';
  34. }
  35. $action = $_GET[action];
  36. if ($action=="logout")
  37. {
  38. header("Location: index.html"); //podajesz adres, na który po wylogowaniu skrypt przekierowuje
  39. }
  40. ?>
canuhelpme
To jest tylko część kodu. Wrzuciłem skrypt php w diva, żeby umiejscowić pole logowania w dobrym miejscu. Ten pierwszy skrypt nie jest osobnym plikiem, jest po prostu wrzucony w stronę.
canuhelpme
Cytat(maciusiek995 @ 16.08.2011, 19:59:24 ) *
  1.  
  2.  
  3. echo '<div id="trzeci_blok">
  4. <p>
  5. if(isset($komunikat)) echo $komunikat;
  6.  


? tu chyba jest błąd, a skrypt nadal się nie ładuje
maciusiek995
to jest tylko sprawdzenie czy została użyta zmienna $komunikat czy nie bo inaczej wywali errora smile.gif

canuhelpme
Skrypt nadal nie działa na serwerze nazwa.pl. Jaka moze byc tego przyczyna? Moze miec to zwiazek z plikiem .htacces lub jakas konfiguracja? Skrypt dziala bez problemu na innych serwerach obslugujacych php. Nie mam juz pomyslu co zrobic.
CuteOne
  1.  
  2. $pass = '12345';
  3.  
  4. if(!empty($_POST)) {
  5.  
  6. if($pass == $_POST['pass']) {
  7.  
  8. $_SESSION['pass'] = $pass;
  9.  
  10. header('Location: http: // www. example .com/ jakas.strona.html');
  11. }
  12. else {
  13.  
  14. $komunikat = 'Złe hasło';
  15. }
  16. }
  17.  
  18.  
  19.  
  20. if(isset($komunikat)) echo $komunikat;
  21.  
  22. echo '<form method="post" action="">
  23. Podaj hasło: <INPUT TYPE="PASSWORD" NAME="pass" VALUE="">
  24. <INPUT TYPE="SUBMIT" VALUE="Zaloguj">
  25. </FORM>';
  26.  


Dopisz sobie co potrzebujesz
Calibri
Cześć.
Masz błędy w kodzie, możliwe że przez to serwer na nazwa.pl nie trybi.
Popraw błędy w liniach: 7, 12 i 29.

Linia 7:
masz:
Kod
$pass = $_POST[pass];

powinno być:
Kod
$pass = $_POST['pass'];
nie miałeś pass w apostrofach czy tam w cudzysłowach (niewiem jak piszesz). Dodatkowo na początku muszisz sprawdzić czy wogóle została taka zmienna zainicjowana. Więc popraw na:
Kod
$pass = (isset($_POST['pass'])) ? $_POST['pass'] : FALSE.


Linia 12:
masz:
Kod
$_SESSION[haslo] = $haslo;

powinno być:
Kod
$_SESSION['haslo'] = $haslo; // <- popraw na to.


Linia 29:
(podobnie jak z linią nr 7) - podam poprawną wersję:
Kod
$action = (isset($_GET[action])) ? $_GET['action'] : FALSE;


Linia 10:
brak wcześniejszej wersji inicjalizacyjnej $haslo. Mam nadzieję że w pliku który includujesz w linii 5 takowa zmienna istnieje wink.gif

Pozdrawiam.
canuhelpme
@CuteOne
Dzięki ale wyglada na to ze jest chyba jakis problem po stronie serwera. Kiedy wpisuje niepoprawne haslo to wyskakuje komunikat 'Złe hasło', ale kiedy wpisuje poprawne nic sie nie dzieje. Sekunde sie cos laduje ale zostaje na tej samej stronie.

@Calibri
Jak porawilem kod Twoim sposobem ($pass = (isset($_POST['pass'])) ? $_POST['pass'] : FALSE.) , wywalalo mi biala strone na ktorej nic nie bylo. Kiedy uzylem "$pass = $_POST['pass'];" skrypt podobnie jak CuteOne'a nie powodowal zaladowania oczekiwanej strony.

Pozdrawiam
potreb
No tak bo jest bład: ($pass = (isset($_POST['pass'])) ? $_POST['pass'] : FALSE.)

Kropka po false. Jak ci coś nie działa to czytaj błędy, raportowanie błędów to podstawa. Dodatkowo printuj sobie zmienne, wtedy wiesz co się dzieje.
CuteOne
Ehhh... podaj kod skryptu do którego powinno Cię przerzucić.. widocznie tam masz błąd
canuhelpme
@CuteOne
Nie chce zeby przerzucalo mnie do skryptu, tylko prosto do strony. Wpisuje haslo i wyswietla sie strona.
canuhelpme
sorry nie zalapalem.. To ten skrypt:

  1. <?php
  2. //pliki
  3. include "haslo.php";
  4. if ($_SESSION[haslo])
  5. {
  6. if (!($_SESSION[haslo] == $haslo))
  7. {
  8. header ("Location: logowanie.php");
  9. }
  10. }
  11. else
  12. {
  13. header ("Location: logowanie.php");
  14. }
  15. //odtąd wstawiasz treść strony.
  16. ?>
canuhelpme
Wazna informacja. Okazalo sie ze ten skrypt ktory wkleilem w 1 poscie dziala, ale tylko kiedy jest osobnym plikiem 'logowanie.php'. Przestaje dzialac kiedy wrzucam go w strone, mimo iz strona ma rozszerzenie php. Jakies pomysly? Cala strona jest zbudowana na css.
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.