Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Jak zrobić żeby po zalogowaniu znikło w menu opcja..., Nie wiem jak sformułować pytanie w google więc pisze na forum...
plastus321
post
Post #1





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 10.05.2011
Skąd: Częstochowa

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


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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 17)
markonix
post
Post #2





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


Wpisz najpierw:
Kod
<?php print_r($_SESSION);?>
i pokaż przed i po zalogowaniu jak wygląda wynik.


--------------------
Go to the top of the page
+Quote Post
plastus321
post
Post #3





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 10.05.2011
Skąd: Częstochowa

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


Takie coś mi wypisało:

  1. Array ( [zalogowany] => 1 [login] => plastus321 [haslo] => pawlixer1 )
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #4





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




To:
  1. if(isset($_SESSION['login']))

zamień na:
  1. if(isset($_SESSION['zalogowany']))


--------------------
Go to the top of the page
+Quote Post
plastus321
post
Post #5





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 10.05.2011
Skąd: Częstochowa

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


Niestety bez zmian... sad.gif
Go to the top of the page
+Quote Post
toaspzoo
post
Post #6





Grupa: Zarejestrowani
Postów: 778
Pomógł: 84
Dołączył: 29.07.2010
Skąd: Gliwice / Pławniowice Mistrz niezmordowanej klawiatury.

Ostrzeżenie: (20%)
X----


a startujesz sesje?

if($_SESSION['zalogowany'] <> '')
{
echo 'jesli zalogowany...';
}


--------------------

LS Easter egg <
Go to the top of the page
+Quote Post
grrizli
post
Post #7





Grupa: Zarejestrowani
Postów: 29
Pomógł: 6
Dołączył: 29.08.2009

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


zamień na:

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


widocznie jako niezalogowany posiada wartość 0 ta zmienna
Go to the top of the page
+Quote Post
plastus321
post
Post #8





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 10.05.2011
Skąd: Częstochowa

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


również nici z tego... sadsmiley02.gif
a jest jakiś jeszcze inny sposób czy muszę pewnie kod po przestawiaćquestionmark.gif
Go to the top of the page
+Quote Post
sadistic_son
post
Post #9





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

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


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ł.

Ten post edytował sadistic_son 12.05.2011, 05:02:48


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Go to the top of the page
+Quote Post
plastus321
post
Post #10





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 10.05.2011
Skąd: Częstochowa

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


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. ?>
Go to the top of the page
+Quote Post
markonix
post
Post #11





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


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.


--------------------
Go to the top of the page
+Quote Post
plastus321
post
Post #12





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 10.05.2011
Skąd: Częstochowa

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


Zawartość tablic wyskakuje tylko w jednym przypadku...

...po zalogowaniu.

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


przed zalogowaniem nic nie wyskakuje...
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #13





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Poprawnie jest

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

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

lub użyj buforowania.


--------------------
Go to the top of the page
+Quote Post
plastus321
post
Post #14





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 10.05.2011
Skąd: Częstochowa

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


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
Go to the top of the page
+Quote Post
Rid
post
Post #15





Grupa: Zarejestrowani
Postów: 715
Pomógł: 47
Dołączył: 5.12.2010

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


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.
Go to the top of the page
+Quote Post
plastus321
post
Post #16





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 10.05.2011
Skąd: Częstochowa

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


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ł.
Go to the top of the page
+Quote Post
Rid
post
Post #17





Grupa: Zarejestrowani
Postów: 715
Pomógł: 47
Dołączył: 5.12.2010

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


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)


Ten post edytował Rid 12.05.2011, 23:26:57
Go to the top of the page
+Quote Post
plastus321
post
Post #18





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 10.05.2011
Skąd: Częstochowa

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


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??
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 Aktualny czas: 19.08.2025 - 13:37