Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem z otworzeniem odpowiedniej strony po logowaniu
zabeckis84
post 23.09.2010, 23:02:22
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 19.09.2010

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


Panowie mam problem z ktorym nie moge sobie poradzic. Mam strone, na ktorej wstawilem skrypty z rejestracja. Rejestracja przebiega pomyslnie i teraz chce zrobic logowanie. Przy rejestracji skrypt utwarza plik, w ktorym w 1 lini zapisuje login i haslo a w 2 lini zapisuje cyfre 1. Po zalogowaniu sie laduje sie strona 1.php na ktorej trzeba wypelnic formularz. Po wypelnieniu formularza skrypt otwiera plik z danymi urzytkownika i obok istniejacej juz w 2 lini 1 dopisuje jeszcze jedna 1. Wszystko po to, aby przy nastepnym logowaniu urzytkownik nie musial ponownie wypelniac formularza. Chce zrobic w taki sposob, zeby przy logowaniu zczytywana byla z pliku wartosc 2 lini, i jesli bedzie tam 1 to skrypt otwiera strone 1.php a jesli jest tam 11 to skrypt otwiera strone 11.php Niestety nie moge tego zrobic. Moj kod wyglada nastepujaco:

  1. <?php
  2.  
  3. function checkPass($user, $pass)
  4. {
  5. $login = $_POST['login'];
  6. if(!$fd = @fopen("users/$login.pas", "r")) return 1;
  7. $result = 2;
  8. while (!feof($fd)){
  9. $line = trim(fgets($fd));
  10. $arr = explode(":", $line);
  11. if(count($arr)<2)
  12. continue;
  13.  
  14. if($arr[0] != $user)
  15. continue;
  16.  
  17. if($arr[1] == $pass){
  18. $result = 0;
  19. break;
  20. }
  21.  
  22. else
  23. break;
  24. }
  25. fclose($fd);
  26. return $result;
  27. }
  28.  
  29. if(isSet($_SESSION['zalogowany'])){
  30. header("Location:$x[1].php");
  31. }
  32.  
  33. else if(!isSet($_POST["haslo"]) || !isSet($_POST["login"])){
  34. $_SESSION['komunikat'] = "Wprowadz nazwe uzytkownika i haslo:";
  35. include('form.php');
  36. }
  37.  
  38. else{
  39. $val = checkPass($_POST["login"], $_POST["haslo"]);
  40. if($val == 0){
  41. $_SESSION['zalogowany'] = $_POST['login'];
  42. header("Location:$x[1].php");
  43. }
  44.  
  45. else if($val == 1){
  46. $_SESSION['komunikat'] = "Blad serwera. Zalogowanie nie bylo mozliwe!";
  47. include('form.php');
  48. }
  49.  
  50. else if($val == 2){
  51. $_SESSION['komunikat'] = "Nieprawidlowa nazwa uzytkownika lub haslo";
  52. include('form.php');
  53. }
  54.  
  55. else {
  56. $_SESSION['komunikat'] = "Blad serwera. Zalogowanie nie bylo mozliwe";
  57. include('form.php');
  58. }
  59. }
  60.  
  61. ?>
  62.  
  63. <div align="center">
  64. <h2>
  65.  
  66. <?php
  67. if(isSet($_SESSION['komunikat']))
  68. echo $_SESSION['komunikat'];
  69. else
  70. echo "Enter username and password:";
  71. ?>
  72. </h2>
  73.  
  74. <form name="formularz1" action="login.php" method="POST">
  75. <b>Username:</b>
  76. <br>
  77. <input type="text" name="login">
  78. <br>
  79. <b>Password:</b>
  80. <br>
  81. <input type="password" name="haslo">
  82. <br><br>
  83. <input type="submit" value="Log in!">
  84. </form><br><br>
  85. Don't have account jet? <a href="register.htm">register now!</a>
  86. </div>


Jak widzicie przy poleceniu ladowania strony skrypt ma otworzyc strone $x[1].php (31 i 43 linia kodu). zmienna $x ma przybierac wartosc 1 lub 11 a wartosc ta ma byc pobierana z pliku users/$login.pas. Wiem, ze w skrypcie musze wstawic cos takiego $x=file('users/$login.pas'); zmienna $login zczytywana jest w momencie logowania zeby porownac ja z haslem. Mam teraz takie pytanie gdzie mam w kodzie wstawic $x=file('users/$login.pas'), poniewaz jak nastepuje odwolanie do strony to wyskakuje mi komunikat, ze taka strona nie istnieje a moze robi sie to w zupelnie inny sposob ?

Ten post edytował zabeckis84 23.09.2010, 23:04:20
Go to the top of the page
+Quote Post
franki01
post 24.09.2010, 20:57:34
Post #2





Grupa: Zarejestrowani
Postów: 508
Pomógł: 75
Dołączył: 2.11.2005
Skąd: Bydgoszcz

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


Jeżeli wstawiasz to file() dokładnie tak jak napisałeś, to nic dziwnego, że nie działa smile.gif Apostrofy (') zamień na cudzysłowie ("):
  1. $x=file("users/$login.pas");
  2. $str = trim($x[1]); # $x[1] przed tym może zawierać znak nowej linii


Wstaw to do linijki 31. i 43., a w header() zamiast $x[1], wstaw to $str.
Go to the top of the page
+Quote Post
zabeckis84
post 25.09.2010, 00:19:55
Post #3





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 19.09.2010

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


niestety dalej wywala komunikat ze strona nie istnieje sad.gif
Go to the top of the page
+Quote Post
franki01
post 25.09.2010, 18:52:54
Post #4





Grupa: Zarejestrowani
Postów: 508
Pomógł: 75
Dołączył: 2.11.2005
Skąd: Bydgoszcz

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


Która strona nie istnieje? Jest error z PHP, czy przenosi na inną stronę, ale ona jest błędna? Jeżeli błąd jest do PHP, to jak on brzmi? A jeżeli przenosi na inną stroną, ale tam jest błąd 404, to jaki jest URL?
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 Wersja Lo-Fi Aktualny czas: 15.07.2025 - 01:29