Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak zrobić żeby po zalogowaniu znikło w menu opcja...
Forum PHP.pl > Forum > PHP
plastus321
Nie wiem jak sformułować pytanie w google więc pisze na forum, jeśli więc był taki temat to serdecznie przepraszam.

Jak zrobić by po zalogowaniu znikło z menu np. "Logowanie" i "Rejestracja" a na miejscu tego pojawiło się np. "Profil" i "Wyloguj"?


próbowałem czegoś takiego (uprzedzę że kod jest wycięty z środka pliku .php):
  1. if(isset($_SESSION['login']))
  2. {
  3.  
  4. echo "<a href='index.php?page=profil'>$login</a> | ";
  5. echo "<a href='index.php?page=wyloguj'>Wyloguj</a><br>";
  6.  
  7. }else{
  8.  
  9. echo "<a href='index.php?page=logowanie'>Logowanie</a> | ";
  10. echo "<a href='index.php?page=rejestracja'>Rejestracja</a><br>";
  11.  
  12. }


ale niestety... nie wypaliło u mnie sad.gif

Serdecznie proszę o pomoc jeśli można wink.gif
markonix
Wpisz najpierw:
Kod
<?php print_r($_SESSION);?>
i pokaż przed i po zalogowaniu jak wygląda wynik.
plastus321
Takie coś mi wypisało:

  1. Array ( [zalogowany] => 1 [login] => plastus321 [haslo] => pawlixer1 )
Kshyhoo
To:
  1. if(isset($_SESSION['login']))

zamień na:
  1. if(isset($_SESSION['zalogowany']))
plastus321
Niestety bez zmian... sad.gif
toaspzoo
a startujesz sesje?

if($_SESSION['zalogowany'] <> '')
{
echo 'jesli zalogowany...';
}
grrizli
zamień na:

  1. if($_SESSION['zalogowany'])


widocznie jako niezalogowany posiada wartość 0 ta zmienna
plastus321
również nici z tego... sadsmiley02.gif
a jest jakiś jeszcze inny sposób czy muszę pewnie kod po przestawiaćquestionmark.gif
sadistic_son
Cytat(plastus321 @ 11.05.2011, 22:14:09 ) *
ale niestety... nie wypaliło u mnie sad.gif
...bo stało się co? Komp eksplodował? Napisz co nie wypaliło exclamation.gif Która z dwóch możliwości warunku zaistniała?


Jeśli sesję tworzysz poprawnie, a print_r pokazuje, że raczej tak, to to co pokazałeś musi działać. Błąd leży najwidoczniej gdzie indziej. Pokaż więcej kodu.

