Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Logowanie sesja nie działa
Forum PHP.pl > Forum > PHP
Sahee
Siemka, zrobiłem logowanie do mojego skrypciku lecz coś nie działa jak się zaloguje to przechodzi na index lecz w indexie jest się wylogowanym. Powi mi ktoś jak to naprawić?
logowanie:
  1. <?php
  2. require_once('sys.php');
  3. $h1 = "Zaloguj się do gry";
  4.  
  5. if(!empty($_POST)){
  6. if(empty($_POST['login'])) $msg = "<p class='error'>Musisz podać login</p>";
  7. elseif(empty($_POST['password'])) $msg = "<p class='error'>Musisz podać hasło</p>";
  8. else {
  9. $login = tekst($_POST['login']);
  10. $pass = hash( 'sha256', $_POST['password'] );
  11. $dane = mysql_query("
  12. Select *
  13. From kanciasc_shaftbd.Users
  14. Where username = '".$login."'
  15. And password = '".$pass."'");
  16. //$dane = mysql_fetch_array(mysql_query("Select username From Users Where username =".mysql_real_escape_string($login)." And password=".mysql_real_escape_string($pass).""));
  17. //echo(var_dump($dane));
  18. if(mysql_num_rows($dane)==0) $msg = "<p class='error'>Nieprawidłowe dane</p>";
  19. else {
  20. $dane = mysql_fetch_array($dane);
  21. $_SESSION['logged'] = true;
  22. $_SESSION['id'] = $dane['id'];
  23. $_SESSION['username'] = $dane['username'];
  24. header('location: index.php');
  25. }
  26.  
  27.  
  28. }
  29. }
  30.  
  31. $gra ="
  32. <form action='#' method='post'>
  33. <table style='margin:0 auto' >
  34. <tr>
  35. <td>login</td>
  36. <td><input type='text' name='login'/></td>
  37. </tr>
  38.  
  39. <tr>
  40. <td>hasło</td>
  41. <td><input type='password' name='password'/></td>
  42. </tr>
  43.  
  44. <tr>
  45. <td</td>
  46. <td align='center'><input type='submit' value='zaloguj'/></td>
  47. </tr>
  48. </table>
  49.  
  50. </form>
  51. ";
  52. require_once('szablon.php');
  53. ?>


sys.php:

  1. $polacz = mysql_connect($MySQL['url'] , $MySQL['username'], $MySQL['password']) or die('błąd połaczenia z hostem');
  2. mysql_select_db($MySQL['database'] ,$polacz) or die('błąd połaczenia z bazą');
  3. mysql_query("SET NAMES 'utf8'");
  4.  
  5. function tekst($tekst){
  6. $search = array('@<script[^>]*?>.*?</script>@si', '@<[\/\!]*?[^<>]*?>@si', '@<style[^>]*?>.*?</style>@siU', '@<![\s\S]*?--[ \t\n\r]*>@');
  7. $text = preg_replace($search, '', $tekst);
  8. $arr = array('"',"'","#","//","--");
  9. $tekst = str_replace($arr, '', $tekst);
  10. }
johnyMajster
musisz miec session start w kazdym pliku
Sahee
Dobra, teraz sesja działa. Dziala na zasadzia true albo false
Lecz nie potrafię się wylogować *.*
Tzn usunie sesje ale szablon dalej pokazuje że jest się zalogowanym :/

  1. <?php
  2. // start sesji
  3. // nagłówek
  4. $msg = ('<h2>Wylogowywanie</h2>');
  5. // jeśli user jest zalogowany
  6. if($_SESSION['logged'] = true){
  7. // to go wylogowujemy i usuwamy jego dane z sesji
  8. $_SESSION['logged'] = false;
  9. $_SESSION['username'] = '';
  10. $_SESSION['id'] = '';
  11. $msg = ('Zostałes poprawnie wylogowany! <a href="index.php">wróć</a>');
  12. header('Location: index.php');
  13. }
  14. // jeśli nie jest zalogowany
  15. else
  16. {
  17. $msg = ('Nie byłes zalogowany! <a href="index.php">wróć</a>');
  18. }
  19.  
  20. // koniec buforowania
  21. ?>


kawałek szablonu:
  1. <?php
  2. require_once('sys.php');
  3. if($_SESSION['logged'] = true){
  4. $menu = '
  5. <div class="right_middle">
  6. <img class="login_img" src="images/login_img.png" alt="" />
  7. <div class="login_text">
  8. '.$_SESSION['logged'].'
  9. Zalogowany jako '.$oUser['username'].'<br />
  10. Zalogowany jako2 '.$dane['username'].'<br />
  11. Zalogowany jako3 '.$_SESSION['username'].'<br />
  12. <a href="wyloguj.php">WYLOGUJ</a>
  13.  
  14. </div></div>
  15. ';
  16.  
  17. $menu2 = "
  18. jakies info
  19.  
  20. ";
  21. } else {
  22. $menu = '
  23. tutaj panel logowania
  24. ';
  25. $menu2= "
  26. Nie jesteś zalogowany!
  27.  
  28. ";
  29. }


Po zalogowaniu na konto macalbys dostaje info
1 Zalogowany jako
Zalogowany jako2
Zalogowany jako3 macalbys
WYLOGUJ

a jak klikne na wyloguj to
1 Zalogowany jako
Zalogowany jako2
Zalogowany jako3
WYLOGUJ

zamiast panelu logowania :/
johnyMajster
w warunku ifów ropisz PRZYPISANIE
zrób cos w ten deseń: i pamietaj == a nie =
  1. if ($_SESSION['zalogowany'] == 0)
  2. {
  3. ?>
  4. <form action="index.php" method="post" enctype="multipart/form-data">
  5. <div>
  6. <div>
  7. Login: <input type="text" name="login" maxlength="8" size="5" />
  8. </div>
  9. <div>
  10. Password: <input type="password" name="haslo" maxlength="15" size="5" />
  11. </div>
  12. <div>
  13. <input type="submit" value="Zaloguj się" />
  14. </div>
  15. </div>
  16. </form>
  17. <?php
  18. }
  19. ?>


KotWButach
masz napisane

  1. if($_SESSION['logged'] = true)


a powinno być

  1. if($_SESSION['logged'] == true)
Sahee
Ok, zmieniłem i dalej nie działa, dalej pokazuje tak jak we wcześniejszym poście :/
wyloguj:
  1.  
  2. // nagłówek
  3. $msg = ('<h2>Wylogowywanie</h2>');
  4.  
  5. // jeśli user jest zalogowany
  6. if($_SESSION['logged'] == true){
  7. // to go wylogowujemy i usuwamy jego dane z sesji
  8. $_SESSION['logged'] = false;
  9. $_SESSION['username'] = '';
  10. $_SESSION['id'] = '';
  11. $msg = ('Zostałes poprawnie wylogowany! <a href="index.php">wróć</a>');
  12. header('Location: index.php');
  13. }
  14. // jeśli nie jest zalogowany
  15. else
  16. {
  17. $msg = ('Nie byłes zalogowany! <a href="index.php">wróć</a>');
  18. }


jakieś pomysły co może być źle ?
johnyMajster
zrób cos takiego

if isset($_SESSION['logged'] ){

zalogowałes sie }

else {
nie zalogowałęs}
Sahee
Niestety taki sam efekt, usuwa się nick wyświetlany jako $_Session['username'] oraz Session['logged'] ale nadal szablon nie odpowiada i pokazuje informacje które są dostępne dla zalogowanego :/
Wicio
Nie ma możliwości, aby nie działało gdy Twój kod wygląda jak poniżej, w końcu sesja podczas wylogowywania jest niszczona, a nawet gdyby nie, to przypisujesz wartość FALSE.
  1. if ($_SESSION['logged'] == true) {}
Sahee
Tutaj muśi być coś przestawione w mysqlu, każdy kto wejdzie ma ustawioną sesje z pierwszego konta jakie zostało utworzone: Sahee2. www: kanciasci.pl

Ok, poradziłem sobie. Problemem było złe porozmiecszczanie Session_start()
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.