Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: logowanie (znow :) )
Forum PHP.pl > Forum > Przedszkole
-vanquish-
mam maly problem z logowaniem
plik sprawdzajacy czy zalogowany
  1. <?
  2. if ($_SESSION["zalogowany"]=="tak") // sprawdz czy zalogowany
  3. {
  4.  echo "<p>Witaj <b></b></p>"; // <b> ".$_SESSION['login']." </b>
  5.  echo "<br><a href=\"include2/wyloguj.php\">wyloguj się</a>";
  6.  echo "<br><a href=\"include2/zmiana.php\">zmień hasło</a>"; // jesli tak
  7. }
  8. else
  9. {
  10.  ('<form style="display:inline" method="post">
  11.  <strong>Zaloguj się: </strong>
  12.  <input type="text" class="forminput" size="10" name="login" action="include2/logowanie.php" value="Login" />
  13.   <input type="password" class="forminput" size="10" name="haslo" value="dupa" />
  14.   <input type="submit" class="forminput" value="Loguj" />
  15. | <a href="include2/rejestracja.php">Zarejestruj</a></form>');
  16. }
  17. ?>


plik logowanie.php
  1. <?
  2.  $login = $_POST["login"];
  3.  $haslo = $_POST["haslo"];
  4.  require ("../include/config_db.php");
  5. if ($login<>"" and $haslo<>"")
  6.  {
  7. if (mysql_connect($mysql_host, $mysql_login, $mysql_haslo))
  8.  {
  9. if (mysql_select_db($mysql_baza))
  10.  {
  11. $wynik=mysql_query("SELECT * FROM cicms_users WHERE
  12. user_login='$login' AND user_password='$haslo'");
  13. if (mysql_num_rows($wynik)==1)
  14.  {
  15.  //zalogowany
  16.  $dane=mysql_fetch_array($wynik);
  17.  $_SESSION["zalogowany"]="tak";
  18.  }
  19.  else
  20.  {
  21. print( "Błąd wykonania zapytania<br>" );
  22.  }
  23.  }
  24.  else
  25.  {
  26. print( "Błąd wyboru bazy danych<br>" );
  27.  }
  28.  }
  29.  else
  30.  {
  31. print( "Błąd przy podłączaniu do bazy danych<br>" );
  32.  }
  33.  }
  34.  else
  35.  {
  36. print( "musisz wprowadzić jakieś dane" );
  37.  }
  38. ?>


teraz co się dzieje...
ogolnie to nie wiem... plik index gdzie sprawdza czy zalogowany zawsze wyświetla ze niezalogowany i przed tym bląd
Notice: Undefined index: zalogowany in (...)
czy ja dobrze myśle że każe mu sprawdzić czy w $_SESSION["zalogowany"] jest "tak" questionmark.gif
bo on zachowuje się jakby chciał abym mu na początku przypisał "nie" ale dlaczego ?!
zmienialem tą linie już na:
if (isset($_SESSION["zalogowany"])) - wtedy nie ma błędu ale nigdy nie wyświetla gdy zalogowany
ogólnie to ma problem z dodaniem do $_SESSION["zalogowany"]="tak" ale dochodzi do tego miejsca

uruchamiam baze i daje do sprawdzenia zapytanie
SELECT * FROM `cicms_users` WHERE user_login='admin' AND user_password='admin'
a on wywala mi:
Pokazanie rekordów 0 - 0 (1 wszystkich, Wykonanie zapytania trwało 0.0067 sekund(y)) a na dole pokazuje usera więc jest dobrze (chyba)

a dochodzi do tego miejsca że dodaje $_SESSION["zalogowany"]="tak" bo po tym dodałem print ( "zalogowany"); i pokazało że zalogowany... odpalalem sam plik logowanie.php... nie wiem co jest grane ;/
wpisze logi i haslo a on nadal pokazuje panel do logowania
kossa
na pewno to:

Cytat
if ($login<>"" and $haslo<>"")


  1. <?php
  2. if (($login!="") && ($haslo!=""))
  3. ?>


a po zrobieniu tego:

Cytat
$_SESSION["zalogowany"]="tak";


powinieneś coś zrobić, np. przekierować usera na odpowiednią stronę bo teraz to masz pusto a sesja jeszcze nie jest widoczna bo będzie widoczna dopiero po przeładowaniu strony.

Łukasz
-vanquish-
dopisałem header("Location: ../index.php"); - może być ?
i zmieniłem tak jak napisałem lecz nadal jest to samo...

pierwsza wczytuje się strona index.php gdzie jest plik sprawdzajacy czy zalogowany ale w lini if ($_SESSION["zalogowany"]=="tak") wysypuje się błąd... ale jak sprawdziłem echo $_SESSION["zalogowany"]; w pliku logowanie.php to pokazuje że "tak"... więc wydaje mi się że skrypt logowania jest dobry i pytanie do bazy... ogolnie zastanawia mnie czy w pliku header w którym mam na początku
  1. <?
  2. ini_set('display_errors', 1);
  3. ?>
  4. <html>
  5. <head> itd.

wystaczy że jest session_start(); ? bo w innych plikach już session_start(); nie dawałem bo poprostu include daje... questionmark.gif
i dlaczego przy tym pytaniu się sypie ?! ogolnie to te pytanie jest bardzo często w logowaniu wykożystywane z tego co czytałem ale nikt nie wspomina o jakimś błędzie z Tym ;/
Gość
no i zapomnialem napisac ze plik header.php ma dalej w sobie to co w pierwszym poście na samej górze... czyli sypie się błąd w tym pliku... no a jak dodałem echo $_SESSION["zalogowany"]; w header.php to pokazuje juz 2 blędy
echo $_SESSION["zalogowany"]; //1
if ($_SESSION["zalogowany"]=="tak") //2

tylko dlaczego ?
-vanquish-
no jakoś sobie poradziłem... działa teraz ale jak mógłby ktoś odpowiedzieć dlaczego nie działało poprzednio to byłbym wdzięczny bardzo...

rozwiązałem to poprzez rejestracje sesji
a dla luda szukającego logowania:

header.php
  1. <?
  2. ini_set('display_errors', 1); 
  3. ?>
  4. <html>
  5. <head>
  6. <title>Strona</title>
  7. <meta http-equiv="Content-type" content="text/html; charset=iso-8859-2">
  8. <meta name="Keywords" content="słowa kluczowe">
  9. <meta name="Description" content="Opis strony pojawi się w wyszukiwarce">
  10. <meta name="Language" content="pl">
  11. <link href="style.css" rel="stylesheet" type="text/css">
  12. </head>
  13. <body>
  14. <table width="100%">
  15.  <tr>
  16. <td colspan="2">
  17. <?
  18. if (session_is_registered('zalogowany'))
  19. {
  20.  echo "<p>Witaj <b>".$_SESSION['login']."</b></p>";
  21.  echo "<br><a href=\"include2/wyloguj.php\">wyloguj się</a>";
  22.  echo "<br><a href=\"include2/zmiana.php\">zmień hasło</a>"; // jesli tak
  23. }
  24. else
  25. {
  26. ('<form style="display:inline" action="include2/logowanie.php" method="post">
  27.  <strong>Zaloguj się: </strong>
  28.  <input type="text" class="forminput" size="10" name="login" />
  29.   <input type="password" class="forminput" size="10" name="haslo" />
  30.   <input type="submit" class="forminput" value="Loguj" />
  31. | <a href="include/form_rejestr.php">Zarejestruj</a></form>');
  32. }
  33.  
  34. ?>
  35. </td>
  36.  </tr>


index.php
  1. <?
  2. include_once ("include/header.php");
  3. ?>
  4.  
  5. // cala strona
  6.  
  7. <tr>
  8.  <td width="20%">
  9.  Tu menu:<br>
  10.  1.<br>
  11.  2.<br>
  12.  3.<br>
  13.  4.<br>
  14.  5.<br>
  15.  6.</td>
  16.  <td width="80%">
  17.  <?
  18. include ('podstrony/1.php');
  19. ?>
  20.  </td>
  21. </tr>
  22. //include stopki
  23. <?
  24. include_once ("include/footer.php");
  25. ?>


footer.php
  1. <tr>
  2. <td colspan="2">
  3. <center><b>Š Wszelkie prawa zastrzeżone!</b></center>
  4. </td>
  5. </tr>
  6. </table>
  7. </body>
  8. </html>
  9. <?
  10. ?>


config_db.php
  1. <?
  2. // konfig bazy danych - wprowadź wg ustawień bazy
  3. $mysql_host = "localhost";
  4. $mysql_login = "root";
  5. $mysql_haslo = "";
  6. $mysql_baza = "users";
  7. $mysql_table = 'cicms_users';
  8. ?>


logowanie.php
  1. <?
  2. // odwołanie się do konfiguracji bazy danych
  3. require_once ("../include/config_db.php");
  4. // sprawdzenie wpisu do formularza
  5. // login
  6. $login=$_POST['login'];
  7. // w hasło dać jeszcze md5(htmls...); - zaszyfrowanie hasła
  8. $haslo=$_POST['haslo'];
  9.  
  10. if (($login!="") && ($haslo!="")) // jeżeli wypełnione pola log i pass
  11. {
  12. if ($polaczenie=mysql_connect($mysql_host, $mysql_login, $mysql_haslo))
  13. {
  14. if (mysql_select_db($mysql_baza))
  15. {
  16. $sql='SELECT * FROM '.$mysql_table.' WHERE user_login="'.$login.'" AND user_password="'.$haslo.'"';
  17. $log=mysql_query($sql);
  18. if (mysql_num_rows($log))
  19. {
  20. session_register('zalogowany');
  21. $_SESSION['login']=$login; // w sesji przechowujemy login usera
  22. header("Location: ../index.php");
  23. }
  24. else // jeżeli złe zapytanie do bazy
  25. $blad=4;
  26. }
  27. else // jeżeli nie można wybrać bazy
  28. $blad=3;
  29. }
  30. else // jezeli nie można się połączyć z bazą
  31. $blad=2;
  32. }
  33. else // jeżeli nie wypełnione log i pass
  34. $blad=1;
  35.  
  36. // obsługa błędów
  37. if ($blad==1)
  38. {
  39. echo "Sprawdź czy wypełniłeś dane </br>";
  40. }
  41. if ($blad==2)
  42. {
  43. echo "Nie można nawiązać połączenia z bazą, spróbuj później </br>";
  44. }
  45. if ($blad==3)
  46. {
  47. echo "Nie można wybrać bazy </br>";
  48. }
  49. if ($blad==4)
  50. {
  51. echo "Sprawdź czy dobrze wypełniłeś dane </br>";
  52. echo "<a href='przypomnij.php'>Nie pamiętasz hasła ?</a>";
  53. }
  54.  
  55. ?>


wyloguj.php
  1. <?
  2. ini_set('display_errors', 1); // poprostu pokazuje bledy
  3. error_reporting(E_ALL);  // to samo co wyżej
  4. //sprawdzenie użytkownika za pomocą sesji i ewentualne jej wyrejestrowanie.
  5. if (session_is_registered('zalogowany')) // sprawdzenie isset
  6. {
  7. session_unregister('zalogowany'); // danie unset
  8. header("Location: ../index.php");
  9. //zakończenie wyrejestrowania
  10. }
  11. else header("Location: ../index.php");
  12. ?>


jak ktoś by przeglądał i zauważy jakiś błąd lub coś to chętnie przeczytam winksmiley.jpg
teraz zabieram się za rejestracje smile.gif
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.