PS. Przechowywanie w sesji hasła zalogowanego usera to bardzo zły pomysł.
plastus321
Oto cały kod:
  1. <?php
  2. require('conn.php');
  3.  
  4. echo '<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />';
  5.  
  6. $login=mysql_real_escape_string(trim($_POST['login']));
  7. $email=$_POST['email'];
  8. $haslo=mysql_real_escape_string(trim($_POST['haslo']));
  9. $haslo2=$_POST['haslo2'];
  10. $regulamin=$_POST['regulamin'];
  11. $rejestruj=$_POST['rejestruj'];
  12.  
  13.  
  14. echo "<center>";
  15. if(isset($_SESSION['zalogowany']))
  16. {
  17.  
  18. echo "<a href='index.php?page=profil'>$login</a> | ";
  19. echo "<a href='index.php?page=wyloguj'>Wyloguj</a><br>";
  20.  
  21. }else{
  22.  
  23. echo "<a href='index.php?page=logowanie'>Logowanie</a> | ";
  24. echo "<a href='index.php?page=rejestracja'>Rejestracja</a><br>";
  25.  
  26. }
  27. echo "</center><br />";
  28.  
  29.  
  30.  
  31.  
  32. $page=$_GET['page'];
  33.  
  34. switch($page)
  35. {
  36.  
  37.  
  38. case 'logowanie':
  39. echo "<fieldset>
  40. <legend align='center'>Logowanie</legend>
  41. <form method='post'>
  42. Login:<br><input name='login' type='text' value='' /><br />
  43. Hasło:<br><input type='password' name='haslo' value='' /><br />
  44. </fieldset>
  45. <center>
  46. <input type='submit' name='loguj' value='Loguj' />
  47. <input type='reset' value='Wyczyść dane' />
  48. </center>
  49. </form>";
  50.  
  51. if(isset($_POST['loguj'])) {
  52.  
  53.  
  54. FROM user WHERE login = '".$_POST['login']."'
  55. && haslo = '".$_POST['haslo']."' ")) > 0) {
  56.  
  57.  
  58. if(mysql_num_rows(mysql_query("SELECT * FROM user
  59. WHERE login = '".$_POST['login']."'
  60. && haslo = '".$_POST['haslo']."' ")) > 0 ) {
  61.  
  62.  
  63. $_SESSION['zalogowany'] = true;
  64. $_SESSION['login'] = $_POST['login'];
  65. $_SESSION['haslo'] = $_POST['haslo'];
  66. header('Location: index.php');
  67.  
  68.  
  69. } else {
  70.  
  71. echo "Złe hasło, proszę spróbować ponownie";
  72. }
  73. } else {
  74. echo "Nie ma takiego użytkownika";
  75. }}
  76.  
  77. break;
  78.  
  79. case 'rejestracja':
  80.  
  81.  
  82. $ile=mysql_query("SELECT * FROM `user` WHERE login = '$login'");
  83. $ile=mysql_num_rows($ile);
  84.  
  85. $zapytanie = "CREATE TABLE user (id int NOT NULL AUTO_INCREMENT,
  86. login varchar(50), email varchar(30), haslo varchar(30), miejscowosc varchar(30),
  87. imie varchar(30), nazwisko varchar(30), wiek varchar(30),
  88. PRIMARY KEY(id))
  89. ENGINE = InnoDB CHARACTER SET utf8 COLLATE utf8_polish_ci;";
  90. $wykonaj=mysql_query($zapytanie);
  91.  
  92.  
  93. if($rejestruj)
  94. {
  95. if(isset($login) and ($email) and ($haslo) and ($haslo2))
  96. {
  97.  
  98. if($haslo2 == $haslo)
  99. {
  100.  
  101. if($regulamin)
  102. {
  103.  
  104. if($ile==0)
  105. {
  106.  
  107. $haslo = sha1($haslo);
  108. $dodaj_user= ("INSERT INTO user SET login='$login', email='$email', haslo='$haslo'");
  109. $dodawanie_usera=mysql_query($dodaj_user);
  110.  
  111. echo "<center><b><font color='green'>Twoje konto $login zostało utworzne!</font></b></center>";
  112.  
  113. }else{echo "<center><b><font color='red'>Taki użytkownik już istnieje. Wybierz inny login.</b></center></font>";}
  114.  
  115. }else{echo "<center><b><font color='red'>Musisz akceptować regulamin.</b></center></font>";} //Sprawdza czy regulamin jest akceptowany
  116.  
  117. }else{echo "<center><b><font color='red'>Hasła się nie zgadzają.</b></center></font>";} //Sprawdza czy hasła się zgadzają
  118.  
  119. }else{echo "<center><b><font color='red'>Wypełnij wszystkie pola.</b></center></font>";} //Sprawdza czy wszystkie pola są wypełnione
  120. }
  121.  
  122. echo "
  123. <fieldset>
  124. <legend align='center'>Rejestracja konta</legend>
  125. <form method='post'>
  126. Login:<br><input name='login' type='text' value='' /><br />
  127. Email:<br><input name='email' type='text' value='' /><br />
  128. Hasło:<br><input type='password' name='haslo' value='' /><br />
  129. Powtórz hasło:<br><input type='password' name='haslo2' value='' /><br />
  130. <br />
  131. <input type='checkbox' name='regulamin' /> - Akceptuję <a href='index.php?page=regulamin'>regulamin</a>.
  132. </fieldset>
  133. <br /><center>
  134. <input type='submit' name='rejestruj' value='Rejestruj' />
  135. <input type='reset' value='Wyczyść dane' />
  136. </center>
  137. </form>";
  138.  
  139. break;
  140.  
  141.  
  142. default:
  143. echo "Strona główna";
  144.  
  145. }
  146.  
  147. ?>
markonix
Kod beznadziejny, po co te $login? To na marginesie.

A prosiłem o podanie zawartości tablic w dwóch przypadkach - zalogowany i po wylogowaniu.
plastus321
Zawartość tablic wyskakuje tylko w jednym przypadku...

...po zalogowaniu.

  1. Array ( [zalogowany] => 1 [login] => plastus321 [haslo] => pawlixer1 )


przed zalogowaniem nic nie wyskakuje...
Kshyhoo
Poprawnie jest

Spróbuj zamienić:
  1. require('conn.php');

na:
  1. require('conn.php');

lub użyj buforowania.
plastus321
Trochę czytałem o tym buforowaniu, ale nie mogę sobie z tym poradzić... sorki, że was tak gnębię, ale dopiero co zacząłem uczyć się PHP.

Macie jakąś inną poradę dla mnie, żeby to zrobić?

Zależy mi najbardziej na tym żeby ten kod pozostał w funkcji switch.

Nie chce rozdzielać tego na kilka plików .php

Z góry i tak dziękuje za chęci smile.gif
Rid
Jak już che Pan poprawić coś w swoim kodzie to należałoby dać:
<form method='post'>

przed

<fieldset>
<legend align='center'>Logowanie</legend>

W kodzie HTML także obowiązuje hierarchizacja.
plastus321
A dziękuje za uwagę smile.gif już to u siebie poprawiłem smile.gif

Szkoda tylko, że to o co mi chodzi od samego początku nie zależało właśnie od tego błędu sad.gif

ale mam nadzieję, że znajdzie się ktoś kto zauważy jakiś podstawowy błąd w tym kodzie (pewnie jest ich dużo) który powoduje to,
że nie działa tak jak należy albo nie tak jakbym chciał.
Rid
Proszę powiedzieć mi kto tak robi?questionmark.gif
$_SESSION['haslo'] = $_POST['haslo'];
Dobrym nawykiem jest nieprzechowywać haseł w sesji.

Druga rzecz:
Cytat
if(mysql_num_rows(mysql_query("SELECT *
FROM user WHERE login = '".$_POST['login']."'
&& haslo = '".$_POST['haslo']."' ")) > 0)


a do bazy zapisuje pan tak:
$haslo = sha1($haslo);
$dodaj_user= ("INSERT INTO user SET login='$login', email='$email', haslo='$haslo'");
Wniosek:
Porównuje Pan hasło z inputa z zakodowanym hasłem z bazy danych co w rezultacie nie przejdzie.

Niech Pan przeniesie $haslo = sha1($haslo) przed:
Cytat
if(mysql_num_rows(mysql_query("SELECT *
FROM user WHERE login = '".$_POST['login']."'
&& haslo = '".$_POST['haslo']."' ")) > 0)
,albo dodać

Cytat
if(mysql_num_rows(mysql_query("SELECT *
FROM user WHERE login = '".$_POST['login']."'
&& haslo = '".sha1($_POST['haslo'])."' ")) > 0)
plastus321
Poprawiłem już to smile.gif dzięki za uwagę smile.gif

Może się mylę, ale zdaje mi się, że sesje nie chcą mi działać przez jakiś błąd w logowaniu...

Macie jakiś znany i prosty skrypt logowania który może byłby lepszy od tego??
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.